Nebius Welcome Round (Div. 1 + Div. 2, rated, t-shirts!)【A-C】
文章目录
- A. Lame King【简单模拟、贪心】
- B.Vaccination【模拟、贪心】
- C.Pull Your Luck【规律题、余数、找周期】
链接
传送门
A. Lame King【简单模拟、贪心】
分析
首先符号并不重要,我们可以放到第一象限里进行考虑,不妨设x >= y,记向x正方向移动为A,向y正方向移动记为B,不动记为O,如果x==y,我们可以ABABABABAB,走两倍x的时间。如果说x>y,ABABABABABABAOAOA,在A中穿插B和O,共2x-1。
实现
#include <bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define inf 0x3f3f3f3f
#define ls (id << 1)
#define rs (id << 1 | 1)
using namespace std;
typedef pair<int, int> PII;
const int N = 55;
void solve() {int a, b;cin >> a >> b;a = abs(a);b = abs(b);if (a == b) cout << a + b << '\n';else cout << 2 * max(a, b) - 1 << '\n';
}
int main() {ios::sync_with_stdio(false);cin.tie(0);int T = 1;cin >> T;while (T--) {solve();}return 0;
}
B.Vaccination【模拟、贪心】
分析
开新的一包有两种情况,一种是人已经到k个了,又来一个;一种是最长可覆盖时间(w+d)也到不了这个人的时间了,必须再开一包,即使前面的一包剩下部分疫苗来的也没办法用了。
实现
#include <bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define inf 0x3f3f3f3f
#define ls (id << 1)
#define rs (id << 1 | 1)
using namespace std;
typedef pair<int, int> PII;
const int N = 2e5 + 5;
int a[N];
void solve() {int n, k, d, w;cin >> n >> k >> d >> w;for (int i = 1; i <= n; i++) cin >> a[i];int cnt = 1, now = 1, t = a[1];//t是开包时间,now是已用次数,cnt是开包数for (int i = 2; i <= n; i++) {if (a[i] <= t + d + w && now < k) now++;//时间有效,仍有次数else if (now == k || a[i] > t + d + w) cnt++, t = a[i], now = 1;//重置时间,次数}cout << cnt << '\n';
}
int main() {ios::sync_with_stdio(false);cin.tie(0);int T = 1;cin >> T;while (T--) {solve();}return 0;
}
C.Pull Your Luck【规律题、余数、找周期】
分析
一个简单的想法,我们遍历有的i,求出mod = i*(i + 1)/ 2 % n,使得 (x + mod) % n == 0,刚好余数为0,,但是这里的p实在是太大了,1e9无法承受,所以我们考虑周期,通过打表观察我们可以发现,周期是2n(奇数可以是n)。这样就可以遍历1e5数量级了。
证明
首先证明余数具有递推关系 首先证明余数具有递推关系 首先证明余数具有递推关系
记Si是前i项和,ri是其mod n的余数
S i + 2 = S i + 1 + a i + 2 = S i + 1 + S i + 1 − S i + d = 2 S i + 1 − S i + 1 S_{i+2}=S_{i+1}+a_{i+2}=S_{i+1}+S_{i+1}-S_{i}+d=2S_{i+1}-S_{i}+1 Si+2=Si+1+ai+2=Si+1+Si+1−Si+d=2Si+1−Si+1
r i + 2 = ( 2 r i + 1 − r 1 + 1 + n ) % n r_{i+2}=(2r_{i+1}-r_1+1+n)\% n ri+2=(2ri+1−r1+1+n)%n
只需 ∃ i > 0 , r i = r 1 且 r i + 1 = r 2 即可出现循环 只需\exist i > 0,r_{i}=r_{1}且r_{i+1}=r_2即可出现循环 只需∃i>0,ri=r1且ri+1=r2即可出现循环
因为递推关系的存在,我们可以用这两个相同的余数生成相同的序列。
∑ i = 1 2 n = ( 2 n + 1 ) n \sum_{i=1}^{2n}=(2n+1)n ∑i=12n=(2n+1)n被n整除
r 1 = 1 % n , r 2 = ( 1 + 2 ) % n = 3 % n , . . . . . . , r 2 n + 1 = ( ( 2 n + 1 ) n + 2 n + 1 ) % n = 1 % n , r 2 n + 2 = ( ( 2 n + 1 ) n + 2 n + 1 + 2 n + 2 ) % n = 3 % n r_1=1\% n,r_2=(1+2)\% n= 3 \% n, ......,r_{2n + 1}=((2n+1)n+2n+1)\% n=1\% n,r_{2n+2}=((2n+1)n+2n+1+2n+2)\%n=3\% n r1=1%n,r2=(1+2)%n=3%n,......,r2n+1=((2n+1)n+2n+1)%n=1%n,r2n+2=((2n+1)n+2n+1+2n+2)%n=3%n
∴ r 1 = r 2 n + 1 , r 2 = r 2 n + 2 \therefore r_1=r_{2n+1},r_2=r_{2n+2} ∴r1=r2n+1,r2=r2n+2
完毕。
实现
#include <bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
#define inf 0x3f3f3f3f
#define ls (id << 1)
#define rs (id << 1 | 1)
using namespace std;
typedef pair<int, int> PII;
const int N = 2e5 + 5;
void solve() {int n, x, p;cin >> n >> x >> p;int m = min(p, 2 * n);for (int i = 1; i <= m; i++) {int mod = 1ll * i * (i + 1) / 2 % n;if ((mod + x) % n == 0) {cout << "Yes\n";return;}}cout << "No\n";
}
main() {ios::sync_with_stdio(false);cin.tie(0);int T = 1;cin >> T;while (T--) {solve();}return 0;
}
Nebius Welcome Round (Div. 1 + Div. 2, rated, t-shirts!)【A-C】相关推荐
- Loj#510-「LibreOJ NOI Round #1」北校门外的回忆【线段树】
正题 题目链接:https://loj.ac/p/510 题目大意 给出一个代码 function add(x,v)while x <= n dos[x] = s[x] xor vx = x + ...
- Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2)
Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2) 题号 题目 知识点 A A Variety of Opera ...
- Deltix Round, Spring 2021 (open for everyone, rated, Div. 1 + Div. 2)
Deltix Round, Spring 2021 (open for everyone, rated, Div. 1 + Div. 2) 题号 题目 知识点 A Game of Life B Lor ...
- Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)切题报告(A-B题)
这是我第二次参加CF比赛,也是第一次写博客,写得不好,望各位大佬海涵. A. Single Wildcard Pattern Matching 原题链接 这道题,这是难到让人无法直视,太水了. 题目大 ...
- [区间记忆化dp入门][Bribe the Prisoners SPOJ - GCJ1C09C][Codeforces Round #505D (rated, Div. 1 + Div. 2, ba]
Bribe the Prisoners SPOJ - GCJ1C09C 作为这类题代表,f[i][j]代表第i点到第j点单独处理的最值 这题关键:释放某个囚犯后,就把囚犯分成两段,两段互相独立 这类d ...
- CodeTON Round 4 (Div. 1 + Div. 2, Rated, Prizes!)A~E
比赛连接:Dashboard - CodeTON Round 4 (Div. 1 + Div. 2, Rated, Prizes!) - Codeforces A. Beautiful Sequenc ...
- Codeforces Round #586 (Div. 1 + Div. 2) B. Multiplication Table 思维 + 公式
传送门 文章目录 题意: 思路: 题意: 给你一个n∗nn*nn∗n的矩阵,每个位置由ai∗aja_i*a_jai∗aj得来,主对角线为000,让你求出来aia_iai. n≤1e3n\le1e ...
- Codeforces Round #586 (Div. 1 + Div. 2) D. Alex and Julian 数学 + 思维
传送门 文章目录 题意: 思路: 题意: 给你一个无限个点的坐标轴,一个集合BBB,如果存在∣i−j∣=bk|i-j|=b_k∣i−j∣=bk的话,那么i,ji,ji,j之间就连边.现在问你至少要从 ...
- Codeforces Round #733 (Div. 1 + Div. 2) E. Minimax 分情况讨论 + 思维
传送门 文章目录 题意: 思路: 题意: 给你一个串,你可以随意安排这个串,使得这个串的每个前缀的kmpkmpkmp数组最大值最小,定义为f(a)f(a)f(a),并且字典序最小,输出安排之后的串. ...
- Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2) F. Bits And Pieces sosdp预处理超集
传送门 文章目录 题意: 思路: 题意: n≤1e6,ai≤2e6n\le1e6,a_i\le2e6n≤1e6,ai≤2e6 思路: 由于(aj&ak)(a_j \And a_k)(aj& ...
最新文章
- redisson get()数据报错,missing type id property ‘@class’
- js日期格式化Date
- 被吴恩达的Landing.ai刷屏后,我们从他的8条Twitter和9大招聘岗位中看到了三个有趣细节
- python画图代码七彩蟒蛇-Python实现七彩蟒蛇绘制实例代码
- 基于pygame的射击小游戏制作(三)让外星人动起来
- informatica中元数据管理
- 从 Chrome 谈到 Adobe
- Centos下安装Mongodb
- 2022下半年软考冲刺,这些资料就是45分通关密码
- oracle中对表进行分组,Oracle第五章多表链接、第六章分组函数习题整理
- php微商系统,产品营销推广神器Thinkphp核心微商新版零售系统源代码
- c语言二进制转十六进制代码,C语言--二进制转十六进制
- iPhone se2如何实现快充?
- 利用spring集成redis使用
- Openssh7.4p1更换为8.2
- 超赞!微信内无法下载文件的三种解决方案
- Java开发常用软件列表——持续更新
- [附源码]计算机毕业设计JAVAjsp在线视频网站
- git 在往云端push代码时候报错detached head
- 总结Android屏幕适配(源自简书:李俊的博客)