文章目录

  • A
  • B
  • C1
  • C2
  • D

A

题意:给我们一个字符串,Q代表问题A代表答案,问题可能会一直提,答案可能会晚些回复。问我们能不能保证一个问题后面至少会跟着一个回答。

思路:我们边遍历边看就行。

#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;void solve()
{int n;string s;cin >> n >> s;int A = 0, Q = 0;for (int i = 0; i < n; i++){if (s[i] == 'Q'){Q++;}else if (Q && s[i] == 'A'){Q--;}}if (Q == 0)cout << "Yes" << endl;elsecout << "No" << endl;
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int T;cin >> T;while (T--){solve();}return 0;
}

B

题意:给我们一个数n然后我们要用小于等于n的数构造一个数组使相邻的两个之间的差绝对值的最小值最大。(每个数只能用一遍且必须用一遍)。

思路:这个题的话我们可以考虑前后配对。例如一个偶数6.我们可以让步4和1进行配对。5和2进行配对。6和3进行配对。这样的话一定是最小值最大的。奇数的话我们只需要把最后一个数放到最后前面的按偶数来即可。

void solve()
{memset(st, false, sizeof st);int n;cin >> n;if (n % 2 == 1){int k = n / 2;for (int i = n / 2 + 1; i <= n; i++){if (st[i] == false){int j = i;while (j >= 1){if (st[j] == false){st[j] = true;cout << j << ' ';j -= k;}else{break;}}}else{break;}}cout << endl;}else{int k = n / 2;for (int i = n / 2 + 1; i <= n; i++){if (st[i] == false){int j = i;while (j >= 1){st[j] = true;cout << j << ' ';j -= k;}}else{break;}}cout << endl;}
}signed main()
{IOS;int T;cin >> T;while (T--){solve();}return 0;
}

C1

题意:这个题的话是给我们一个由1和-1组成的数组,让我们把他分成任意段,然后每一段内的奇数位+偶数位-。让我们看看能不能构造一个数组让所有段相加之和为0。

思路:这个题的话我们可以发现如果相加是奇数的话一定是不可以的。为偶数的话肯定是可以的。相邻的两个一样的话根据运算的规则肯定就为0。所以如果连续一样的1或者-1的话,并且是偶数个连续的话就把他们分成一组那么本组一定是0。剩下的把每一个-1和1都单独分成一组这样的话,它一定是有解的因为和是偶数。

#include <cstring>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;const int N = 1e6 + 10;
int a[N];
vector<pair<int, int>> ans;void solve()
{ans.clear();int n;cin >> n;int sum = 0;for (int i = 1; i <= n; i++){cin >> a[i];sum += a[i];}if (sum % 2 != 0){cout << -1 << endl;return;}for (int i = 1; i <= n; i++){if (a[i] == 1 && a[i + 1] == -1 || a[i] == -1 && a[i + 1] == 1){ans.push_back({i, i});ans.push_back({i + 1, i + 1});i++;}else{int state = a[i];int j = i;int k = 0;while (state == a[j] && j <= n){k++;j++;}/* if (i == 5)cout << k << endl; */if (k % 2 == 0){ans.push_back({i, j - 1});i = j - 1;}else{ans.push_back({i, j - 2});i = j - 2;}}}cout << ans.size() << endl;for (int i = 0; i < (int)ans.size(); i++){cout << ans[i].first << ' ' << ans[i].second << endl;}
}int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int T;cin >> T;while (T--){solve();}return 0;
}

C2

题意:跟C1一样的只不过数组可以存在0元素

思路:如果中间有元素0,判断相邻非0元素是否相等, 若相等左边自成区间,右边带一个0自成区间,若不相等则自成区间;若中间没有0,则和C1情况相同

D

题意:给我们一个数组和一个x,让我们看看数组内每一个数的阶乘相加能否整除x的阶乘。

思路:暴力的话肯定是不行的,会爆。我们可以发现(i+1)个i的阶乘就是i+1的阶乘。这样的话,我们其实就可以统计一下a[i]的个数然后枚举一下1~x之间的数,如果此时有余数的话就说明是不行的。最后保证cnt[x]不是零并且前面全是零的话就是可以的。

#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;const int N = 5e5 + 10;
int cnt[N];int main()
{int n, x;cin >> n >> x;for (int i = 1; i <= n; i++){int x;cin >> x;cnt[x]++;}int flag = 1;for (int i = 1; i < x; i++)    //枚举1~x的数{cnt[i + 1] += cnt[i] / (i + 1);       //统计一下(i+1)的阶乘的个数if (cnt[i] % (i + 1) != 0)    //如果不等于零的话,就说明有余数,最后肯定除不尽{flag++;break;}}if (flag == 1 && cnt[x] != 0){cout << "Yes" << endl;}else{cout << "No" << endl;}return 0;
}

