A Omkar and Completion

只要找两个相加不等的数交叉构造即可。

AC代码:

int main()
{int t;sd(t);while (t--){sd(n);rep(i, 1, n){if (i & 1)printf("500 ");elseprintf("501 ");}printf("\n");}return 0;
}

B. Omkar and Last Class of Math

设 a,ba,ba,b 为两个解,假设 a≤ba≤ba≤b,那么显然 lcmlcmlcm 一定 ≥b≥b≥b。这里我们一定要构造 lcm=blcm=blcm=b 的解,因为 bbb 一定 <n<n<n,而 lcmlcmlcm 是 bbb 的倍数,就算 lcm=2blcm=2blcm=2b 也一定 ≥n≥n≥n,所以 lcm=blcm=blcm=b 也就是说,aaa 可以整除 bbb,这又等价于 aaa 整除 nnn。要让 lcmlcmlcm 尽可能小,相当于让 bbb 尽可能小也就是 aaa 尽可能大。所以总结一下,要让 aaa 整除 nnn 并且 aaa 尽可能大,那就找 nnn 的最大的不等于 nnn 的约数就好了。

AC代码:

int main()
{int t;sd(t);while (t--){sd(n);if (n % 2 == 0){pdd(n / 2, n / 2);continue;}int ans = -1;for (int i = 2; i * i <= n; i++){if (n % i == 0){ans = max(ans, i);ans = max(ans, n / i);}}if (ans == -1)ans = 1;pdd(ans, n - ans);}return 0;
}

C. Omkar and Baseball

  • 原序列已经是 [1,2,..,n][1,2,..,n][1,2,..,n] 就不用操作
  • 原序列中,有一段区间中所有元素都错位,操作一次。
  • 原序列中一部分在原位置,一部分不在原位置,操作两次。

AC代码:

const int N = 5e5 + 50;
int n, k, m;
int a[N];int main()
{int t;sd(t);while (t--){sd(n);int cnt = 0;rep(i, 1, n){sd(a[i]);if (a[i] == i)cnt++;}if (cnt == n){puts("0");continue;}rep(i, 1, n){if (a[i] == i)cnt--;elsebreak;}per(i, n, 1){if (a[i] == i)cnt--;elsebreak;}if (cnt == 0)puts("1");elseputs("2");}return 0;
}

D. Omkar and Circle

首先把环断开,发现最优情况只可能是把所有奇数位置上的数加起来。因为偶数位置的数根本不可能留到最后。那么这个结论应用到环上就是,很多“偶数”位置其实都会被抛弃,最后的答案一定是,选取恰当的位置把环断开后的奇数位置之和。所以实现的时候只要记录奇偶位置的前缀和,然后 forforfor 一遍即可。

AC代码:

const int N = 5e5 + 50;
int n, k, m;
ll a[N], s[2][N];int main()
{int t;sd(n);rep(i, 1, n){sld(a[i]);s[0][i] = s[0][i - 1] + (i % 2 == 0 ? a[i] : 0);s[1][i] = s[1][i - 1] + (i % 2 == 1 ? a[i] : 0);}ll ans = 0;rep(i, 1, n)ans = max(ans, s[i % 2][i] + s[i % 2 ^ 1][n] - s[i % 2 ^ 1][i]);pld(ans);return 0;
}

Codeforces Round #655 (Div. 2)相关推荐

  1. Codeforces Round #655 (Div. 2) D

    题目链接 https://codeforces.com/contest/1372/problem/D 题面 题意 给定n(n≤2e5)n(n\leq2e5)n(n≤2e5)个数字,组成一个环,每次你可 ...

  2. Codeforces Round #655 (Div. 2) C

    题目链接 https://codeforces.com/contest/1372/problem/C 题面 题意 给定一个长度为n(n≤2e5)n(n\leq2e5)n(n≤2e5)的数组,你可以任意 ...

  3. Codeforces Round #655 (Div. 2) A

    题目链接 https://codeforces.com/contest/1372/problem/A 题面 题意 对于给定的n(n≤1000)n(n \leq1000)n(n≤1000)找一个长度为n ...

  4. Codeforces Round #655 (Div. 2) E. Omkar and Last Floor 区间dp + 巧妙的状态设计

    传送门 题意: 思路: 按照贪心的思路来考虑的话,显然是每一列111的个数越多越好,所以我们能放到一列就放到一列.设f[l][r]f[l][r]f[l][r]为在[l,r][l,r][l,r]内,区间 ...

  5. Codeforces Round #655 (Div. 2) D. Omkar and Circle 思维 + 奇偶贪心

    传送门 题意: 给一个长为nnn的数组(nnn为奇数),iii与i−1i-1i−1相邻,111与nnn相邻,每次选择一个位置,将这个位置的值变成与它相邻的两个位置的和,让后将相邻位置删掉.求最终剩下一 ...

  6. Codeforces Round #655 (Div. 2) B. Omkar and Last Class of Math 数学

    传送门 题意: 找出A+B=nA+B=nA+B=n并且lcm⁡(A,B)\operatorname{lcm}(A,B)lcm(A,B)最小的AAA和BBB. 思路: nnn为偶数的时候答案肯定为都是n ...

  7. Codeforces Round #655 (Div. 2) B C

    代码如下: #include<iostream> #include<algorithm> #include<cstring> using namespace std ...

  8. Codeforces Round #655 (Div. 2) ABCDEF题解

    题号 博客链接 cf分数 算法标签 A https://blog.nuoyanli.com/2020/07/14/codeforces-round-655-div-2-a/ 800 简单 B http ...

  9. Codeforces Round #655 (Div. 2) 题解

    A. Omkar and Completion 查看题解 构造 B. Omkar and Last Class of Math 查看题解 数学 C. Omkar and Baseball 查看题解 思 ...

最新文章

  1. 如何备份思科、锐捷、Juniper的配置文件
  2. 【机器学习】算法大全
  3. java开发组态软件下载_基于JAVA的煤矿安全监控系统组态软件设计研究.pdf
  4. 1.7Oob 继承关系中构造方法的使用
  5. Javascript in one picture
  6. 解决PL/SQL查询结果乱码的问题
  7. 基于SSM的选课系统
  8. java 模拟电梯_java实现的电梯模拟系统
  9. 378.有序矩阵中第K小的元素
  10. 如何在Mac上使用屏幕共享
  11. Flash遮罩之溜光字制作二
  12. 在mac homebrew_您可以通过Homebrew在Mac上获得的最佳命令行工具
  13. html br 缩写,br开头的单词有哪些?-英语单词br-英语-罗酥遮同学
  14. Keras天坑:想当然的对层的直接运算带来的问题
  15. AGS量化自动炒币机器人与同类软件对比
  16. Goland中在文件模板中为go文件添加个人声明
  17. crazy的比较级最高级_形容词比较级和最高级more, most
  18. Proxy_代理模式
  19. Vue中引入和使用animate.css
  20. c语言松树树干如何编程jemg,JE-C编程指南(上)

热门文章

  1. LeetCode T48 Rotate Image
  2. 王者荣耀孙策520皮肤特效展示 孙策520皮肤值得买吗
  3. Java中使用for循环打印99乘法表
  4. [ahk]使total commander在单双窗口间切换
  5. 远程桌面工具 mRemote
  6. PKI 公钥基础设施原理与应用
  7. 《寒假去世十 第八章》
  8. 数字图像处理第九章笔记——形态学图像处理
  9. HDU 5963 朋友(找规律)
  10. 上海交大计算机系07,08就业一栏(硕士生)