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 }
  • 相关阅读:
    ASP.NET MVC 重点教程一周年版 第二回 UrlRouting
    ASP.NET MVC 重点教程一周年版 第三回 Controller与View
    DynamicData for Asp.net Mvc留言本实例 下篇 更新
    Asp.net MVC视频教程 18 单选与复选框
    使用ASP.NET MVC Futures 中的异步Action
    ASP.NET MVC RC 升级要注意的几点
    ATL、MFC、WTL CString 的今生前世
    msvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义
    关于Windows内存的一些参考文章
    Windows访问令牌相关使用方法
  • 原文地址:https://www.cnblogs.com/general10/p/5744908.html
Copyright © 2011-2022 走看看