• UPC2018组队训练赛第九场


    题目来自2018广西省赛


    A题:Welcome to Collegiate Programming Contest

     1 #include <iostream>
     2  
     3 using namespace std;
     4  
     5 int main()
     6 {
     7     int n;
     8     int t;
     9     cin>>t;
    10     while(t--)
    11     {
    12         cin>>n;
    13         for(int i=0;i<n;i++)
    14         {
    15             if(i)
    16             {
    17                 cout<<" ";
    18             }
    19             cout<<"AC";
    20         }
    21         cout<<endl;
    22     }
    23     return 0;
    24 }
    View Code

    B题:Practice

     1 #include <iostream>
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 const int N=6;
     5 struct node{
     6 int time;
     7 int value;
     8 }op[N];
     9 bool cmp1(node a,node b)
    10 {
    11     if(a.time==b.time)
    12     {
    13         return a.value>b.value;
    14     }
    15     return a.time<b.time;
    16 }
    17 bool cmp2(node a,node b)
    18 {
    19     if(a.value==b.value)
    20     {
    21         return a.time<b.time;
    22     }
    23     return a.value>b.value;
    24 }
    25 int main()
    26 {
    27     int t;
    28     scanf("%d",&t);
    29     int n,m;
    30     while(t--)
    31     {
    32         scanf("%d %d",&n,&m);
    33         for(int i=1;i<=n;i++)
    34         {
    35             scanf("%d",&op[i].time);
    36         }
    37         for(int i=1;i<=n;i++)
    38         {
    39             scanf("%d",&op[i].value);
    40         }
    41         sort(op+1,op+1+n,cmp1);
    42         int i=1,ans1=0,ans2=0,mm=m;
    43         while(mm>=op[i].time)
    44         {
    45             ans1+=op[i].value;
    46             mm-=op[i].time;
    47             i++;
    48         }
    49         i=1;
    50         mm=m;
    51         sort(op+1,op+1+n,cmp2);
    52         while(mm>=op[i].time)
    53         {
    54             ans2+=op[i].value;
    55             mm-=op[i].time;
    56             i++;
    57         }
    58         if(ans1==ans2)
    59         {
    60             printf("SAME
    ");
    61         }
    62         else if(ans1>ans2)
    63         {
    64             printf("A
    ");
    65         }
    66         else
    67         {
    68             printf("B
    ");
    69         }
    70     }
    71     return 0;
    72 }
    73  
    View Code

    C题:Team Match

     1 #include <iostream>
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 const int N=10;
     5 struct node
     6 {
     7     int x,y,z;
     8 };
     9 int a[2*N],vis[2*N];
    10 int ans,n,m;
    11 bool cmp(int x,int y)
    12 {
    13     return x>y;
    14 }
    15 int main()
    16 {    int t;
    17     scanf("%d",&t);
    18     while(t--)
    19     {
    20         scanf("%d %d",&n,&m);
    21         for(int i=1; i<=n; i++)
    22         {
    23             scanf("%d",&a[i]);
    24         }
    25         sort(a+1,a+1+n,cmp);
    26 
    27         ans=0;
    28 
    29         for(int i=1; i<=n; i++)
    30         {
    31             int x=-1,y=-1,z=-1;
    32             for(int j=i+1; j<=n; j++)
    33             {
    34                 for(int k=j+1; k<=n; k++)
    35                 {
    36                     if(vis[i]==0&&vis[j]==0&&vis[k]==0)
    37                     {
    38                         if(a[i]*3+a[j]*2+a[k]>=m)
    39                         {
    40                             x=i;
    41                             y=j;
    42                             z=k;
    43                         }
    44                     }
    45                 }
    46             }
    47             if(x==-1)
    48             {
    49                 break;
    50             }
    51             else
    52             {
    53                 ans++;
    54                 vis[x]=1;
    55                 vis[y]=1;
    56                 vis[z]=1;
    57             }
    58         }
    59         printf("%d
    ",ans);
    60         memset(vis,0,sizeof(vis));
    61     }
    62     return 0;
    63 }
    View Code

    D题:Team Name

    暴力就行了 

    bfs枚举字母的每一种方式,然后再分别比较就行了。。。

     1 #include <bits/stdc++.h>
     2  
     3 using namespace std;
     4  
     5 int n;
     6 char a[105][35];
     7 char ans[105];
     8 bool flag;
     9 void dfs(int dep,int len)
    10 {
    11     if(len==dep)
    12     {
    13         ans[len++] = '';
    14         for(int i=0;i<n;i++)
    15             if(strstr(a[i],ans)) return;
    16         flag = 1;
    17         return;
    18     }
    19     for(int i=0;i<26;i++)
    20     {
    21         ans[dep] = i+'a';
    22         dfs(dep+1,len);
    23         if(flag) return;
    24     }
    25 }
    26 int main()
    27 {
    28     int T;
    29     cin>>T;
    30     while(T--)
    31     {
    32         cin>>n;
    33         for(int i=0;i<n;i++)
    34         {
    35             scanf("%s",a[i]);
    36         }
    37         flag = 0;
    38         int len = 1;
    39         while(!flag)
    40         {
    41             dfs(0,len);
    42             len++;
    43         }
    44         printf("%s
    ",ans);
    45     }
    46     return 0;
    47 }
    View Code

    E题:Travel

     1 #include <iostream>
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4  
     5 int main()
     6 {
     7     int t,n;
     8     scanf("%d",&t);
     9     while(t--)
    10     {
    11         scanf("%d",&n);
    12         if(n==2||n==3)
    13         {
    14             printf("1
    ");
    15             continue;
    16         }
    17         n-=2;
    18         int ans=0,tmp;
    19         if(n%2==0)
    20         {
    21             tmp=pow(2,n/2);
    22             ans=max(ans,tmp);
    23         }
    24         else if(n%2==1)
    25         {
    26             tmp=pow(2,n/2-1);
    27             ans=max(ans,tmp*3);
    28         }
    29         if(n%3==0)
    30         {
    31             tmp=pow(3,n/3);
    32             ans=max(ans,tmp);
    33         }
    34         else if(n%3==1)
    35         {
    36             tmp=pow(3,n/3-1);
    37             ans=max(ans,tmp*4);
    38         }
    39         else
    40         {
    41             tmp=pow(3,n/3);
    42             ans=max(ans,tmp*2);
    43         }
    44         printf("%d
    ",ans);
    45     }
    46     return 0;
    47 }
    View Code

    F题:Stadium

     1 #include <iostream>
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 const int N=10;
     5 double a[N];
     6 bool cmp(double x,double y)
     7 {
     8     return x>y;
     9 }
    10 bool check(double aa,double b,double c)
    11 {
    12     if(aa+b>c&&aa+c>b&&b+c>aa)
    13     {
    14         return true;
    15     }
    16     return false;
    17 }
    18 int main()
    19 {
    20     int t;
    21     scanf("%d",&t);
    22     while(t--)
    23     {
    24         for(int i=1;i<=4;i++)
    25         {
    26             scanf("%lf",&a[i]);
    27         }
    28         sort(a+1,a+5,cmp);
    29         double ans=0;
    30         for(int i=1;i<=3;i++)
    31         {
    32             for(int j=i+1;j<=4;j++)
    33             {
    34                 double aa,b,c;
    35                 b=0;
    36                 aa=a[i]-a[j];
    37                 for(int k=1;k<=4;k++)
    38                 {
    39                     if(k!=i&&k!=j&&b==0)
    40                     {
    41                         b=a[k];
    42                     }
    43                     else if(k!=i&&k!=j&&b!=0)
    44                     {
    45                         c=a[k];
    46                     }
    47                 }
    48                 if(check(aa,b,c))
    49                 {
    50                     double cos1=(b*b+c*c-aa*aa)/(2*b*c);
    51                     double sin1=sqrt((1-cos1*cos1));
    52                     double area=b*c*sin1;
    53                     double h=area/aa;
    54                     area/=2;
    55                     area+=a[j]*h;
    56                     ans=max(ans,area);
    57                 }
    58             }
    59         }
    60         if(ans==0)
    61         {
    62             printf("IMPOSSIBLE
    ");
    63             continue;
    64         }
    65         printf("%.2lf
    ",ans);
    66     }
    67     return 0;
    68 }
    View Code

    G题:GXBalloons

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 struct node
     4 {
     5     int x,y,pos;
     6 }mp[10005];
     7 bool cmp1(node a,node b)
     8 {
     9     return a.x<b.x;
    10 }
    11 bool cmp2(node a,node b)
    12 {
    13     return a.y<b.y;
    14 }
    15 int fa[10005];
    16 int get(int x)
    17 {
    18     if(x==fa[x])return x;
    19     return fa[x]=get(fa[x]);
    20 }
    21 void Union(int x,int y)
    22 {
    23     fa[get(x)]=get(y);
    24 }
    25 int main()
    26 {
    27     int t,n,k;
    28     scanf("%d",&t);
    29     while(t--)
    30     {
    31         scanf("%d%d",&n,&k);
    32         for(int i=1;i<=n;i++)
    33         {
    34             scanf("%d%d",&mp[i].x,&mp[i].y);
    35             mp[i].pos=i;
    36         }
    37         for(int i=1;i<=n;i++)
    38         {
    39             fa[i]=i;
    40         }
    41         sort(mp+1,mp+1+n,cmp1);
    42         for(int i=2;i<=n;i++)
    43         {
    44             if(mp[i].x-mp[i-1].x<=k)
    45             {
    46                 Union(mp[i].pos,mp[i-1].pos);
    47             }
    48         }
    49         sort(mp+1,mp+1+n,cmp2);
    50         for(int i=2;i<=n;i++)
    51         {
    52             if(mp[i].y-mp[i-1].y<=k)
    53             {
    54                 if(get(mp[i].pos)!=get(mp[i-1].pos))
    55                 {
    56                     Union(mp[i].pos,mp[i-1].pos);
    57                 }
    58             }
    59         }
    60         int ans=0;
    61         for(int i=1;i<=n;i++)
    62         {
    63 //            cout<<fa[i]<<" "<<get(mp[i].pos)<<endl;
    64             if(i==fa[i])
    65                 ans++;
    66         }
    67         printf("%d
    ",ans);
    68     }
    69 //        cout << "Hello world!" << endl;
    70     return 0;
    71 }
    View Code

    H题:GXBoard

     1 #include <iostream>
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4  
     5 int main()
     6 {
     7     int t;
     8     int n;
     9     string s[105];
    10     cin>>t;
    11     while(t--)
    12     {
    13         cin>>n;
    14         int ans=0;
    15         for(int i=0;i<n;i++)
    16         {
    17             cin>>s[i];
    18             ans+=s[i].size();
    19         }
    20         cout<<ans<<endl;
    21     }
    22     return 0;
    23 }
    View Code

    I题:Rank LED

    打表找规律

     1 #include <bits/stdc++.h>
     2  
     3 using namespace std;
     4  
     5 int a[10]={6,2,5,5,4,5,6,3,7,6};
     6  
     7 int main()
     8 {
     9 //    freopen("in.txt","r",stdin);
    10 //    freopen("out.txt","w",stdout);
    11     int T;
    12     cin>>T;
    13     while(T--)
    14     {
    15         int n;
    16         cin>>n;
    17         char s[105];
    18         scanf("%s",s);
    19         int cnt = 0;
    20         for(int i=0;i<n;i++)
    21             cnt+=a[s[i]-'0'];
    22         int num7 = 0;
    23         int flag = 0;
    24         while(cnt>=14)
    25         {
    26             if(cnt==17)
    27             {flag = 1;break;}
    28             num7++;
    29             cnt-=7;
    30         }
    31         string ans="";
    32         if(flag)
    33         {
    34             ans+="200";
    35             for(int i=0;i<num7;i++)
    36                 ans+="8";
    37             cout<<ans<<endl;
    38             continue;
    39         }
    40  
    41         if(cnt==2)
    42             ans += "1";
    43         else if(cnt==3)
    44             ans+="7";
    45         else if(cnt==4)
    46             ans+="4";
    47         else if(cnt==5)
    48             ans+="2";
    49         else if(cnt==6)
    50             ans+="6";
    51         else if(cnt==7)
    52             ans+="8";
    53         else if(cnt==8)
    54             ans+="10";
    55         else if(cnt==9)
    56             ans+="18";
    57         else if(cnt==10)
    58             ans+="22";
    59         else if(cnt==11)
    60             ans+="20";
    61         else if(cnt==12)
    62             ans+="28";
    63         else if(cnt==13)
    64             ans+="68";
    65         for(int i=0;i<num7;i++)
    66         {
    67             ans+="8";
    68         }
    69         cout<<ans<<endl;
    70     }
    71 }
    View Code

    J题:Pot

    求所有数的gcd,然后乘以n

     1 #include <iostream>
     2 #include<bits/stdc++.h>
     3 using namespace std;
     4 int t,n,x[200];
     5 int gcd(int a,int b)
     6 {
     7     return b?gcd(b,a%b):a;
     8 }
     9 int main()
    10 {
    11     cin>>t;
    12     while(t--)
    13     {
    14         cin>>n;
    15         int p=1;
    16         for(int i=0;i<n;i++)
    17         {
    18             cin>>x[i];
    19 //            p=gcd(p,x);
    20         }
    21         if(n==1)
    22         {
    23             cout<<x[0]<<endl;
    24             continue;
    25         }
    26         p=gcd(x[0],x[1]);
    27         for(int i=2;i<n;i++)
    28             p=gcd(x[i],p);
    29         int ans=p*n;
    30         cout<<ans<<endl;
    31     }
    32     return 0;
    33 }
    View Code

    如有错误,请指正,感谢!
  • 相关阅读:
    一套完整的javascript面试题
    遇到的java.lang.NoClassDefFoundError解决了
    Win7下启动Internet信息服务(IIS)管理器
    我的第一个专业博客
    “用NetBeans打开项目时项目名变成红色”问题解决
    Struts2框架实现计算器功能
    MyEclipse移动包到另一个项目时出现错误:Resource is out of sync with the file system.
    制作Javascript弹出窗口技巧九则
    windows 的鼠标事件(Event)
    Javascript使用cookie
  • 原文地址:https://www.cnblogs.com/scott527407973/p/9567405.html
Copyright © 2020-2023  润新知