想了两天的E1,还是没懂,菜菜

A. Meximization

题意:找到一个序列,使他的MEX值最大。
第一点,我们知道如果第一个最小的数字从0开始,那么后面的数字只要连续的个数越多,他的MEX值越大。
第二点,相同的数需要排在最大数的后面,这样当前的MEX值能再多加几次。

#include <bits/stdc++.h>
using namespace std;typedef long long ll;
const int N = 110;
typedef pair<int, int> PII;int a[N], t, n, b[N];int main()
{cin >> t;while (t -- ){cin >> n;for (int i = 1; i <= n; i ++ ) cin >> a[i];sort (a + 1, a + n + 1);int cnt = 1;int ans = a[1];b[1] = ans;for (int i = 2, j = n; cnt < j; i ++ ){if (a[i] != ans) { ans = a[i];b[ ++ cnt] = ans;}else{ans = a[i];b[j -- ] = a[i];}} for (int i = 1; i <= n; i ++ ) cout << b[i] << ' ';puts("");}return 0;
}

B. M-arrays

题意:把原数组分为最小的组数,使得每个组相邻的两个数相加都能被m整除。我们肯定不能傻愣愣地用暴力,根据同余模定理,两个相加的数要被m整除,那么他们各自模m的余数相加要等与m。开一个vis[]存储余数的个数。两个指针头尾分别扫,用ans来存储无法匹配的数,他们每个要单独算一组。开头先处理掉个数为0的情况,要注意的是能完美匹配的除了个数相等的,还有数量相差为1的。

#include <bits/stdc++.h>
using namespace std;typedef long long ll;
typedef pair<int, int> PII;
const int N = 100010;int a[N], vis[N];
int t, n, m;int main()
{cin >> t;while ( t -- ){cin >> n >> m;memset(vis, 0, sizeof vis);for (int i = 1; i <= n; i ++ ){scanf("%d", &a[i]);vis[a[i] % m] ++;}int sum = 0, ans = 0;if (vis[0]) sum ++;for (int i = 1, j = m - 1; i <= j; i ++, j -- ){if (vis[i] == 0 || vis[j] == 0) ans += max(vis[i], vis[j]);else if (vis[i] == vis[j]) sum ++;else if (abs(vis[i] - vis[j]) == 1) sum ++;else if (abs(vis[i] - vis[j]) > 1) {sum ++;ans += max(vis[i], vis[j]) - min(vis[i], vis[j]) - 1;}}cout << sum + ans << endl;}return 0;
}

C1. k-LCM (easy version)

题意:k = 3 的特殊情况。你的数列总和要等于n,且最小公倍数要小于等于n/2.
明显,奇数时,(n-1)/2,(n-1)/2,1即可满足情况。
那我们考虑偶数,如果一个偶数能分成三个偶数,满足题意,(n-2)/2要是偶数,举例发现2的倍数能满足,而4的倍数无法满足,数列要是(n-4)/2,(n-4)/2,4。

#include <bits/stdc++.h>
using namespace std;int t, n, k;int main()
{cin >> t;while (t -- ){cin >> n >> k;if (n % 2) cout << '1' << ' ' << (n - 1) / 2 << ' ' << (n - 1) / 2 << endl;else if (n % 4 == 0) cout << n / 2 <<' ' << n / 4 << ' ' << n / 4 << endl;else cout << '2' << ' ' << (n - 2) / 2 << ' ' << (n - 2) / 2 << endl; }return 0;
}

C2. k-LCM (hard version)

k大于等于3,我们只要把>3的部分全输出1,然后按照easy的方法来,因为已经输出了一部分1,那么此时的和肯定比n小,最后得到的数列一定满足题意。

#include <bits/stdc++.h>
using namespace std;int t, n, k;int main()
{cin >> t;while (t -- ){cin >> n >> k;while (k -- > 3){cout << '1' << ' ' ;n -- ;}if (n % 2) cout << '1' << ' ' << (n - 1) / 2 << ' ' << (n - 1) / 2 << endl;else if (n % 4 == 0) cout << n / 2 <<' ' << n / 4 << ' ' << n / 4 << endl;else cout << '2' << ' ' << (n - 2) / 2 << ' ' << (n - 2) / 2 << endl; }return 0;
}