Codeforces Round #829 (Div. 2)题解相关推荐

  1. Codeforces Round #514 (Div. 2)题解

    Codeforces Round #514 (Div. 2)题解 A 喵,直接模拟. B 枚举所有盖章时的,合法的,左上角的位置.能盖的话就盖一下.最后check一下图案是否相等即可 C 一轮一轮的扔 ...

  2. Codeforces Round #182 (Div. 1)题解【ABCD】

    Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...

  3. 【算法题解】Codeforces Round #817 (Div. 4)题解

    文章目录 Codeforces Round #817 (Div. 4)题解 A. Spell Check B. Colourblindness C. Word Game D. Line E. Coun ...

  4. Codeforces Round #747 (Div. 2)题解

    Codeforces Round #747 (Div. 2)题解 (本博客将持续更新以后每场CF div2的题解,喜欢ACM.OI的小伙伴记得点个关注哟) 昨天夜晚刷网络流刷入迷了,渐渐就忘记了我还要 ...

  5. C1. Make Nonzero Sum (easy version)【Codeforces Round #829 (Div. 2】

    Codeforces Round #829 (Div. 2)中C1题目 Codeforces比赛记录 文章目录 题目链接: 一.C1. Make Nonzero Sum (easy version) ...

  6. Codeforces Round #789 (Div. 2)题解

    Codeforces Round #789 (Div. 2)题解 A. Tokitsukaze and All Zero Sequence 原题链接 算法标签 贪心 排序 思路 情况一:数组存在零 → ...

  7. Codeforces Round #829 (Div. 2) A~D

    比赛链接:Dashboard - Codeforces Round #829 (Div. 2) - Codeforces 目录 A. Technical Support B. Kevin and Pe ...

  8. Codeforces Round #748 (Div. 3) 题解 完整A~G

    Codeforces Round #748 (Div. 3) 题解 A. Elections 题意 已知竞选中三个候选人的当前得票数 a , b , c a,b,c a,b,c,现在可以增加任何一个人 ...

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

    link orz olinr AK Codeforces Round #533 (Div. 2) 中文水平和英文水平都太渣..翻译不准确见谅 T1.给定n<=1000个整数,你需要钦定一个值t, ...

最新文章

  1. mysql嵌套实战_艰难的mysql嵌套表结果挑战
  2. linux快速还原oracle,linux下恢复误删除oracle的数据文件
  3. 数据结构与算法 -- 算法
  4. 安卓平板运行python_使用Python进行手机平板移动开发 | 学步园
  5. getopt在Python中的使用
  6. 承包你所有壁纸需求,高图网图片,美到窒息
  7. Elasticsearch Java Low Level REST Client(读取响应)
  8. 51Nod-1640-天气晴朗的魔法(最小生成树)
  9. 未来计算机多媒体化,计算机多媒体技术的发展趋势研究
  10. Hive实现笛卡尔积
  11. 论文之生成对抗U-Net
  12. 基于单片机的电流检测仿真设计(#0041)
  13. 可观测白皮书 part2/2
  14. 钉钉显示服务器升级是什么意思,服务器升级自动通知钉钉群并报告环境功能
  15. checkv的基本使用
  16. matlab画图中颜色渐变
  17. C版的迷你程序——快速排序算法
  18. uIP TCP/IP协议栈
  19. 蓝牙卡复制html,蓝牙卡悄然远去 你留意了吗
  20. java集合类继承关系图_java集合继承关系图

热门文章

  1. HTML学生个人网站作业设计:动漫网站设计——卡通漫画教育资讯首页(1页) HTML+CSS+JavaScript 简单DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载
  2. 央行新规:支付宝、微信将限制转账笔数
  3. vue点击按钮怎么跳转图片_vue页面跳转
  4. 三星html查看器怎么取消默认,三星galaxy note各种使用小技巧
  5. java改变数组长度_Java修改数组长度
  6. 华清远见上海中心22071班-9.7作业
  7. Python Adb Shell UiAutomator -- 微信自动发朋友圈/点赞/...
  8. B站C语言学习,颠覆谭浩强C语言,可能是最好的C语言视频 【自用笔记】
  9. JavaWeb之监听器
  10. Name or service not known异常处理方法总结