zoukankan      html  css  js  c++  java
  • AtCoder Beginner Contest 170

    A:

    找出第几位数是0.

     1 #include <iostream>
     2 using namespace std;
     3 int main(void)
     4 {
     5     for(int i=1;i<=5;i++)
     6     {
     7         int x;
     8         cin>>x;
     9         if(x==0)
    10         {
    11             cout<<i<<endl;
    12         }
    13     }
    14     return 0;
    15 }

    B:

    鸡兔同笼,判断是否合理。

     1 #include <iostream>
     2 using namespace std;
     3 int x,y;
     4 int main(void)
     5 {
     6     cin>>x>>y;
     7     if(4*x<y||y<2*x)cout<<"No"<<endl;
     8     else
     9     {
    10         if((4*x-y)%2)cout<<"No"<<endl;
    11         else cout<<"Yes"<<endl;
    12     }
    13     return 0;
    14 }

    C:

    找出距离X最近的没有出现的数。注意答案可能是101.

     1 #include <iostream>
     2 #include <cmath>
     3 using namespace std;
     4 int x,n,a[110];
     5 int main(void)
     6 {
     7     cin>>x>>n;
     8     for(int i=1;i<=n;i++)
     9     {
    10         int y;
    11         cin>>y;
    12         a[y]=1;
    13     }
    14     int minn=110,now=110;
    15     for(int i=105;i>=0;i--)
    16     {
    17         if(!a[i]&&(fabs(i-x)<minn||fabs(i-x)==minn&&i<now))
    18         {
    19             minn=fabs(i-x);
    20             now=i;
    21         }
    22     }
    23     cout<<now<<endl;
    24 }

    D:

    找出数列中不是其他数的倍数的数的个数(拗口)。用小数筛大数。

     1 #include <iostream>
     2 #include <algorithm>
     3 using namespace std;
     4 int n,a[2100000],ans;
     5 int main(void)
     6 {
     7     cin>>n;
     8     for(int i=1;i<=n;i++)
     9     {
    10         int x;
    11         cin>>x;
    12         a[x]++;
    13     }
    14     for(int i=1;i<=1000000;i++)
    15     {
    16         if(a[i]==1)ans++;
    17         if(a[i]>0)
    18         {
    19             for(int j=i;j<=1000000;j+=i)
    20             {
    21                 a[j]=0;
    22             }
    23         }
    24     }
    25     cout<<ans<<endl;
    26 }

    E:

    对每次变换求所有集合最大值中的最小值。用s[]表示各个集合,m表示最大值集合,每次对集合元素删除加入。注意元素有可能相同,所以要用multiset.

     1 #include <iostream>
     2 #include <set>
     3 using namespace std;
     4 int a[210000],k[210000],n,q,num,to;
     5 multiset <int>s[210000];
     6 multiset <int>m;
     7 int main(void)
     8 {
     9     cin>>n>>q;
    10     for(int i=1;i<=n;i++)
    11     {
    12         cin>>a[i]>>k[i];
    13         s[k[i]].insert(a[i]);
    14     }
    15     for(int i=1;i<=200000;i++)
    16     {
    17  
    18         if(s[i].size()>0)
    19         {
    20             m.insert(*(s[i].rbegin()));
    21         }
    22     }
    23     for(int i=1;i<=q;i++)
    24     {
    25         cin>>num>>to;
    26         m.erase(m.find(*s[k[num]].rbegin()));
    27         s[k[num]].erase(s[k[num]].find(a[num]));
    28         if(s[k[num]].size()>0)m.insert(*s[k[num]].rbegin());
    29         if(s[to].size()>0)m.erase(m.find(*s[to].rbegin()));
    30         s[to].insert(a[num]);
    31         m.insert(*s[to].rbegin());
    32         k[num]=to;
    33         cout<<*(m.begin())<<endl;
    34     }
    35     return 0;
    36 }

    F:

    bfs模拟,要注意方向,因为方向不同可能会导致跳过正确路线(迷了好久)。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <vector>
     4 using namespace std;
     5 int H,w,k,X,Y,xx,yy,maxx=23333333;
     6 int q[4]={-1,0,1,0};
     7 int p[4]={0,1,0,-1};
     8 vector<int>l[3];
     9 int main(void)
    10 {
    11     cin>>H>>w>>k>>xx>>yy>>X>>Y;
    12     xx--;yy--;X--;Y--;
    13     char c[H][w];
    14     int f[H][w];
    15     for(int i=0;i<H;i++)
    16     {
    17         for(int j=0;j<w;j++)
    18         {
    19             cin>>c[i][j];
    20             f[i][j]=maxx;
    21         }
    22     }
    23     int h=0,r=1;
    24     l[0].push_back(xx);l[1].push_back(yy);l[2].push_back(0);
    25     f[xx][yy]=0;
    26     while(h<r)
    27     {
    28         for(int i=0;i<4;i++)
    29         {
    30             int x1=l[0][h],y1=l[1][h];
    31             for(int j=0;j<k;j++)
    32             {
    33                 x1+=q[i];y1+=p[i];
    34                 if(x1<0||x1>=H||y1<0||y1>=w||c[x1][y1]=='@'||f[x1][y1]<l[2][h]+1)break;
    35                 if(f[x1][y1]>l[2][h]+1)
    36                 {
    37                 f[x1][y1]=l[2][h]+1;
    38                 l[0].push_back(x1);l[1].push_back(y1);l[2].push_back(l[2][h]+1);
    39                 r++;
    40                 }
    41             }
    42         }
    43         h++;
    44     }
    45     if(f[X][Y]==maxx)cout<<"-1"<<endl;
    46     else cout<<f[X][Y]<<endl;
    47     return 0;
    48 }
  • 相关阅读:
    Linux命令应用大词典-第11章 Shell编程
    Kubernetes 学习12 kubernetes 存储卷
    linux dd命令
    Kubernetes 学习11 kubernetes ingress及ingress controller
    Kubernetes 学习10 Service资源
    Kubernetes 学习9 Pod控制器
    Kubernetes 学习8 Pod控制器
    Kubernetes 学习7 Pod控制器应用进阶2
    Kubernetes 学习6 Pod控制器应用进阶
    Kubernetes 学习5 kubernetes资源清单定义入门
  • 原文地址:https://www.cnblogs.com/yanying7/p/13134369.html
Copyright © 2011-2022 走看看