A. Technical Support

        题目大意:

                每次一个问题Q,和一个回答A。要求每个问题Q后面都有A与之对应,问给出的字符串是不是满足这个条件

分析:

                模拟就行了

#include <bits/stdc++.h>using namespace std ;
const int N = 108 ; void solve(){int n ; cin >> n ; string s ; cin >> s ; int cnt = 0 ; for(int i = 0 ; i < n ; i ++){if(s[i] == 'Q') cnt ++ ; else {if(cnt) cnt -- ; }}if(cnt) cout << "No" << '\n' ; else cout << "Yes" << '\n' ;
}int main(){    std::ios::sync_with_stdio(false) ; std::cin.tie(0) ; int T ; cin >> T ; while(T --){solve() ; }return 0;
}

 B. Kevin and Permutation

        题目大意:

有一个只包含元素1~n的序列,要求你构造出来的序列使得的值最大

分析:

                我们可以观察大,最大值就是,构造方法为n , n/2 , n - 1 , n/2 - 1 ...这样一直构造下去,如果长度是奇数,就将n放在序列的最后

#include <bits/stdc++.h>using namespace std ;
const int N = 108 ; void solve(){int n ; cin >> n ; if(n % 2 == 1){for(int i =  n / 2 , j = n - 1 ; i >= 1 ; i -- , j --){cout << i << ' ' << j << ' ' ; }cout << n << '\n' ; }else{for(int i =  n / 2 , j = n; i >= 1 ; i -- , j --){cout << i << ' ' << j << " \n"[i == 1] ; }}
}int main(){    std::ios::sync_with_stdio(false) ; std::cin.tie(0) ; int T ; cin >> T ; while(T --){solve() ; }return 0;
}

C1. Make Nonzero Sum (easy version)
        题目大意:

给定一个数组,你可以将数组进行不同的分组,并且每一组区间[l,r]的价值为:,要求你给出一个合法的分组满足所有分组的价值之和为0

分析:

                我们首先注意到一个性质:如果当前每个区间的长度都为一,也就是每个数自己和自己是一组,那么如果找到一个数是1,并且把它跟前面的一个数并成一组,那么1就变成了-1,那么对所有价值的和的贡献就是-2。同理,如果当前的数是-1,把它与前面一个数合并成一组,那么-1就变成了+1,对所有价值的和的贡献是+2。也就是说我们每次合并一个分组本质上就是对价值的+2或者-2操作。所以我们的策略是,首先我们将所有数单独分成一个组,如果价值是奇数,那么就一定不行输出-1;如果是偶数,那么会有总价值>0总价值<0和总价值==0之分:

1.如果总价值大于0,我们就在序列里面找到1的位置并且把它和前面一个数合并,直到总价值为0

2.如果总价值==0,直接输出每一个单个区间即可

3.如果总价值<0,我们就在序列里面找-1的位置并且把它和前面一个数合并,直到总价值为0

#include <bits/stdc++.h>using namespace std ;
const int N = 200008 ;
int a[N] ;
struct node{int l , r ;
}no[N] ;
void solve(){int n ; cin >> n ; int tot = 0 ; for(int i = 1 ; i <= n ; i ++){cin >> a[i] ; }if(n & 1){cout << -1 << '\n' ; return ; }for(int i = 1 ; i < n ; i ++){if(a[i] == a[i + 1]){no[tot].l = i , no[tot ++].r = i + 1 ; i ++ ; }else{no[tot].l = i , no[tot ++].r = i ; no[tot].l = i + 1 , no[tot ++].r = i + 1 ; i ++ ; }}cout << tot << '\n' ; for(int i = 0 ; i < tot ; i ++){cout << no[i].l << ' ' << no[i].r << '\n' ; }
}int main(){    std::ios::sync_with_stdio(false) ; std::cin.tie(0) ; int T ; cin >> T ; while(T --){solve() ; }return 0;
}

C2. Make Nonzero Sum (hard version)

        题目大意:

                题目意思和上题一致,只是序列中出现了0的情况

分析:

                我们可以发现0怎么变都不会对总价值产生贡献,所以我们还是按照C1的思路解决即可

