AtCoder Beginner Contest 179 总结

A - Plural Form

模拟签到题1

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
const int N=100010;
int main()
{IO;int T=1;//cin>>T;while(T--){string s;cin>>s;if(s.back()=='s') s+="es";else s+="s";cout<<s<<'\n';}return 0;
}

B - Go to Jail

签到题2

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
const int N=100010;
int main()
{IO;int T=1;//cin>>T;while(T--){int n;cin>>n;int cnt=0;bool ok=0;while(n--){int a,b;cin>>a>>b;if(a==b) {cnt++;if(cnt==3) ok=1; }else cnt=0;}if(ok) cout<<"Yes\n";else cout<<"No\n";}return 0;
}

C - A x B + C

A×B+C=NA ×B + C=NA×B+C=N不难发现只要有A×B<NA ×B <NA×B<N,就会有一组解。因此枚举AAA随便求求即可

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=100010;
int main()
{IO;int T=1;//cin>>T;while(T--){int n;cin>>n;ll res=0;for(int i=1;i<=n;i++){ll now=n/i;if(n%i==0) now--;res+=now;}cout<<res<<'\n';}return 0;
}

D - Leaping Tak

动态规划上楼梯升级版
状态表示:fif_ifi表示目前在第iii个位置的集合
状态转移:枚举可以从哪些位置过来即可,前缀和优化!

// O(nk)
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
#define l first
#define r second
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int N=200010;
const ll mod=998244353;
int n,k;
ll f[N],s[N];
pii a[N];
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n>>k;for(int i=1;i<=n;i++) cin>>a[i].l>>a[i].r;f[1]=1;s[1]=1;for(int i=2;i<=n;i++){for(int j=1;j<=k;j++)f[i]=(f[i]+s[max(0,i-a[j].l)]-s[max(0,i-a[j].r-1)])%mod;;s[i]=(s[i-1]+f[i])%mod;}    cout<<(f[n]+mod)%mod<<'\n';}return 0;
}

E - Sequence Sum

N≤1010N\leq 10^{10}N1010非常大,一定不能暴力枚举,不过M≤105M\leq 10^5M105非常小,这意味这余数最多有10510^5105情况,由此对于每一个所求的每一个AiA_iAi必定会出现循环节,只需要找到循环节即可。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=100010;
ll n,x,m;
int st[N];
ll s[N];
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n>>x>>m;ll l,r;for(ll a=x,k=1;;a=a*a%m,k++){if(!st[a]) st[a]=k;else{l=st[a],r=k-1;break;}s[k]=s[k-1]+a;}ll len=r-l+1;ll res=0;res+=s[min(n,l-1)];n=max(0ll,n-l+1);if(n) res+=(s[r]-s[l-1])*(n/len)+(s[n%len+l-1]-s[l-1]);cout<<res<<'\n';}return 0;
}

F - Simplified Reversi

还没看,明天看
维护两个数组row[]col[]row[i]表示第i行目前能够覆盖到哪一列。
考虑每次操作,如果目前在第x列(opt=1)放置,那么对于行来说就有一部分被截断,不难知道[1,mrow][1,mrow][1,mrow]被截断,因此需要在row[]进行区间修改,答案会减去col[x]-2需要单点询问,由此只需要用线段树维护这两个数组即可。

#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=200010;
int n,q;
struct Segment
{struct node{int l,r,val,lazy;}tree[N*4];void build(int u,int l,int r){tree[u]={l,r,n,n+1};if(l==r) return;int mid=l+r>>1;build(u<<1,l,mid);build(u<<1|1,mid+1,r);}void pushdown(int u){if(tree[u].lazy==n+1) return;tree[u<<1].val=min(tree[u<<1].val,tree[u].lazy);tree[u<<1|1].val=min(tree[u<<1|1].val,tree[u].lazy);     tree[u<<1].lazy=min(tree[u<<1].lazy,tree[u].lazy);tree[u<<1|1].lazy=min(tree[u<<1|1].lazy,tree[u].lazy);tree[u].lazy=n+1;}void modify(int u,int l,int r,int val){if(tree[u].l>=l&&tree[u].r<=r){tree[u].lazy=min(tree[u].lazy,val);tree[u].val=min(tree[u].val,val);return;}pushdown(u);int mid=tree[u].l+tree[u].r>>1;if(l<=mid) modify(u<<1,l,r,val);if(r>mid) modify(u<<1|1,l,r,val);}int query(int u,int p){if(tree[u].l==tree[u].r) return tree[u].val;pushdown(u);int mid=tree[u].l+tree[u].r>>1;if(p<=mid) return query(u<<1,p);else return query(u<<1|1,p);}
}row,col;
int mrow,mcol;
int main()
{IO;int T=1;//cin>>T;while(T--){cin>>n>>q;row.build(1,1,n);col.build(1,1,n);ll res=1ll*(n-2)*(n-2);mcol=mrow=n;while(q--){int op,x;cin>>op>>x;if(op==1){mcol=min(mcol,x);res-=col.query(1,x)-2;row.modify(1,1,mrow,x);}else{mrow=min(mrow,x);res-=row.query(1,x)-2;col.modify(1,1,mcol,x);}}cout<<res<<'\n';}return 0;
}

