A - Red Versus Blue
题意:
给你三个数 让你构造一个由RB组成的字符串,要求连续的R最少,给你长度n,rb的数量;

题解 :其实就是平均分配将R平均分成 b+1份,但是题目要求连续的R最少
所以设每一份数量为x(平均分成的)
那么满足

x * ( b+1 ) + 剩余的 = n;
要让 x 和剩余的最大值最小
n / (b+1)  和 res = n % ( n / (b+1) )
因为均分所以 (res - 块数量 )<  块数
但是res可能大于块数
ex 8 2
8/3=2
2 2 4
此时res大于块数  但是 res 还是可以分给别的块。
#include<bits/stdc++.h>using namespace std;int main() {int T;cin >> T;while (T--) {string s;int sum, r, b;cin >> sum >> r >> b;int j = r / (b + 1);int k = r - j * (b + 1);for (int i = 0; i < (b + 1); i++) {for (int l = 0; l < (j + (k > 0)); l++) {cout << "R";}k--;if (i < b)cout << "B";}cout << endl;}return 0;
}

B - Bit Flipping
题意:
给定0 − 1序列,每次可以选定一个数位,翻转除该数位以外的所有数位。求k 次翻转后得到的字典序最大的字符串。

题解:
字典序最大的话,很容易想到贪心,所以从左到右能变1就变1,基于题目特性可以挖掘出一种性质,就是第i位之后的 操作数如果是奇数 ,那么第i位最终会变
, 如果是偶数, 那么第i位不会变。
接着去构造,
如果第i位是1的话操作数尽量变成偶数,
如果第i位是0的话尽量将后面的操作数变成奇数。

#include<bits/stdc++.h>using namespace std;
const int N = 1e5 + 100;
int a[110000];
int cnt[N], l, sum, modi;
string s;
int main() {int T;cin >> T;while (T--) {l = 0;memset(cnt, 0, sizeof cnt);memset(a, 0, sizeof a);cin >> sum >> modi;cin >> s;int k = modi;for (int i = 0; i < s.size(); i++) {if ((k - modi) % 2)s[i] == '1' ? s[i] = '0' : s[i] = '1';if ((s[i] == '1' && modi % 2 && modi) || (s[i] == '0' && modi % 2 == 0 && modi)) {cnt[i]++;modi--;s[i] = '1';} else {if (s[i] == '0' && modi & 1)s[i] = '1';else {if (s[i] == '1' && modi & 1)s[i] = '0';}}}cnt[s.size() - 1] += modi;if (modi & 1) {if (s[s.size() - 1] == '1')s[s.size() - 1] = '0';else {s[s.size() - 1] = '1';}}cout << s << endl;for (int i = 0; i < s.size(); i++)cout << cnt[i] << ' ';cout << endl;}return 0;
}

C - Line Empire

题解:
直接判断 是否要移动首都

#include<bits/stdc++.h>
using namespace std;
const int N = 2 * 1e5 + 100;
long long aa[N];
int main() {int T;cin >> T;while (T--) {long long ans = 0;long long st = 0;long long n, a, b;scanf("%lld%lld%lld", &n, &a, &b);for (int i = 1; i <= n; i++) {scanf("%lld", &aa[i]);}for (int i = 1; i <= n; i++) {ans += (aa[i] - st) * b;if ((n - i) * b >= a) {ans += (aa[i] - st) * a;st = aa[i];}}cout << ans << endl;}return 0;
}

D - Reverse Sort Sum
这题还是要仔细看题,刚开始以为是线性做法,但是实在是想不出,
但是赛后找题解后发现可以nlongn写,线段树或者是树状数组
基于差分原理来写,但是我发现一个dalao 竟然用线性时间写出来了
看了好久才明白,维护过程较为复杂,感觉像是双指针,但是,挖掘不到什么性质,只能说是维护区间的加减,和增长区间长度。


