• 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 }
  • 相关阅读:
    安卓长按应用图标弹出快捷方式(shortcut)
    网站主题变暗黑,快速解决
    android 11适配的其他注意点
    vue cli3.0构建多页面应用
    Alibaba Canal config 漏洞验证
    检测magiskhide
    Flutter垃圾回收器
    UIbutton 在动画过程中也能响应事件,主要利用layer的hitTest方法
    CocoaPods 私有化
    Android WorkManager使用入门
  • 原文地址:https://www.cnblogs.com/general10/p/5744908.html
Copyright © 2020-2023  润新知