• Codeforces Round 933 (Div. 3) A~D


    比赛链接 : 

    codeforces.com/contest/1941

    A . Rudolf and the Ticket

     直接暴力即可 ;

    1. #include<bits/stdc++.h>
    2. #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    3. #define endl '\n'
    4. #define lowbit(x) (x&(-x))
    5. #define sz(a) (int)a.size()
    6. #define pb push_back
    7. #define all(a) a.begin(), a.end()
    8. #define int long long
    9. typedef long long LL;
    10. const int mod = 1e9+7;
    11. const int N = 2000;
    12. using namespace std;
    13. int a[N] ,b[N] ;
    14. inline void solve(){
    15. int n , m , k ; cin >> n >> m >> k ;
    16. for(int i=1;i<=n;i++) cin >> a[i] ;
    17. for(int i=1;i<=m;i++) cin >> b[i] ;
    18. int ans = 0 ;
    19. for(int i=1;i<=n;i++){
    20. for(int j=1;j<=m;j++){
    21. if(a[i] + b[j] <= k){
    22. ans ++ ;
    23. }
    24. }
    25. }
    26. cout << ans << endl ;
    27. }
    28. signed main()
    29. {
    30. IOS
    31. int _ = 1;
    32. cin >> _;
    33. while(_ --) solve();
    34. return 0;
    35. }

    B. Rudolf and 121

    贪心的思路 , 这个肯定是要从前往后来遍历的 ;

    从左到右遍历一遍,最后看数组是不是全为0即可 ;

    1. #include<bits/stdc++.h>
    2. #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    3. #define endl '\n'
    4. #define lowbit(x) (x&(-x))
    5. #define sz(a) (int)a.size()
    6. #define pb push_back
    7. #define all(a) a.begin(), a.end()
    8. #define int long long
    9. typedef long long LL;
    10. const int mod = 1e9 + 7;
    11. const int N = 2e5 + 10;
    12. using namespace std;
    13. int a[N] ;
    14. inline void solve() {
    15. int n ; cin >> n ;
    16. for(int i=1;i<=n;i++) {
    17. cin >> a[i] ;
    18. }
    19. bool tag = true ;
    20. for(int i=2;i<=n-1;i++){
    21. int x = a[i-1] ;
    22. a[i-1] -= x ;
    23. a[i] -= 2 * x ;
    24. a[i+1] -= x ;
    25. if(a[i]<0 || a[i+1]<0){
    26. tag = false ;
    27. break ;
    28. }
    29. }
    30. for(int i=1;i<=n;i++){
    31. if(a[i]!=0){
    32. tag = false ;
    33. break ;
    34. }
    35. }
    36. if(tag) cout << "YES" << endl ;
    37. else cout << "NO" << endl ;
    38. }
    39. signed main()
    40. {
    41. IOS
    42. int _ = 1;
    43. cin >> _;
    44. while (_--) solve();
    45. return 0;
    46. }

    C. Rudolf and the Ugly String

    因为"map" 和 pie其实是互不相关的, 那么我们可以找到一个map就删掉a,找到一个pie的话,就删掉一个i,这样从前往后遍历即可 ,就是最优答案 ;

    1. #include<bits/stdc++.h>
    2. #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    3. #define endl '\n'
    4. typedef long long LL;
    5. const int mod = 1e9+7;
    6. const int N = 2e5+10;
    7. using namespace std;
    8. string a = "pie" , b = "map" ;
    9. inline void solve(){
    10. int n ; cin >> n ;
    11. string s ; cin >> s ;
    12. s = ' ' + s ;
    13. vector<int> idx ;
    14. bool tag = true ;
    15. for(int i=1;i<=n-2;i++){
    16. if(s.substr(i,3) == a || s.substr(i,3) == b){
    17. idx.push_back(i) ;
    18. i += 2 ;
    19. }
    20. }
    21. if(idx.size() == 0){
    22. cout << 0 << endl ;
    23. return ;
    24. }else{
    25. cout << (int)(idx.size()) << endl ;
    26. }
    27. }
    28. signed main()
    29. {
    30. IOS
    31. int _ = 1;
    32. cin >> _;
    33. while(_ --) solve();
    34. return 0;
    35. }

     D. Rudolf and the Ball Game

     其实这题最重要的条件是 n * m <= 2e5: 

    那我们可以放心大胆的写二重循环来解决 ;

    用一个bool数组dp记录当前的状态,dp[i]为true表示(i+1)人手里有球,为false表示无球,下一次的变化,用 一个bool数组g表示,遍历(0,n)对每一个dp[i] = true 的进行处理,也就是c[i]==0,1,?的三种情况分别处理即可 ;

    1. #include<bits/stdc++.h>
    2. #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    3. #define endl '\n'
    4. typedef long long LL;
    5. const int mod = 1e9+7;
    6. const int N = 1e3+10;
    7. using namespace std;
    8. inline void solve(){
    9. int n , m , x ; cin >> n >> m >> x ;
    10. vector<int> dp(n) ;
    11. x --; // 处理下标
    12. dp[x] = 1;
    13. for(int i=0;i<m;i++){
    14. int r ; char c ;
    15. cin >> r >> c ;
    16. vector<int> g(n) ;// 代替dp数组的数组
    17. for(int k=0;k<n;k++){
    18. if(dp[k]){
    19. if(c!='1') g[(k+r)%n] = 1 ;
    20. if(c!='0') g[(k-r+n)%n] = 1 ;
    21. }
    22. }
    23. dp = g ;
    24. }
    25. int ans = count(dp.begin(),dp.end(),1) ;
    26. cout << ans << endl ;
    27. for(int i=0;i<n;i++){
    28. if(dp[i]){
    29. cout << i + 1 << " " ;
    30. }
    31. }
    32. cout << endl ;
    33. }
    34. signed main()
    35. {
    36. IOS
    37. int _ = 1;
    38. cin >> _;
    39. while(_ --) solve();
    40. return 0;
    41. }

  • 相关阅读:
    生产环境元空间内存溢出(OOM)的问题排查
    Java 8 Time API
    移动端测试
    为什么劝你要学习Golang以及GO语言(Go语言知识普及)
    【Git】如何在微信小程序中使用码云(Gitee)实现远程代码仓库与本地同步?(新手图文教程)
    集群模式执行Spark程序(第七弹)
    上海鑫吉&百数——让制造型食品企业焕发新生机!
    【Redis】Java Spring操作redis
    chisel入门初步2_2——-1/2次方生成器
    GBase 8c核心特性-分布式事务
  • 原文地址:https://blog.csdn.net/ros275229/article/details/136647460