#include <bits/stdc++.h>using namespace std ;
const int N = 200008 ;
int a[N] ;
bool vis[N] ;
bool tmp[N] ;
void solve(){memset(vis , false , sizeof vis) ; memset(tmp , false , sizeof tmp) ; int n ; // puts("-------------------") ; cin >> n ; int sum = 0 ; for(int i = 1 ; i <= n ; i ++){cin >> a[i] ; sum += a[i] ; }if(sum & 1) {cout << -1 << '\n' ; return ; }if(sum == 0){cout << n << '\n' ; for(int i = 1 ; i <= n ; i ++){cout << i << ' ' << i << '\n' ; }return ; }int cnt = n ; if(sum > 0){for(int i = 2 ; i <= n ; i ++){if(a[i] == 1 && !tmp[i - 1]){// cout << i << '\n' ; sum -= 2 ; vis[i - 1] = true ; tmp[i] = tmp[i - 1] = true ; cnt -- ; }if(sum == 0) break ; }}else if(sum < 0){for(int i = 2 ; i <= n ; i ++){if(a[i] == -1 && !tmp[i - 1]){sum += 2 ; vis[i - 1] = true ; tmp[i] = tmp[i - 1] = true ; cnt -- ; }if(sum == 0) break ; }}cout << cnt << '\n' ; for(int i = 1 ; i <= n ; i ++){if(vis[i]){cout << i << ' ' << i + 1 << '\n' ; i ++ ; continue ; }cout << i << ' ' << i << '\n' ; }
}int main(){    // std::ios::sync_with_stdio(false) ; // std::cin.tie(0) ; int T ; cin >> T ; while(T --){solve() ; }return 0;
}

D. Factorial Divisibility

        题目大意:

                给定一个n和x,和一个长度为n的数组,判断能不能被整除

分析:

                我们可以注意到,例如 ,也就是4个3!能够被四整除,也就是说,如果以第i个数为例,如果i-1的个数是i的倍数,那么就所有的i-1加起来就可以被i整除,一下面的例子来理解:

#include <bits/stdc++.h>using namespace std ;
const int N = 5e5 + 8 ;
map<int,int> mp ;
int a[N] ; void solve()
{   int n , k ; cin >> n >> k ; for(int i = 1 ; i <= n ; i ++) {cin >> a[i] ; mp[a[i]] ++ ; }for(int i = 1 ; i < k ; i ++){if(mp[i] % (i + 1) == 0)mp[i + 1] += mp[i] / (i + 1) ; else {puts("NO") ; return ; }}puts("YES") ;
}int main(){    std::ios::sync_with_stdio(false) ; std::cin.tie(0) ; solve() ; return 0;
}

EF太菜了不会

水平有限,欢迎指正

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

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

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

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

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

  3. Codeforces Round #829 (Div. 2)题解

    文章目录 A B C1 C2 D A 题意:给我们一个字符串,Q代表问题A代表答案,问题可能会一直提,答案可能会晚些回复.问我们能不能保证一个问题后面至少会跟着一个回答. 思路:我们边遍历边看就行. ...

  4. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  5. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  6. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands

    题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...

  7. Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...

  8. Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...

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

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

最新文章

  1. python基础===拆分字符串,和拼接字符串
  2. Maven 让事情变得简单
  3. Nginx——location配置
  4. JS里在光标位置插入字符
  5. linux系统监控:记录用户操作轨迹,谁动过服务器
  6. c++中字符与数值之间的转换函数(全网最全)
  7. python做自动化控制postman_python自动化测试入门篇-postman
  8. 信息学奥赛一本通C++语言——1027:输出浮点数
  9. 9.Springcloud的Hystrix服务熔断和服务降级
  10. Excel——字符串操作函数
  11. Code Chef - Chef and Graph Queries
  12. 44. 将样式表放在顶部(5)
  13. Linux服务器配置Redis并启用PHP支持
  14. php 循环左移,PHP运算符、PHP分支结构和循环、模板语法在模板中的应用
  15. 姜启源《数学模型》第12章:马氏链模型
  16. 中国各民族名称的罗马字母拼写法和代码-GBT 3304-1991
  17. QQ登录界面测试用例设计:
  18. Stata: 断点回归(RDD)中的近似置换检验和伴随次序统计简介
  19. html thead隐藏,HTML的thead标签
  20. 选择什么语言真的重要吗

热门文章

  1. 向量相似度java_计算一组向量相似度
  2. RJ-48 和RJ-45 的区别
  3. 软考高级证书在积分落户政策上可以积分50分
  4. python 字典写入excel_Openpyxl – 从字典写入excel的行和列
  5. WLAN无线局域网组成
  6. 还原恢复Windows10路径环境变量
  7. 欺诈检测中的不平衡分类
  8. 软件公司(Java)转正总结报告,仅供参考
  9. 大数据展示IT需求模板
  10. jquery ztree插件使用