• codeforces 412div.2


    点击题号进入题面

    ---------

    新笔记本终于到了,可以愉快的写代码了..

    ------

    A 807A

    题意:

      给一个codeforces比赛的final standing和比赛前后的rating值,保证不存在一样的rating,

      问你是否能知道本场比赛是否计分,如果不能判断则输出maybe

    分析:

      遍历即可

      有人变化直接输出rated,无人变化如果不是顺序则unrated,否则maybe

     1 /**********************
     2 *@Name:
     3 *
     4 *@Author: Nervending
     5 *@Describtion:
     6 *@DateTime: 2018-02-04 03:39:20
     7 ***********************/
     8 #include <bits/stdc++.h>
     9 using namespace std;
    10 const int maxn=1e5+10;
    11 const int INF=0x3f3f3f3f;
    12 int n;
    13 int a[maxn];
    14 int b[maxn];
    15 int c[maxn];
    16 int cmp(int a,int b){
    17     return a>b;
    18 }
    19 int main(){
    20 //#define test
    21 #ifdef test
    22     freopen("in.txt","r",stdin);
    23     freopen("out.txt","w",stdout);
    24 #endif
    25     cin>>n;
    26     for(int i=0;i<n;i++){
    27         cin>>a[i]>>b[i];
    28         c[i]=a[i];
    29     }
    30     sort(c,c+n,cmp);
    31     for(int i=0;i<n;i++){
    32         if(a[i]!=b[i]){
    33             cout<<"rated";
    34             return 0;
    35         }
    36     }
    37     for(int i=1;i<n;i++){
    38         if(a[i]>a[i-1]){
    39             cout<<"unrated";
    40             return 0;
    41         }
    42     }
    43     cout<<"maybe";
    44 
    45 #ifdef test
    46     fclose(stdin);
    47   fclose(stdout);
    48     system("out.txt");
    49 #endif
    50     return 0;
    51 }
    View Code

    ------

    B 807B

    题意:

      在一场CF比赛中,需要至少达到y分,当前以及获得足够的x分,x>=y

      除此之外,为了获得奖品,你需要改变自己的分数使得当前分数x经过下列伪代码获得的名次值中存在你的当前名次a

      通过hack的成功和失败可以改变自己的分数x,成功加100失败减50

      求最小的成功次数,输入保证有解

    i := (s div 50) mod 475
    repeat 25 times:
    i := (i * 96 + 42) mod 475
    print (26 + i)

    分析:

      枚举即可

      先尝试只失败不成功

      然后尝试成功,每次测试也尝试额外失败一次的情况

     1 /**********************
     2 *@Name:
     3 *
     4 *@Author: Nervending
     5 *@Describtion:
     6 *@DateTime: 06/02/18 22:05
     7 ***********************/
     8 #include <bits/stdc++.h>
     9 using namespace std;
    10 const int maxn=1e5+10;
    11 const int maxm=1e6+10;
    12 const int INF=0x3f3f3f3f;
    13 #define show(x) cout<<#x<<"="<<x<< endl
    14 int a,x,y;
    15 int check(int s){
    16     int na=(s/50)%475;
    17     for(int i=0;i<25;i++){
    18         na=(na*96+42)%475;
    19         if(a==na+26)return true;
    20     }
    21     return false;
    22 }
    23 
    24 int main() {
    25 //#define test
    26 #ifdef test
    27     freopen("in.txt","r",stdin);
    28     freopen("out.txt","w",stdout);
    29 #endif
    30     cin>>a>>x>>y;
    31     for(int i=x;i>=y;i-=50){
    32         if(check(i)){
    33             cout<<0;
    34             return 0;
    35         }
    36     }
    37     for(int i=x+100,j=1;;j++,i+=100){
    38         if(check(i)||check(i-50)){
    39             cout<<j;
    40             return 0;
    41         }
    42     }
    43     
    44 
    45 #ifdef test
    46     fclose(stdin);
    47     fclose(stdout);
    48     system("out.txt");
    49 #endif
    50     return 0;
    51 }
    View Code

    -------

    C 807C

    题意;

      你当前的成功次数是x,总次数是y,你希望比值达到a/b,求最小的尝试次数,不存在输出-1

    分析:

      可以发现,只需要总次数达到b的整数倍即可,最小的合法倍数必然为解

      成功次数只要为正值且小于总次数即可

      二分枚举倍数即可以获得答案

      注意是可能不存在解的,比如a==b而x!=y,或者a==0而x!=0,可以预先剪枝

     1 /**********************
     2 *@Name:
     3 *
     4 *@Author: Nervending
     5 *@Describtion:
     6 *@DateTime:
     7 ***********************/
     8 #include <bits/stdc++.h>
     9 #define show(x) cout<<#x<<"="<<x<<endl
    10 using namespace std;
    11 const int maxn=1e5+10;
    12 const int maxm=1e6+10;
    13 const int INF=0x3f3f3f3f;
    14 typedef long long ll;
    15 typedef unsigned long long ull;
    16 inline long long gcd(long long a,long long b){while(b)b=(a%b)+(a=b)-b;return a;}
    17 inline long long lcm(long long a,long long b){return a*b/gcd(a,b);}
    18 ll casn,n,m,k;
    19 ll a,b,x,y;
    20 
    21 int main(){
    22 //#define test
    23 #ifdef test
    24     freopen("in.txt","r",stdin);
    25     freopen("out.txt","w",stdout);
    26 #endif
    27 
    28     cin>>casn;
    29     while(casn--){
    30         cin>>x>>y>>a>>b;
    31         if((a==b&&x!=y)||(a==0&&x!=0)){
    32             cout<<-1<<endl;
    33             continue;
    34         }
    35         ll ans=-1;
    36         ll l=0,r=1e10;
    37         while(l<=r){
    38             ll mid=(l+r)>>1;
    39             ll ac=mid*a;
    40             ll at=mid*b;
    41             if(ac>=x&&at>=y&&ac-x<=at-y){
    42                 ans=at-y;
    43                 r=mid-1;
    44             }else {
    45                 l=mid+1;
    46             }
    47         }
    48         if(ans==-1)cout<<-1<<endl;
    49         else cout<<ans<<endl;
    50     }
    51 
    52 #ifdef test
    53     fclose(stdin);
    54   fclose(stdout);
    55     system("out.txt");
    56 #endif
    57     return 0;
    58 }
    View Code
  • 相关阅读:
    机器学习算法(SVM)公开课4月25日开讲
    手把手教你做文本挖掘
    ActiveReports公开课开启报名,学习如何解决中国式复杂报表难题
    DevExpress免费公开课,讲解即将发布的16.2新版功能
    Stimulsoft入门视频
    免费公开课,讲解强大的文档集成组件Aspose,现在可报名
    中国式商业智能报表ActiveReports免费公开课,10月20日开讲
    JavaScript图表FusionCharts免费在线公开课,由印度原厂技术工程师主讲,10月13日发车
    LoadRunner免费公开课,惠普金牌讲师亲授
    DevExpress VCL v16.1.3发布
  • 原文地址:https://www.cnblogs.com/nervendnig/p/8427289.html
Copyright © 2020-2023  润新知