此题貌似我的解法非常复杂,不过我太菜只能用这种稍微暴力的数据结构维护,我 贪心啥的贪心不出来啊啊啊
要加油哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/319561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

纪中A组模拟赛总结(2021.7.19)

成绩 rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3101010lyflyflyf175175175000757575100100100 前言&#xff1a;进前10啦&#xff01;&#xff01; 总结 T1看着推了一下&#xff0c;发现可以改变答案的解决顺序&#xff0c;然后在O(n)内求解&#xff0c;打完…

AT4505-[AGC029F]Construction of a tree【构造题,hall定理,网络流】

正题 题目链接:https://www.luogu.com.cn/problem/AT4505 题目大意 给出nnn个点和n−1n-1n−1个点集UiU_iUi​&#xff0c;每个点集中选择两个点连边使得该图是一棵树。求方案。 n∈[1,105],∑i1n−1∣Ui∣∈[1,2∗105]n\in[1,10^5],\sum_{i1}^{n-1} |U_i|\in[1,2*10^5]n∈[1…

学习究竟是为了什么?

今天无意中看到一句话&#xff0c;人如果停止了学习&#xff0c;就开始走向失败。这句话其实应该送给每一个面临30岁焦虑期的开发者&#xff0c;同时也应该成为每一个开发者内心的真实写照。 想问一下大家一个问题&#xff0c;多久没有学习新的知识呢&#xff1f;尤其…

Codeforces Round #671 (Div. 2)

当天晚上&#xff0c;本来想参加一下比赛&#xff0c;结果感觉静不下心来做题&#xff0c;而且最难受的是读个题都不明白&#xff0c;一直在理解题意。 A - Digit Game 分析不难发现&#xff1a; 如果nnn是奇数&#xff0c;那么最后留下的数字一定是奇数位上的数字&#xff0…

【网络流】人员雇佣(luogu 1791)

正题 luogu 1791 题目大意 有n个人&#xff0c;选择第i个人的代价是aia_iai​&#xff0c;如果i,j同时被选那么有贡献wi,jw_{i,j}wi,j​&#xff0c;如果i选了j没选那么有贡献−wi,j-w_{i,j}−wi,j​&#xff0c;问你最大贡献&#xff08;减去代价&#xff09; 解题思路 最大…

AT4144-[ARC098D]Donation【Kruskal重构树,dp】

正题 题目链接:https://www.luogu.com.cn/problem/AT4144 题目大意 nnn个点mmm条边的一张无向联通图&#xff0c;每个点有两个值ai,bia_i,b_iai​,bi​。表示经过该点时需要拥有aia_iai​元&#xff0c;该点需要捐献bib_ibi​元。 任意起点&#xff0c;询问开始时至少多少钱才…

Strategic game

来源&#xff1a;牛客网&#xff1a; 时间限制&#xff1a;C/C 2秒&#xff0c;其他语言4秒 空间限制&#xff1a;C/C 10000K&#xff0c;其他语言20000K 64bit IO Format: %lld题目描述 Bob enjoys playing computer games, especially strategic games, but sometimes he c…

ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(一)

上个月15日&#xff0c;上海MVP做了一次线下的技术分享活动&#xff0c;我分享的主题是《快速构建容器化的ASP.NET Core应用程序》&#xff0c;有关这次活动的简报&#xff0c;可以参考这里。另外&#xff0c;我的主题分享的PPT也可以点击这里下载。由于线下活动时间紧迫&#…

牛客练习赛 63 F-牛牛的树行棋

F-牛牛的树行棋 大佬题解 对于每一个棋子来说&#xff0c;都是独立的&#xff0c;因此当前局面的 SG 值就是每一枚棋子的 SG 值的异或和。若一枚棋子的往子树内最多可以走 kkk 步&#xff0c;它的 SG 值为 kkk。然后就可以dfs求出整个局面的SG值。 仔细再思考一步&#xff1a…

【DP】小学生语文题(jzoj 5102)

