
codeforces 1490(Div3) A-E题解
发布日期:2021-05-07 03:06:07
浏览次数:22
分类:精选文章
本文共 2785 字,大约阅读时间需要 9 分钟。
A. Dense Array
对于相邻的两个元素,如果两个中的最小值的二倍小于最大值,则答案增加1,最小值再乘2,一直循环下去。
#includeusing namespace std;//const int maxn = 55;//int a[maxn];int n,a;int main(){ int t; cin>>t; while(t--) { int ans = 0; cin>>n>>a; int pre = a; for(int i=2;i<=n;i++) { cin>>a; int mx = max(pre,a); int mn = min(pre,a); while(mn*2
B. Balanced Remainders
统计其中模三分别余0,,1,2的个数,进行三次判断,因为每次只能相邻的两个元素进行平衡。
#includeusing namespace std;const int maxn = 3e4+5;//int a[maxn];int n,a;int main(){ int t; cin>>t; while(t--) { int ans=0; cin>>n; int c1=0,c2=0,c0=0; for(int i=1;i<=n;i++) { cin>>a; if(a%3==0) c0++; if(a%3==1) c1++; if(a%3==2) c2++; } for(int i=0;i<3;i++) { if(c2>n/3) ans += c2-n/3,c0 += c2-n/3,c2=n/3; if(c0>n/3) ans += c0-n/3,c1 += c0-n/3,c0=n/3; if(c1>n/3) ans += c1-n/3,c2 += c1-n/3,c1=n/3; if(c1==c2 && c0==c1) break; } cout< <<'\n'; } return 0;}
C.Sum of Cubes
将最多的i * i * i(立方数)存入到无序集合中,循环一个数,计算出另一个数判断另一个数是否是立方数,即是否在无序集合中。
#include#include using namespace std;typedef long long ll;const ll INF = 1e12+5;ll x;unordered_set < ll > cubes; void solve(){ for(ll i=1;i*i*i<=x;i++) { if(cubes.count(x-i*i*i)) { cout<<"Yes\n"; return; } } cout<<"No\n";}int main(){ for(ll i=1;i*i*i<=INF;i++) cubes.insert(i*i*i); int _; cin>>_; while(_--) { cin>>x; solve(); } return 0; }
D. Permutation Transformation
建一棵树,使数组中的最大值始终在树的根部,保证左边的值永远在左子树,右边的值永远在右子树。
#includeusing namespace std;const int maxn = 105;int a[maxn];int tree[maxn];void build(int l,int r,int curD){ if(l>r) return ;//特殊判断,当最大值在第一个或者是最后一个时 if(l==r) { tree[l] = curD; return ; } int t = l; for(int i=l+1;i<=r;i++) { if(a[t] >n; for(int i=1;i<=n;i++) cin>>a[i]; build(1,n,0); for(int i=1;i<=n;i++) cout< <<" "; cout<<"\n";}int main(){ int _; cin>>_; while(_--) { solve(); } return 0; }
E.Accidental Victory
n个人进行锦标赛,每个人身上有ai枚币,谁的币多谁就获胜,随机组合n-1场比赛,每场比赛胜利的可以获得失败的人的所有币,求谁获胜的概率不为0。输出获胜概率不为0的下标号。
思路:
构建一个二元组,按值排序,建立前缀和数组,从后往前遍历,如果当前的前缀和数组大于后面的数组值的话,这个人就可能获胜,将下标存入一个数组中进行维护,相反就退出,因为这个人的分值永远超不过后面的人,前面的人就不可能获胜。
#includeusing namespace std;typedef long long ll;const int maxn = 2e5+5;ll sum[maxn];pair p[maxn];int n;bool cmp(pair a,pair b){ return a.first < b.first;}void solve(){ memset(sum,0,sizeof(sum)); for(int i=1;i<=n;i++) { cin>>p[i].first; p[i].second = i; } sort(p+1,p+1+n,cmp); for(int i=1;i<=n;i++) sum[i] = sum[i-1] + p[i].first; vector id; id.push_back(p[n].second); for(int i=n-1;i>=1;i--) { if(sum[i]>=p[i+1].first) id.push_back(p[i].second); else break; } sort(id.begin(),id.end()); cout< <<'\n'; for(int i=0;i >_; while(_--) { cin>>n; solve(); } return 0; }
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月08日 05时52分59秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
vue 不常见操作
2019-03-06
jQuery的事件绑定与触发 - 学习笔记
2019-03-06
Python处理接口测试的签名
2019-03-06
测试流程规范--测试报告模板
2019-03-06
Linux上TCP的几个内核参数调优
2019-03-06
记一次讲故事机器人的开发-我有故事,让机器人来读
2019-03-06
高德算法工程一体化实践和思考
2019-03-06
判断一个数是否是2的幂
2019-03-06
js 闭包(新)
2019-03-06
vscode 编辑python 如何格式化
2019-03-06
seo 回忆录百度基本概念(一)
2019-03-06
重新整理数据结构与算法(c#)—— 算法套路二分法[二十四]
2019-03-06
用ThreadLocal来优化下代码吧
2019-03-06
netcore中使用session
2019-03-06
Android 开发学习进程0.25 自定义控件
2019-03-06
多媒体文件格式全解说(下)--图片
2019-03-06
淘宝WAP版小BUG分析
2019-03-06
NodeJS+Express+MongoDB
2019-03-06
(四十四)c#Winform自定义控件-水波-HZHControls
2019-03-06