zoukankan      html  css  js  c++  java
  • codeforces #304 DIV2

    先送上一篇题解(虽然全英文的):http://codeforces.com/blog/entry/18034

    A题:http://codeforces.com/problemset/problem/546/A

    没什么好说的,SB题

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<string>
     5 #include<cmath>
     6 #include<algorithm>
     7 #include<cctype>
     8 #include<vector>
     9 #include<stack>
    10 #include<map>
    11 using namespace std;
    12 int n,k,w;
    13 int main()
    14 {
    15     while(cin>>k>>n>>w)
    16     {
    17         int sum;
    18         sum=(1+w)*w*k/2;
    19         int num;
    20         num=sum-n;
    21         if(num<=0)
    22             cout<<"0"<<endl;
    23         else
    24             cout<<num<<endl;
    25     }
    26     return 0;
    27 }
    View Code

     B题:http://codeforces.com/problemset/problem/546/B

    这题也没啥好说的,赛场上完全应该搞出来的,但是自己作死,不看后来官方给的题目修改的提示,然后一直WA在第六组,后来改了以后又是因为细节问题,一直WA在第21组,经最终修改,终于A了。就是将其排序一下,然后记录每个数最少加多少,才能让数列里面的数各不相同,暴力即可,不过注意的就是记录数组的范围应该是6000,因为后来题目改了,a[i]可以大于n,所以最大就是3000+3000=6000

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<string>
     5 #include<cmath>
     6 #include<vector>
     7 #include<algorithm>
     8 #include<map>
     9 #include<stack>
    10 using namespace std;
    11 const int maxn=6000+10;
    12 int a[maxn],n;
    13 int vis[maxn];
    14 int main()
    15 {
    16     while(cin>>n)
    17     {
    18         memset(vis,0,sizeof(vis));
    19         for(int i=0;i<n;i++)
    20         {
    21             scanf("%d",&a[i]);
    22             vis[a[i]]++;
    23         }
    24         sort(a,a+n);
    25         long long  sum=0;
    26         for(int i=0;i<n;i++)
    27             if(a[i]==a[i+1])
    28         {
    29             int j;
    30             for(j=1;;j++)
    31             {
    32                 if(vis[a[i]+j]==0)
    33                 {
    34                     a[i]=a[i]+j;
    35                     ++vis[a[i]];
    36                     break;
    37                 }
    38             }
    39             sum+=j;
    40         }
    41         cout<<sum<<endl;
    42     }
    43     return 0;
    44 }
    View Code

     C题:http://codeforces.com/problemset/problem/546/C

    其实是个水题,赛场上完全可以搞出来的,但是我也不知道为什么用栈模拟不行,后来改用了vector就可以了,纯粹的模拟题,很水,最后结束那个地方处理一下就行

    附上一篇vector的用法介绍:http://codeforces.com/problemset/problem/546/C

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<string>
     6 #include<cmath>
     7 #include<cctype>
     8 #include<vector>
     9 #include<stack>
    10 #include<map>
    11 using namespace std;
    12 vector <long long> s1,s2;
    13 int main()
    14 {
    15     long long n,k1,k2;
    16     cin>>n;
    17     cin>>k1;
    18     vector <long long> s1(k1),s2(n-k1);
    19     for(long long i=0;i<s1.size();i++)
    20         cin>>s1[i];
    21         vector<long long> temps1=s1;
    22     cin>>k2;
    23     for(long long i=0;i<s2.size();i++)
    24         cin>>s2[i];
    25         vector<long long> temps2=s2;
    26     long long cnt=0;
    27     for(int i=0;i<100000;i++)
    28     {
    29         cnt++;
    30         if(s1.front()>s2.front())
    31         {
    32             long long temp1,temp2;
    33             temp1=s1.front(); temp2=s2.front();
    34             s1.erase(s1.begin()); s2.erase(s2.begin());
    35             s1.push_back(temp2);  s1.push_back(temp1);
    36         }
    37         else
    38         {
    39             long long temp1,temp2;
    40             temp1=s1.front(); temp2=s2.front();
    41             s1.erase(s1.begin());  s2.erase(s2.begin());
    42             s2.push_back(temp1); s2.push_back(temp2);
    43         }
    44         if(s1.size()==0)
    45         {
    46             cout<<cnt<<" 2"<<endl;;
    47             return 0;
    48         }
    49         else if(s2.size()==0)
    50         {
    51             cout<<cnt<<" 1"<<endl;
    52             return 0;
    53         }
    54     }
    55     cout<<"-1"<<endl;;
    56     return 0;
    57 }
    View Code
  • 相关阅读:
    wgcloud问题处理——被监控的客户机掉线
    WGCLOUD下发指令时候如何屏蔽linux敏感字符
    WGCLOUD左侧菜单如何保持展开状态
    zerotier 实现 minecraft 局域网联机 | 我的世界联机教程 | minecraft联机
    [ UVa 12096 详解] The Set Stack Computer 集合栈计算机 | map、set、vector、stack、宏函数等知识点简单应用
    [ Uva 101 详解 ] the block problem 木块问题
    Python操作数据库基本操作-sqlalchemy
    统计目录下程序源程序的行数之和-Python
    凯撒密码C++实现
    【题解】[AGC036F] Square Constraints
  • 原文地址:https://www.cnblogs.com/wolf940509/p/4523676.html
Copyright © 2011-2022 走看看