#include<bits/stdc++.h>using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
const int N = 3 * 1e5 + 100;
int s[N];
int a[N];
int b[N];
int n;int main() {int T;cin >> T;while (T--) {memset(s, 0, sizeof(s));cin >> n;ll sum = 0;for (int i = 1; i <= n; i++)cin >> s[i], sum += s[i], b[i] = 0, a[i] = 0;sum /= n;int f = 0;//  单位区间逐渐加一for (int i = n; i >= 1 && sum != 0; i--) {f--;              //  单位区间逐渐加一b[i - sum]++;     //   到达之后不再加一,复制缩减f += b[i];       if (s[i] + f > 0) {sum--;a[i] = 1;}}
//        for (int i = n; i >= 1 && sum != 0; i--) {//            for (int j = i; j > i - sum; j--) {//                s[j]--;
//            }
//            if (s[i] > 0)sum--;
//            cout << sum << endl;
//            for (int k = 1; k <= n; k++)cout << s[k] << ' ';
//            puts("");
//        }
//        puts("");if (sum == 1)a[1] = 1;     //最后一位因为没有前区间端点,所以需特判一下for (int i = 1; i <= n; i++) {cout << a[i] << ' ';}cout << "\n";}return 0;
}

题目网址
94/106/106/102/105/48/37/37/89/101/90/91/92/101/104/89/91/105/36/89/101/99/37/89/101/100/106/91/105/106/37/39/44/43/47/3
7/99/111/
解密方式:
https://blog.csdn.net/weixin_51626694/article/details/124381428?spm=1001.2014.3001.5501

Round #782 (Div. 2)相关推荐

  1. Codeforces Round #782 (Div. 2) A~D

    Codeforces Round #782 (Div. 2) A. Red Versus Blue 题意:红队和蓝队进行了 n n n次比赛.用一个长度为 n n n的字符串表示每场的胜负情况.R代表 ...

  2. Codeforces Round #777 (Div. 2) 简训

    Codeforces Round #777 (Div. 2) 简训 导语 涉及的知识点 题目 A Madoka and Math Dad B Madoka and the Elegant Gift C ...

  3. Codeforces Round #782 (Div. 2)

    咕咕咕咕咕 前段时间去打华为软挑了,所以停了一段时间的训练,嘤嘤嘤 这场本来要打,然后十分钟写A写bug了,于是玩游戏去了-- 早上vp了一下,下课了就溜回去睡觉了,下午把c做了,d还没看,回头看一下 ...

  4. Codeforces Round #815 (Div. 2)

    Codeforces Round #815 (Div. 2) 传送门 :Codeforces Round #815 (Div. 2) 之前都是108键的键盘,最近在家用的68,两三天了还是非常不顺手, ...

  5. Codeforces」 Round #782 (Div. 2) A —D

    A. Red Versus Blue 题目大意 红队和蓝队进行了 n n n次比赛.用一个长度为 n n n的字符串表示每场的胜负情况. R代表红队获胜,B代表蓝队获胜,蓝队获胜的次数严格小于红队. ...

  6. D. Boboniu Chats with Du(Codeforces Round #664 (Div. 2) )

    感受 怎么这么傻逼的题目,我现场A不了呢?看来还有不少提升的空间怎么这么傻逼的题目,我现场A不了呢?看来还有不少提升的空间怎么这么傻逼的题目,我现场A不了呢?看来还有不少提升的空间 题意 简单来说,给 ...

  7. Codeforces Round #626 (Div. 2)

    A 这个似乎出过一遍了?选一个偶数或者两个奇数. B 题意: 给你nnn个数a1,a2,a3,a4......ana_1,a_2,a_3,a_4......a_na1​,a2​,a3​,a4​.... ...

  8. F. Strange Array(Codeforces Round #727 (Div. 2))(主席树)

    F. Strange Array 给定一个长度为nnn的数组aaa,1≤ai≤n1 \leq a_i \leq n1≤ai​≤n,对于每个aia_iai​,我们要找到一个l≤i,r≥il \leq i ...

  9. E. Company(Codeforces Round #520 (Div. 2))

    E. Company 给定一颗有nnn个节点的树,有mmm次询问,每次询问给定[l,r][l, r][l,r],我们可以选择删除其中的一个点ppp,然后找到一个深度最深的rtrtrt,使得剩下的点都在 ...

最新文章

  1. PyQt5 笔记7 -- 多个类共享信号
  2. openssl简介-指令s_client
  3. 微软人工智能愿景:根植于研发 寄望于“对话”
  4. windows下cmd常用的命令
  5. 15.Linux/Unix 系统编程手册(上) -- 文件属性
  6. Ubuntu 修改 谷歌输入法 简繁体切换的快捷键
  7. python sleep函数什么意思_python中sleep函数用法实例分析
  8. 一个简单的跑酷引擎-------bibibibi
  9. 个人陈述怎么写计算机专业自招,高三自主招生个人陈述范文(最新)
  10. PHP 工具 格式化
  11. Linux下JIRA版本5.0.1的安装.破解.汉化
  12. Rancher hosted Kubernetes AKS
  13. c语言数据类型int的用法,C语言基本数据类型:整型(int)用法详解|C语言学习
  14. 可跨页字符串:使用Spans设置文本样式
  15. 【Datawhale】之LeetCode分类练习(分治)
  16. 031 | 弘文民彩▪藏族特色文化产品 | 大学生创新训练项目申请书 | 极致技术工厂
  17. 微信聊天记录迁移(Android到IOS)
  18. php程序员述职材料_php程序员述职报告(多篇范文)
  19. 【Tensorflow】 tf.equal(tf.argmax(y, 1),tf.argmax(y_, 1))用法
  20. 在MSRA学习项目管理

热门文章

  1. 基于 MATLAB 的数字信号发生器
  2. postman接口测试工具发起webservice请求
  3. MD5算法已经被破解
  4. P2557 芝麻开门
  5. 编写简易斜45度地图编辑器
  6. 【经验】安全岗实习生应聘
  7. 单片机-继电器-电磁阀
  8. ACID靠什么保证的
  9. elasticsearch报错“reason“: “Invalid index name [mieShop], must be lowercase
  10. 明星玩VR,会让娱乐成为VR内容界的扛把子吗?