CF Div2 781
A GCD vs LCM(数论 + 思维)
求4个和为n的数 要求 gcd(a, b) == lcm(c, d)
令lcm(c, d) = 1 则 c = 1 d = 1
令gcd(a, b) = 1 则 a = 1 b = n - 3
void solve()
{int n; cin >> n;cout << 1 << ' ' << n - 3 << ' ' << 1 << ' ' << 1 << endl;
}
B Array Cloning Technique(模拟)
现有长度为n的数组 你可以通过若干次操作 使某个数组中的所有数相同
操作一 选择一个数组,将其复制一份,即新增一个一模一样的数组。
贪心:现有数组中出现最多的数为x 我们应将数组全部置为x
void solve()
{int n; cin >> n;map<int, int> mp;int x;for(int i = 1; i <= n; i++)cin >> x, mp[x] ++;int mx = 0;for(auto x : mp)mx = max(mx, mp.second);if(n == 1) {cout << 0 << '\n'; return;}if(mx == n) {cout << 0 << '\n'; return;}int t = n - mx, st = mx, tot = 0, res = 0;while(tot < t){res ++; //复制tot += st, cnt += st;st *= 2;}if(tot > t) res -= (tot - t); //加多了cout << res << '\n';
}
C Tree Infection(贪心 + 模拟)
先在对于所有感染节点 传染一下病毒 然后你可以感染任一未被感染的节点
**传染:**如果一个节点的子节点中有儿子被感染了 那么他就会传染他的一个兄弟
因为传染只能在兄弟之间进行 所以呢 我们要统计出一共有多少组兄弟 每组必须感染一遍
我们就用桶排来存一下 sum[i] 代表父节点i的儿子群数量(兄弟群)
贪心:因为每秒会传染一次 所以先感染健康人数最多的组 就可以让他们尽可能多地被感染
在传染的基础上 为健康人数最多的组感染一个 当感染整棵树的时候 结束
void solve()
{int n;cin >> n;ms(sum, 0);sum[n + 1] = 1; //感染根节点for(int i = 2; i <= n; i++){int x; cin >> x;sum[x] ++;}sort(sum + 1, sum + n + 2, greater<int>());int m; //一共有多少个树群for(m = 1; ; m++){if(sum[m] == 0){m --;break;}}for(int i = 1; i <= m; i++)sum[i] = sum[i] - m + i - 1; //先感染大的 贪心 计算传染的人数sort(sum + 1, sum + m + 1, greater<int>()); //把剩下的重排 大到小int mx = sum[1] > 0 ? 1 : 0; //如果连最大的都已经是0 那就结束辣int res = m; //最小的可能答案是mwhile(1){if(sum[mx] == 0) break; //已经找不到健康人数最多的点了sum[mx] --; //手动感染res ++;mx = 0; //sum[mx] = 0;for(int j = 1; j <= m; j++){if(sum[j] <= 0) break;sum[j] --; //传染if(sum[mx] < sum[j]) mx = j; //找到当前健康人数最多的点}}cout << res << endl;
}
CF Div2 781相关推荐
- 【解题报告】CF DIV2 #ROUND 723 A~D
[解题报告]CF DIV2 #ROUND 723 A~D 比赛链接 比赛评价: 发现这场十点就开了,然后就和ph巨佬一起玩了一场.我两分别再A和B罚时罚飞了,索性后面把C1,C2整出来了 排名2500 ...
- CF div2 PA 2019.02.17
一道签到题 思路:在起点处买完步长,之后每走距离买一次 实现:1 * v + 2 + 3 + 4 + ->= n - 1即可(对n >= v需特殊判定) #include<cstdi ...
- cf div2 #444 (ABC)(D已补)
ABC三道大水题,自信满满锁了溜出自习室回寝睡觉,第二天起来发现变成两道题了,哭唧唧. 回头翻代码吃了一口大翔,少写了两行被自己gank了. 然后由于出题人的数据放错了导致D题一开始没人过,E和F零星 ...
- #CF div2 1670D Very Suspicious题解(思维+贪心)
原题链接. 1.题意: 给个无穷大的正六边形棋盘,可以画若干条过六边形对立顶点的直线,问这些直线最多可以构成多少个三角形. 2.思路: 刚看题其实自己是挺蒙的,主要由于自己总局限于六边形之中,没有跳出 ...
- 2022/10/24(cf·div2#829)https://codeforces.com/contest/1754
https://codeforces.com/contest/1754/problem/A //用一个变量x记录遇到问题时需要解决的数量 //当需要解决问题的数量小于等于0时,全部解决 //遇到新问题 ...
- 【解题报告】CF DIV3 #ROUND 734 A~D1
[解题报告]CF DIV2 #ROUND 707 A~D 比赛链接 比赛评价: 一般性,有段时间没打了,甚至忘记多组输入hh.顺便吐槽一下翻译软件确实不行,以后还是直接看英文好了 A. Polycar ...
- AtcoderCodeForces杂题11.6
Preface NOIP前突然不知道做什么,感觉思维有点江僵化,就在vjudge上随便组了6道ABC D+CF Div2 C/D做,发现比赛质量还不错,知识点涉及广,难度有梯度,码量稍小,思维较多. ...
- 【CodeForces - 689B】Mike and Shortcuts(Dijkstra最短路,或者bfs跑状态类似spfa)
题干: Recently, Mike was very busy with studying for exams and contests. Now he is going to chill a bi ...
- CF1604C Di-visible Confusion
CF传送门 早上起来看一下昨天的cf div2,后悔昨天没打了 本题是一道很水的思维题 题目的大意就是说,如果选择序列aaa的第iii位,如果aia_iai不整除(i+1)(i+1)(i+1),就把 ...
最新文章
- dvwa如何打开_一篇文章让你搭建自己的Web安全测试平台(Dvwa)
- WPF 绑定StaticResource到控件的方法
- android 查看多个图片,android提取视频多张图片和视频信息
- 双指放大_便携超小手机显微镜1000倍放大!让你玩转微观世界,惊艳朋友圈
- (57)Verilog HDL选择运算符:?
- 【JZOJ3347】树的难题
- python怎么求中位数_Python求两个有序数组的中位数的几种方法
- C#正则表达式小结 - z
- JavaScript 获取GET中的值
- 感受MapXTreme2004
- 手机APP项目中调用第三方短信验证码接口
- python 趋势跟踪算法_DualThrust区间突破策略Python版
- 新媒体运营工具大盘点,收藏方便不备之需!
- dnf虚拟机安装的解决方法
- 几个大学生7天涨粉百万,月入超过10万,5000字长文拆解
- 基于SSM实现手机销售商城系统
- matlab安装遇到的问题
- 调用QQ音乐接口,实现自制MV播放器
- yp北京理工 拓扑排序+最短路(更新中re)
- java源程序文件_.class文件为Java源程序文件
热门文章
- uniapp样式选择器最全详解
- Python - 删除print()中的空格
- SLAM--Geometric jacobian of UR series.
- 使用开源软件XWIKI搭建公司内部WIKI系统
- python编程字典数据库_python基础数据类型之字典、集合
- 解决一个应用连接oracle端口1521不通问题
- 计划的主体部分应有哪些内容_计划的正文主体一般有哪三个部分构成
- 【java学习】 面向对象编程+java购物车系统
- Matlab函数学习---sum函数(计算矩阵、数组和向量元素总和)
- win7锁定计算机快捷键6,win7锁定计算机快捷键_win10 锁定计算机