zoukankan      html  css  js  c++  java
  • BestCoder Round #86 A B C

    这次BC终于不像上次一样惨烈 终于A了三题……

    终测ing……

    发一波题解……

    A.Price List

    A题十分无脑 只要把所有数加起来存到sum里 询问的时候大于sum输出1 否则输出0就行了……

    犹豫了好久 怎么会这么简单……

    看群里好多人卡在了%I64d……

     1 #include<stdio.h>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<math.h>
     5 #include<string.h>
     6 #include<string>
     7 #include<map>
     8 #include<vector>
     9 #include<queue>
    10 #define M(a,b) memset(a,b,sizeof(a))
    11 using namespace std;
    12 int main(){
    13     int T;
    14     scanf("%d",&T);
    15     while(T--){
    16         int n,m;
    17         scanf("%d%d",&n,&m);
    18         long long sum=0,a;
    19         for(int i=0;i<n;i++){
    20             scanf("%I64d",&a);
    21             sum+=a;
    22         }
    23         for(int i=0;i<m;i++){
    24             scanf("%I64d",&a);
    25             if(a>sum) printf("1");
    26             else printf("0");
    27         }
    28         puts("");
    29     }
    30     return 0;
    31 }

    B.NanoApe Loves Sequence

    B题就是自行模拟一下就好了……

    cha[i]是这个数和前一个数的差……

    记录最大的差maxc和i的位置loc……

    首先处理去掉开头和结尾的情况……

    然后处理中间的情况……

    处理到loc和loc-1单独处理……

    边界没处理好 WA了6次……

    感觉是做麻烦了……

     1 #include<stdio.h>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<math.h>
     5 #include<string.h>
     6 #include<string>
     7 #include<map>
     8 #include<vector>
     9 #include<queue>
    10 #define M(a,b) memset(a,b,sizeof(a))
    11 using namespace std;
    12 int num[100005];
    13 int cha[100005];
    14 int main(){
    15     int T;
    16     scanf("%d",&T);
    17     while(T--){
    18         int n;
    19         int loc;
    20         int maxc=-1;
    21         int maxn=-1;
    22         long long ans=0;
    23         scanf("%d",&n);
    24         scanf("%d",&num[0]);
    25         for(int i=1;i<n;i++){
    26             scanf("%d",&num[i]);
    27             cha[i]=abs(num[i]-num[i-1]);
    28             if(cha[i]>maxc){
    29                 maxc=cha[i];
    30                 loc=i;
    31             }
    32         }
    33         for(int i=2;i<n;i++){
    34             if(cha[i]>maxn) maxn=cha[i];
    35         }
    36 //        printf("%d
    ",maxn);
    37         ans+=maxn;
    38         maxn=-1;
    39          for(int i=1;i<n-1;i++){
    40             if(cha[i]>maxn) maxn=cha[i];
    41          }
    42 //         printf("%d
    ",maxn);
    43         ans+=maxn;
    44         for(int i=1;i<n-1;i++){
    45             if(loc==i){
    46                 int used=-1;
    47                 for(int j=1;j<n;j++){
    48                     if(j==i+1) continue;
    49                     if(j==i){
    50                         if(used<abs(num[i+1]-num[i-1]))
    51                             used=abs(num[i+1]-num[i-1]);
    52                         }
    53                     else if(cha[j]>used) used=cha[j];
    54                 }
    55                 ans+=used;
    56                 continue;
    57             }
    58             if(loc-1==i){
    59                 int used=-1;
    60                 for(int j=1;j<n;j++){
    61                     if(j==loc) continue;
    62                     if(j==loc-1){
    63                         if(used<abs(num[j+1]-num[j-1]))
    64                             used=abs(num[j+1]-num[j-1]);
    65                         }
    66                     else if(cha[j]>used) used=cha[j];
    67                 }
    68                 ans+=used;
    69                 continue;
    70             }
    71             if(maxc>abs(num[i+1]-num[i-1])) ans+=maxc;
    72             else ans+=abs(num[i+1]-num[i-1]);
    73 //            printf("%I64d
    ",ans);
    74         }
    75         printf("%I64d
    ",ans);
    76     }
    77     return 0;
    78 }

    C.NanoApe Loves Sequence Ⅱ

    记录下当前位置是从开始第几大……
    然后累加当前位置结尾的倒数第k大的位置……
    讲道理这道题很看感觉……
     1 #include<stdio.h>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<math.h>
     5 #include<string.h>
     6 #include<string>
     7 #include<map>
     8 #include<vector>
     9 #include<queue>
    10 #define M(a,b) memset(a,b,sizeof(a))
    11 using namespace std;
    12 int num[200005];
    13 int p[200005];
    14 int main(){
    15     int T;
    16     scanf("%d",&T);
    17     while(T--){
    18         int n,m,k;
    19         scanf("%d%d%d",&n,&m,&k);
    20         int tmp=0;
    21         long long ans=0;
    22         for(int i=0;i<n;i++){
    23             scanf("%d",&num[i]);
    24             if(num[i]>=m){
    25                 p[tmp++]=i;
    26                 if(tmp>=k)
    27                     ans+=(p[tmp-k]+1);
    28             }
    29             else if(i+1>=k&&tmp>=k)
    30                 ans+=(p[tmp-k]+1);
    31         }
    32         printf("%I64d
    ",ans);
    33     }
    34     return 0;
    35 }
  • 相关阅读:
    C++ 学习笔记 (七)继承与多态 virtual关键字的使用场景
    C++ 学习笔记 (六) 继承- 子类与父类有同名函数,变量
    C++ 学习笔记(五)类的知识小结一(重载,友元函数,静态成员,new)
    C++ 学习笔记(四)类的内存分配及this指针
    C++ 学习笔记(三)string 类
    C++ 学习笔记(二) const的加强
    C++ 学习笔记(一) cout 与printf 的不同之处
    C++ 学习笔记 开篇
    Kali root用户无法登录GUI界面
    解决方案——Manjaro安装卡在Misc postinstall configurations
  • 原文地址:https://www.cnblogs.com/general10/p/5744908.html
Copyright © 2011-2022 走看看