[codeforces] 暑期训练之打卡题
2021/7/14 23:47:55
本文主要是介绍[codeforces] 暑期训练之打卡题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Day1《Vanya and Lanterns》
题意:
一条长度为 l 的街道,在这条街道上放置了n个相同的灯,街道一端位置记为0,每个灯的位置在ai处,问灯的最小照射半径为多少时,才能满足整条街道都能被灯光照到 。
题解:
- 输入所有的灯的位置,然后进行排序。
- 比较每两个相邻的灯的距离,取最大值的 1/2。
- 比较两端的值:第一个灯需要照到 0 位置,最后一个灯需要照到 l 位置。
- 三个值中取最大值。
上板子:
#include<bits/stdc++.h> using namespace std; int main() { int a[1005]; int i, n, l; double ant; cin >> n >> l; for (int i = 0;i < n;i++) { cin >> a[i]; } sort(a, a + n);//这里我为了偷懒用了sort,根据题意考察的是二分法 ant = a[0] > (l - a[n - 1]) ? a[0] : (l-a[n - 1]);//使用条件运算符取较大值 for (int i = 1;i < n;i++) { ant = (a[i] - a[i - 1])/2.0 > ant ? (a[i] - a[i - 1])/2.0 : ant; } printf("%.10f\n", ant);//保留10位小数输出 return 0; }
Day2《K-th Not Divisible by n》
题意:
对于n这个数字,求第k个不能整除n的数字。
题解:
- 当 k < n 时,ans = k
- 当 k = n 时,ans = n + 1 = k + 1
- 当 k > n 时,if (k % (n - 1) == 0) ans = k / (n - 1) * n - 1; else ans = k / (n - 1) * n + (k % (n - 1));
- 总结:ans = k + (k-1) / (n-1)
上板子:
#include<bits/stdc++.h> using namespace std; int main() { int t; cin >> t; while (t--) { long long n, k,ans; cin >> n >> k; ans = k+((k-1)/(n-1)); cout << ans<<endl; } return 0; }
这篇关于[codeforces] 暑期训练之打卡题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-24怎么切换 Git 项目的远程仓库地址?-icode9专业技术文章分享
- 2024-12-24怎么更改 Git 远程仓库的名称?-icode9专业技术文章分享
- 2024-12-24更改 Git 本地分支关联的远程分支是什么命令?-icode9专业技术文章分享
- 2024-12-24uniapp 连接之后会被立马断开是什么原因?-icode9专业技术文章分享
- 2024-12-24cdn 路径可以指定规则映射吗?-icode9专业技术文章分享
- 2024-12-24CAP:Serverless?+AI?让应用开发更简单
- 2024-12-23新能源车企如何通过CRM工具优化客户关系管理,增强客户忠诚度与品牌影响力
- 2024-12-23原创tauri2.1+vite6.0+rust+arco客户端os平台系统|tauri2+rust桌面os管理
- 2024-12-23DevExpress 怎么实现右键菜单(Context Menu)显示中文?-icode9专业技术文章分享
- 2024-12-22怎么通过控制台去看我的页面渲染的内容在哪个文件中呢-icode9专业技术文章分享