• Codeforces Round #280 (Div. 2)


    B. Vanya and Lanterns

    题意:给出n个路灯,街道的长度,求出路灯的最小照射半径,使得整条街道都被照亮。

    求出起点到第一盏灯的距离---n盏灯之间的距离/2---最后一盏灯到街尾的距离,找出这些值里面的最大值。

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath>   
     5 #include<algorithm>  
     6 using namespace std;
     7 
     8 typedef long long LL;
     9 int a[10005],b[10005];
    10 
    11 int main()
    12 {
    13     int n,l,i,x,y;
    14     double d;
    15     cin>>n>>l;
    16     for(i=1;i<=n;i++) cin>>a[i];
    17     sort(a+1,a+n+1);
    18     int maxd=-1;
    19     for(i=1;i<n;i++)
    20     {
    21          b[i]=a[i+1]-a[i];        
    22         maxd=max(maxd,b[i]);
    23     }
    24     x=a[1]-0;
    25     y=l-a[n];
    26 //    printf("x=%d
    ",x);
    27 //    printf("y=%d
    ",y);
    28 //    printf("maxd=%d
    ",maxd);
    29 if(2*x>maxd&&x>=y) printf("%.7lf
    ",x*1.0);
    30 else if(y>=x&&2*y>maxd) printf("%.7lf
    ",y*1.0);
    31      
    32 else printf("%.7lf
    ",maxd*0.5);
    33     
    34 }
    View Code

    C. Vanya and Exams

    题意:给出n场考试,每场考试只能考到的最高分r,平均分 再给出现在每场考试的成绩a[i],提高一分需要做的试卷b[i],问至少需要做多少张试卷才能每科都达到平均分

    先按照b[i]从小到大排序,再算出需要做的试卷数量,模拟做试卷

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath>   
     5 #include<algorithm>  
     6 using namespace std;
     7 
     8 typedef long long LL;
     9 struct node{
    10     int x,y;
    11 } a[100005];
    12 
    13 int cmp(node n1,node n2){
    14     if(n1.y!=n2.y) return n1.y<n2.y;
    15     return n1.x<n2.x;
    16 }
    17 
    18 int main()
    19 {
    20     LL tmp=0,sum=0,ans=0,c,i, n,r,avg;
    21     cin>>n>>r>>avg;
    22     for(i=1;i<=n;i++) {
    23         cin>>a[i].x>>a[i].y;
    24         sum+=a[i].x;
    25     }
    26     sort(a+1,a+n+1,cmp);
    27     ans=n*avg-sum;
    28     
    29 //    for(i=1;i<=n;i++)
    30 //    {
    31 //        printf("%d %d
    ",a[i].x,a[i].y);
    32 //    }
    33 //    printf("ans=%d
    
    ",ans);
    34     if(ans<=0) printf("0
    ");
    35     else
    36     {
    37         for(i=1;i<=n;i++){
    38             if(ans<=(r-a[i].x)){
    39                 tmp+=ans*a[i].y;
    40                 c=ans;
    41             }
    42             else{
    43                 tmp+=(r-a[i].x)*a[i].y;
    44                 c=r-a[i].x;
    45             }
    46             ans=ans-c;
    47             if(ans<=0) break;
    48         }
    49         printf("%I64d
    ",tmp);        
    50     }
    51 }
    View Code

    D. Vanya and Computer Game

    题意:给出n只怪兽,vanya打怪的频率为x次每秒,给怪兽的伤害是1/x vova打怪的频率为y次每秒,给怪的伤害是1/y 再给出每只怪兽最多被伤害的次数 问第i只怪兽是被谁打败的

    看的题解= =

    可以转化为vanya每y秒伤害一次怪兽,vova每x秒伤害一次怪兽 再在时间轴上查找被攻击的次数,肯定是能被x或者y或者两者都整除的

     1 #include<iostream>  
     2 #include<cstdio>  
     3 #include<cstring> 
     4 #include <cmath>   
     5 #include<algorithm>  
     6 using namespace std;
     7 
     8 typedef long long LL;
     9 LL i,n,x,y,l,r,m,atk,a;
    10 
    11 void bsearch(LL a)
    12 {
    13     l=1,r=1e15;
    14     while(l<r){
    15         m=(l+r)/2;
    16         atk=m/y+m/x;
    17         if(atk>=a) r=m;
    18         else l=m+1;
    19     }
    20     if(l%x==0&&l%y==0) printf("Both
    ");
    21     else if(l%x==0) printf("Vova
    ");
    22     else printf("Vanya
    ");
    23 }
    24 
    25 int main()
    26 {
    27     cin>>n>>x>>y;
    28     for(i=1;i<=n;i++){
    29         cin>>a;
    30         bsearch(a);
    31     }
    32     return 0;    
    33 }
    View Code

    话说这是做的第一次 cf诶----当时做A的时候发现是一个公式= =1+(1+2)+(1+2+3)---记得等于6分之多少来着---百度到之后,交上去= =居然过啦(好激动)

    加油啊- ----  go--go--go

  • 相关阅读:
    "Key Violation" with ClientDataSet
    c# 的关键字 params,out,ref
    eval && JSON.parse
    json2.js
    C#中的索引器
    call , apply , caller , callee
    iphone&ipad图标去除高亮的光圈效果
    调用系统路线导航
    调科大讯飞出现的问题
    得到汉字首字母在表中的顺序位置
  • 原文地址:https://www.cnblogs.com/wuyuewoniu/p/4313646.html
Copyright © 2020-2023  润新知