2021-03-20 Codeforces Round #708 (Div. 2)相关推荐

  1. Codeforces Round #708 (Div. 2)

    Codeforces Round #708 (Div. 2) 题号 题目 知识点 A Meximization 思维 B M-arrays 思维 C1 k-LCM (easy version) 构造 ...

  2. Codeforces Round #708 (Div. 2)小结

    前言: D,E2D,E2D,E2是两道比较有趣的dp题.记录一下. D.题目大意:略 题目思路:新的图论模型(对最短路本质的理解) 显然有一个n3n^3n3的做法.dp(i,j)dp(i,j)dp(i ...

  3. Codeforces Round #708 (Div. 2)B. M-arrays

    B. M-arrays 题目 题目大意 在一个给定的序列中让你重新划分子系列使得每个子序列里面相邻的元素相加之和能整除m,并且尽可能是的区间分的少.问最少能分多少个区间 解题思路 不管输入给数的有多大 ...

  4. Codeforces Round #727 (Div. 2)2021.6.20

    Codeforces Round #727 (Div. 2) 闲话:打完省赛打cf,很不在状态地硬撑,wa和t了几次挺傻的地方,d题五分钟云出思路脑抽了调不出来.最后c还fst了.可以算的我拿去whi ...

  5. Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...

  6. Codeforces Round #699 (Div. 2) (A ~ F)6题全,超高质量良心题解【每日亿题】2021/2/6

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) (A.B.C)[每日亿题]2021/2/ ...

  7. Codeforces Round #698 (Div. 2)(A ~ F)6题全,超高质量题解)【每日亿题】2021/2/4

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #698 (Div. 2)(A ~ F)6题全,超 ...

  8. Codeforces Round #694 (Div. 1 + Div2)(A ~ H,8题全,超高质量题解)【每日亿题】2021/2/1、2/2

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #694 (Div. 1 + Div2)(A ~ ...

  9. Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine))

    Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine)) 题号 题目 知识点 A Simply Strange Sor ...

最新文章

  1. matlab欧拉迭代,matlab机械臂正逆运动学求解问题,使用牛顿-欧拉迭代算法
  2. BMP图片魔法师KeyGen
  3. unicode字符串 转 中文
  4. 磁盘分析工具Ncdu的简单使用和体验
  5. 对称矩阵、Hermite矩阵、正交矩阵、酉矩阵、奇异矩阵、正规矩阵、幂等矩阵
  6. 解决Linux系统没有/etc/sysconfig/iptables文件
  7. boost::hana::zip_with用法的测试程序
  8. 在程序员面前千万不要说这9句话,我一个同事就死的很惨!
  9. FileFilter 遍历某个目录下文件名含有某个字符的文件
  10. BitCoin Gloom系列
  11. 网络安全管理的“模拟人生”
  12. C#【必备技能篇】注册dll+批量注册dll
  13. 仇保兴:城市的交通应该尊重什么样的发展战略?
  14. 概率论————思维导图(上岸必备)(数字特征)
  15. 【微信小程序】设备判断android还是ios及微信版本信息 ( 含工具类 )
  16. BAT编写详细手册 ( 转载 )
  17. preg_replace函数去除字符串中的空格,逗号(,)等
  18. 编程课python和c+对中高考_编程要进入高考了。
  19. 家乡主题网页设计代码 旅游主题网页设计 html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计
  20. Android开源项目 资源 学习

热门文章

  1. 单片机数字电压表设计
  2. ANIMATION动画的学习小总结
  3. STM32F10x TIM1 CH3/CH4 的重映射PWM输出
  4. 华为鸿蒙系统有什么不一样,鸿蒙系统与EMUI系统到底有何不同,华为手机将来能否支持双系统?...
  5. 怎么查税务的计算机代码,全国各国税局税务代码查询?
  6. dw1.modify()函数说明
  7. 打造项目团队的“三驾马车”,助力组织持续发展︱用友金融项目总监闫利明
  8. python抽奖游戏_利用Python写一个抽奖程序,解密游戏内抽奖的秘密
  9. PS-2020版本显卡问题解答
  10. 世界顶级的杀毒软件——比特梵德