正题 jzoj 5102 题目大意 给你两个串A,B&#xff0c;字母个数相等&#xff0c;可以把B的一个字符移到前面某个位置&#xff0c;问你最少移多少次可以使A,B相等 解题思路 设fi,jf_{i,j}fi,j​为A匹配了i-n&#xff0c;B用了j-n 1.当i,j匹配时fi,jfi1,j1f_{i,j}f_{i1,j1}fi,j…

AT3949-[AGC022D]Shopping【贪心】

正题 题目链接:https://www.luogu.com.cn/problem/AT3949 题目大意 长度为LLL的坐标轴上&#xff0c;给出nnn个点&#xff0c;每个点xix_ixi​需要购物tit_iti​的时间&#xff0c;一辆车在0∼L0\sim L0∼L折返跑&#xff0c;求从000出发购物完回到000的最短时间。 n∈[1,310…

现代软件工程的《构建之法》

要想了解世界&#xff0c;就必须亲自来打造它。—— 帕韦泽&#xff08;Cesare Pavese&#xff09;国庆假日期间&#xff0c;我重读了邹欣老师的《构建之法》一书。我从事软件行业相关工作超过15年&#xff0c;每每在被问到给在校计算机专业大学生的学习建议时&#xff0c;我都…

牛客练习赛 62

A.牛妹的游戏 Ramsey定理&#xff1a;人话解释任意六个人中要么至少三个人认识&#xff0c;要么至少三个不认识。 结论简要证明: 假设 666 个据点分别为 A,B,C,D,E,FA,B,C,D,E,FA,B,C,D,E,F那么在 A 连向其它据点的控制链中&#xff0c;必然至少有 333条链被同一方控制&#x…

【图论】【斜率优化】前往大都会(loj 2769)

正题 jzoj 7181 题目大意 给你由若干铁路组成的图&#xff08;一个铁路上有若干点&#xff09;&#xff0c;问你从1到n在最短路径的前提下&#xff0c;乘坐的每一条铁路所花费时间的平方和的最大值 解题思路 先用dij跑出最短路图&#xff08;即长度等于最短路的所有路径&…

AT4995-[AGC034E] Complete Compress【树形dp】

正题 题目链接:https://www.luogu.com.cn/problem/AT4995 题目大意 nnn个点的一棵树&#xff0c;上面有一些棋子&#xff0c;每次可以选择两个棋子移动到他们之间的路径上相邻的点上&#xff0c;求最少多少步能移动到一个点上。 n∈[1,2000]n\in[1,2000]n∈[1,2000] 解题思路 …

【每日一题】8月10日题目精讲—排座椅

来源&#xff1a;牛客网&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 51200K&#xff0c;其他语言102400K 64bit IO Format: %lld题目描述 上课的时候总有一些同学和前后左右的人交头接耳&#xff0c;这是令小学班主任十分头疼的…

使用Consul做服务发现的若干姿势

从2016年起就开始接触Consul&#xff0c;使用的主要目的就是做服务发现&#xff0c;后来逐步应用于生产环境&#xff0c;并总结了少许使用经验。最开始使用Consul的人不多&#xff0c;为了方便交流创建了一个QQ群&#xff0c;这两年微服务越来越火&#xff0c;使用Consul的人也…

【费用流】【线性规划】志愿者招募(luogu 3980)

正题 luogu 3980 题目大意 有n个时刻&#xff0c;第i个时刻需要aia_iai​个志愿者&#xff0c;有m类志愿者&#xff0c;第j类可以从ljl_jlj​做到rjr_jrj​&#xff0c;代价为wjw_jwj​&#xff0c;数量无限&#xff0c;问你使所有时刻志愿者个数都足够的最小代价 解题思路 …

YbtOJ#643-机器决斗【贪心,李超树】

正题 题目链接:https://www.ybtoj.com.cn/problem/643 题目大意 nnn个机器人&#xff0c;第iii个攻击力为AiA_iAi​&#xff0c;防御为DiD_iDi​。 然后你每次可以对一个机器人造成AtkAtkAtk点伤害&#xff0c;之后所有机器人对你进行一次攻击。 开局可以删除两个机器人&…

【每日一题】8月11日题目精讲—矩阵消除游戏

来源&#xff1a;牛客网&#xff1a; 时间限制&#xff1a;C/C 1秒&#xff0c;其他语言2秒 空间限制&#xff1a;C/C 262144K&#xff0c;其他语言524288K 64bit IO Format: %lld题目描述 牛妹在玩一个名为矩阵消除的游戏&#xff0c;矩阵的大小是n行m列&#xff0c;第i行第…