文章目录

  • 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】相关推荐

  1. 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 + ...

  2. 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 ...

  3. 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 ...

  4. Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)切题报告(A-B题)

    这是我第二次参加CF比赛,也是第一次写博客,写得不好,望各位大佬海涵. A. Single Wildcard Pattern Matching 原题链接 这道题,这是难到让人无法直视,太水了. 题目大 ...

  5. [区间记忆化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 ...

  6. 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 ...

  7. 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 ...

  8. 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之间就连边.现在问你至少要从 ...

  9. Codeforces Round #733 (Div. 1 + Div. 2) E. Minimax 分情况讨论 + 思维

    传送门 文章目录 题意: 思路: 题意: 给你一个串,你可以随意安排这个串,使得这个串的每个前缀的kmpkmpkmp数组最大值最小,定义为f(a)f(a)f(a),并且字典序最小,输出安排之后的串. ...

  10. 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​& ...

最新文章

  1. redisson get()数据报错,missing type id property ‘@class’
  2. js日期格式化Date
  3. 被吴恩达的Landing.ai刷屏后,我们从他的8条Twitter和9大招聘岗位中看到了三个有趣细节
  4. python画图代码七彩蟒蛇-Python实现七彩蟒蛇绘制实例代码
  5. 基于pygame的射击小游戏制作(三)让外星人动起来
  6. informatica中元数据管理
  7. 从 Chrome 谈到 Adobe
  8. Centos下安装Mongodb
  9. 2022下半年软考冲刺,这些资料就是45分通关密码
  10. oracle中对表进行分组,Oracle第五章多表链接、第六章分组函数习题整理
  11. php微商系统,产品营销推广神器Thinkphp核心微商新版零售系统源代码
  12. c语言二进制转十六进制代码,C语言--二进制转十六进制
  13. iPhone se2如何实现快充?
  14. 利用spring集成redis使用
  15. Openssh7.4p1更换为8.2
  16. 超赞!微信内无法下载文件的三种解决方案
  17. Java开发常用软件列表——持续更新
  18. [附源码]计算机毕业设计JAVAjsp在线视频网站
  19. git 在往云端push代码时候报错detached head
  20. 总结Android屏幕适配(源自简书:李俊的博客)

热门文章

  1. 团体程序设计天梯赛 L2-035 完全二叉树的层序遍历
  2. 通过证明对 Windows 10 及更高版本的驱动程序进行签名
  3. zoj 1119 SPF
  4. @echo off的作用
  5. 闪客工具:微信本地调试工具
  6. python变量的命名方式_Python变量命名与定义方式
  7. P1542 包裹快递 㵘淼沝水题解
  8. 如何在AutoCAD中将卫星底图变为有坐标参考信息的
  9. 使用putty进行代理上网
  10. 李群、李代数等机器人学数学概念