zoukankan      html  css  js  c++  java
  • Codeforces Round #654 (Div. 2)题解

    A. Magical Sticks

    思路:

    尽可能的凑成长度为$n$的木棍,答案为$(n+1)/2$

    #include<iostream>
    #include<algorithm>
     using namespace std;
     int main()
     {
         int t;
         cin>>t;
         while(t--){
             int n;
             cin>>n;
             cout<<(n+1)/2<<endl;
         }
        return 0;
     }
    View Code

    B. Magical Calendar

    思路:

    分成两种情况:

    ①$k≤r$,答案就为$(1+k-1)*(k-1)/2+1$

    ②$k>r$,答案就为$(1+r)*r/2$

    #include<iostream>
    #include<algorithm>
     using namespace std;
     typedef long long ll;
     int main()
     {
         int t;
         cin>>t;
         while(t--){
             ll k,r,ans;
             cin>>k>>r;
             if(k<=r){
                 ans=(1+k-1)*(k-1)/2+1;
             }
             else ans=(1+r)*r/2;
             cout<<ans<<endl;
         }
         return 0;
     }
    View Code

    C. A Cookie for You

    思路:

    可以发现,第一类客人有什么就吃什么,但是第二类客人只吃少的那部分

    所以,我们就只需要判断第二类客人够不够吃,已经总量够不够吃就好了

    #include<iostream>
    #include<algorithm>
     using namespace std;
     typedef long long ll;
     int main()
     {
         int t;
         cin>>t;
         while(t--){
             ll a,b,n,m;
             cin>>a>>b>>n>>m;
             if(min(a,b)>=m&&a+b>=n+m) cout<<"Yes"<<endl;
             else cout<<"No"<<endl;
         }
        return 0;
     }
    View Code

    D. Grid-00100

    思路:

    可以发现,答案要么为$2$要么为$0$

    通过贪心,我们知道要将$1$尽可能均匀的放置在每行每列

    构造方法为,现在先将$1$放置在主对角线上,然后再放置在右上角的副对角线上,再放在主对角左下放的副对角线上,依次交替,直到$k$为$0$

    最后,如果$k%n==0$,答案就为$0$,否则为$2$

    #include<bits/stdc++.h>
    using namespace std;
    const int N= 1e3+3;
    int t,n,k;
    int a[N];
    int mat[N][N];
    int main(){
        cin>>t;
        while(t--){
            cin>>n>>k;
            for(int i=0;i<n;i++) a[i]=i;
            memset(mat,0,sizeof mat);
            int now=0;
            for(int i=1;i<=k;i++){
                mat[a[now]][now]=1;
                a[now]=(a[now]+1)%n;
                now=(now+1)%n;
            }
            if(k%n==0) cout<<0;
            else cout<<2;
            cout<<endl;
            for(int i=0;i<n;i++){
               for(int j=0;j<n;j++) cout<<mat[i][j];
               cout<<endl;
            }
        }
    }
    View Code
  • 相关阅读:
    关于 flutter_boost splash加载动画
    [BS-23] AFN网络请求上拉/下拉刷新的细节问题总结
    [BS-22] Objective-C中nil、Nil、NULL、NSNull的区别
    [BS-21] 关于OC中对象与指针的思考
    [BS-20] 导航控制器和视图控制器在添加控制器的区别
    ios runtime swizzle
    关于C、OC、C++、OC++、Swift的一些常识
    iOS多线程知识总结--GCD
    使用代码创建AutoLayout约束
    iOS中NSLog输出格式大全
  • 原文地址:https://www.cnblogs.com/overrate-wsj/p/13224178.html
Copyright © 2011-2022 走看看