zoukankan      html  css  js  c++  java
  • 2019CCSU第二次校赛部分题解(A,B,E,G)

    A

    签到题,考虑到数据范围很小直接枚举1,2,3分别取多少个就做完了

     1 #define IO std::ios::sync_with_stdio(false);
     2 #define bug(x) cout<<x<<" "<<endl
     3 #include <bits/stdc++.h>
     4 #define itor ::iterator
     5 using namespace std;
     6 #define pb push_back
     7 typedef long long ll;
     8 typedef double db;
     9 const int N=1e6+10;
    10 int T,n,m,kase;
    11 int a[10],vis[100];
    12 int main(){
    13     scanf("%d",&T);
    14     while(T--){
    15         scanf("%d%d",&kase,&n);
    16         for(int i=1;i<=3;i++)a[i]=0;
    17         for(int i=1;i<=10;i++){
    18             int x;
    19             scanf("%d",&x);
    20             a[x]++;
    21         }
    22         int flag=0;
    23         for(int i=0;i<=a[1];i++){
    24             for(int j=0;j<=a[2];j++){
    25                 for(int k=0;k<=a[3];k++){
    26                     int res=i+j*2+k*3;
    27                     if(res==n){
    28                         flag=1;
    29                         break;
    30                     }
    31                 }
    32             }
    33         }
    34         printf("%d ",kase);
    35         if(flag)printf("YES
    ");
    36         else printf("NO
    ");
    37     }
    38 }

    B

    首先对于这种很有可能是找规律的题,我们可以不去想dp啊

    遇事不对先打表!

     1 #define IO std::ios::sync_with_stdio(false);
     2 #define bug(x) cout<<x<<" "<<endl
     3 #include <bits/stdc++.h>
     4 #define itor ::iterator
     5 using namespace std;
     6 #define pb push_back
     7 typedef long long ll;
     8 typedef double db;
     9 const int N=1e6+10;
    10 int vis[100][2],k;
    11 int ans=0;
    12 int check(int x,int y){
    13     if(x<1||y<1||y>2)return 0;
    14     return 1;
    15 }
    16 int dx[10]={0,0,1,-1};
    17 int dy[10]={1,-1,0,0};
    18 void dfs(int x,int y,int h){
    19     if(h==k){
    20         ans++;
    21         return;
    22     }
    23     for(int i=0;i<4;i++){
    24         int x1=x+dx[i];
    25         int y1=y+dy[i];
    26         if(check(x1,y1)&&!vis[x1][y1]){
    27             vis[x1][y1]=1;
    28             dfs(x1,y1,h+1);
    29             vis[x1][y1]=0;
    30         }
    31     }
    32 }
    33 int main(){
    34     for(int i=1;i<=20;i++){
    35         memset(vis,0,sizeof(vis));
    36         ans=0;
    37         k=i;
    38         vis[1][1]=1;
    39         dfs(1,1,0);
    40         printf("i=%d: %d
    ",i,ans);
    41     }
    42 }

    dfs打表发现答案跟是前两项之和然后和奇偶性也有关,

    然后这个题就很水了。。。

    #define IO std::ios::sync_with_stdio(false);
    #define bug(x) cout<<x<<" "<<endl
    #include <bits/stdc++.h>
    #define itor ::iterator
    using namespace std;
    #define pb push_back
    typedef long long ll;
    typedef double db;
    const int N=1e6+10;
    int T,k,n,mod=1e4+7;
    int a[10005];
    void init(){
        a[1]=2,a[2]=3;
        for(int i=3;i<=1000;i++){
            if(i%2){
                a[i]=(a[i-1]+a[i-2]+1)%mod;
            }
            else a[i]=(a[i-1]+a[i-2])%mod;
        }
    }
    int main(){
        init();
        scanf("%d",&T);
        while(T--){
            scanf("%d%d",&k,&n);
            printf("%d %d
    ",k,a[n]);
        }
    }

    E

    有点恶心的题。。竟然没A出来

    显然我们可以枚举正确时间,然后再拿时钟时间和误差时间去配对

    配对我们可以排序然后一直扫一遍,注意输入输出的各种细节即可

    #define IO std::ios::sync_with_stdio(false);
    #define bug(x) cout<<x<<" "<<endl
    #include <bits/stdc++.h>
    #define itor ::iterator
    using namespace std;
    #define pb push_back
    typedef long long ll;
    typedef double db;
    const int N=1e3+10;
    int T,n,m,kase;
    int mod=720;
    int a[20],b[20],vis[20],d[20];
    char s[100];
    int main(){
        scanf("%d",&T);
        while(T--){
            scanf("%d%d",&kase,&n);
            for(int i=1;i<=n;i++){
                int x,y;
                scanf("%d:%d",&x,&y);
                x%=12;
                x=x*60+y;
                a[i]=x;
            }
            for(int i=1;i<=n;i++){
                scanf("%s",s);
                int len=strlen(s);
                int k=0;
                if(s[0]=='+')k++;
                int x=0,y=0,id;
                for(int j=1;;j++){
                    if(s[j]==':'){
                        id=j;
                        break;
                    }
                    x=x*10+s[j]-48;
                }
                x%=12;
                for(int j=id+1;j<len;j++){
                    y=y*10+s[j]-48;
                }
                x=x*60+y;
                if(k){
                    b[i]=x;
                }
                else b[i]=-x;
            }
            int ans=0,t;
            sort(a+1,a+1+n);
            for(int i=0;i<=719;i++){
                for(int j=1;j<=n;j++){
                    d[j]=(i+b[j]+mod)%mod;
                }
                sort(d+1,d+1+n);
                int flag=0;
                for(int j=1;j<=n;j++){
                    if(d[j]!=a[j]){
                        flag=1;
                        break;
                    }
                }
                if(!flag){
                    ans++;
                    t=i;
                }
            }
            printf("%d ",kase);
            if(ans>1)printf("%d
    ",ans);
            else if(ans==0)printf("none
    ");
            else{
                int x=t/60,y=t%60;
                if(x==0)printf("12:%02d
    ",y);
                else printf("%d:%02d
    ",x,y);
            }
        }
    }

    G

    这题不会写,看网友大佬题解看懂的

    传送门:https://www.cnblogs.com/artoriax/p/10576496.html

  • 相关阅读:
    Activity之间的数据传递
    解析JSON
    使用HTTP协议访问网路
    WebView的初体验
    Alarm机制用于定时服务
    IntentService和Service执行子线程对比
    前台服务
    Android四大组件之服务
    异步消息处理机制,UI更新
    Git学习
  • 原文地址:https://www.cnblogs.com/ccsu-kid/p/10585393.html
Copyright © 2011-2022 走看看