• Codeforces Round #498 (Div. 3)


    这场..

    不知道说什么好了唉。。。

    A.签到++

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <queue>
     6 #include <map>
     7 #define ll long long
     8 #define out(a) printf("%d ",a)
     9 #define writeln printf("
    ")
    10 #define N 100050
    11 using namespace std;
    12 int n;
    13 int a[N];
    14 int read()
    15 {
    16     int s=0,t=1; char c;
    17     while (c<'0'||c>'9'){if (c=='-') t=-1; c=getchar();}
    18     while (c>='0'&&c<='9'){s=s*10+c-'0'; c=getchar();}
    19     return s*t;
    20 }
    21 ll readl()
    22 {
    23     ll s=0,t=1; char c;
    24     while (c<'0'||c>'9'){if (c=='-') t=-1; c=getchar();}
    25     while (c>='0'&&c<='9'){s=s*10+c-'0'; c=getchar();}
    26     return s*t;
    27 }
    28 int main()
    29 {
    30     n=read();
    31     for (int i=1;i<=n;i++)
    32       a[i]=read();
    33     for (int i=1;i<=n;i++)
    34       if (a[i]&1) out(a[i]);
    35       else out(a[i]-1);
    36     return 0;
    37 }
    View Code

    B.n个数,找个方案分成k个区间使每个区间最大值的和最大.

    排序找最大的k个数,然后下标减一减就好了。

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <queue>
     6 #include <map>
     7 #include <algorithm>
     8 #define ll long long
     9 #define out(a) printf("%d ",a)
    10 #define writeln printf("
    ")
    11 #define N 100050
    12 using namespace std;
    13 int n,k,tot,ans,now;
    14 int b[N];
    15 int read()
    16 {
    17     int s=0,t=1; char c;
    18     while (c<'0'||c>'9'){if (c=='-') t=-1; c=getchar();}
    19     while (c>='0'&&c<='9'){s=s*10+c-'0'; c=getchar();}
    20     return s*t;
    21 }
    22 ll readl()
    23 {
    24     ll s=0,t=1; char c;
    25     while (c<'0'||c>'9'){if (c=='-') t=-1; c=getchar();}
    26     while (c>='0'&&c<='9'){s=s*10+c-'0'; c=getchar();}
    27     return s*t;
    28 }
    29 struct dist
    30 {
    31     int h,id;
    32 }a[N];
    33 bool cmp(dist a,dist b)
    34 {
    35     return a.h==b.h?a.id<b.id:a.h>b.h;
    36 }
    37 int main()
    38 {
    39     n=read(); k=read();
    40     for (int i=1;i<=n;i++)
    41       a[i].h=read(),a[i].id=i;
    42     sort(a+1,a+n+1,cmp);
    43     for (int i=1;i<=k;i++)
    44       ans+=a[i].h,b[++tot]=a[i].id;
    45       out(ans); writeln;
    46       sort(b+1,b+tot+1); now=0;
    47     for (int i=1;i<=tot;i++)
    48       if (i!=k) out(b[i]-now),now=b[i];
    49       else out(n-now);
    50     return 0;
    51 }
    View Code

    C.n个数分成三个区间,求第一个区间和sum1等于第三个区间和sum3时sum1最大值,区间可以是空集。

    预处理出前缀和,后缀和,从两端往中间扫,区间重合的时候break掉.记得开ll

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <cmath>
     5 #include <queue>
     6 #include <map>
     7 #define ll long long
     8 #define out(a) printf("%lld",a)
     9 #define writeln printf("
    ")
    10 #define N 200050
    11 using namespace std;
    12 int n;
    13 int a[N];
    14 int x,y;
    15 ll sum1[N],sum2[N],ans;
    16 int read()
    17 {
    18     int s=0,t=1; char c;
    19     while (c<'0'||c>'9'){if (c=='-') t=-1; c=getchar();}
    20     while (c>='0'&&c<='9'){s=s*10+c-'0'; c=getchar();}
    21     return s*t;
    22 }
    23 ll readl()
    24 {
    25     ll s=0,t=1; char c;
    26     while (c<'0'||c>'9'){if (c=='-') t=-1; c=getchar();}
    27     while (c>='0'&&c<='9'){s=s*10+c-'0'; c=getchar();}
    28     return s*t;
    29 }
    30 int main()
    31 {
    32     n=read();
    33     for (int i=1;i<=n;i++)
    34       a[i]=read(),sum1[i]=sum1[i-1]+a[i];
    35     for (int i=n;i>=1;i--)
    36       sum2[i]=sum2[i+1]+a[i];
    37     for (int i=1;i<=n;i++){
    38       if (sum1[n]-sum1[i]==sum1[i]){
    39         out(sum1[i]); 
    40         return 0;
    41     }
    42     }
    43     x=1; y=n;
    44     while (x<=n&&y>=1){
    45         if (x>=y) break;
    46       if (sum1[x]==sum2[y]) ans=sum1[x];
    47       if (sum1[x]>sum2[y]) y--;
    48       else x++;
    49     }
    50     out(ans);  
    51     return 0;
    52 }
    View Code

    看了下此时排名300多海星,然而接下来就是一个多小时的玩泥巴了。。。

    看D,诶这个样例怎么来的....

    哦哦哦懂了,好像分类一下就好了,唉好麻烦啊。

    诶这个E怎么过这么多了,诶好像xjb写写就能过了.

    coding....诶不对啊样例过不了,诶不对啊我想错了GG

    滚回去看D,分类好久过样例,无限wa3.。。

    唉算了好困回去碎觉了..结果1000多名滚粗,涨分的大好局势毁了..

    D,E找时间补补吧。

    总结:这场ABC写的海星,手速和思维都够快且失误较少,但是后面的题还是缺少耐心去写导致GG,时间安排也不太好吧..总之div3写不出5题不能算是合格吧.....

  • 相关阅读:
    重复造轮子感悟 – XLinq性能提升心得
    分享动态拼接Expression表达式组件及原理
    拦截Response.Redirect的跳转并转换为Js的跳转
    高仿QQ即时聊天软件开发系列之三登录窗口用户选择下拉框
    高仿QQ即时聊天软件开发系列之二登录窗口界面
    高仿QQ即时聊天软件开发系列之一开端
    关于404二级目录或三级目录不显示图片的方法
    如何在cmd查看文件内容的MD5值
    VMware虚拟机下载与安装
    dede自定义表单放首页出错的解决办法
  • 原文地址:https://www.cnblogs.com/Kaleidoscope233/p/9326285.html
Copyright © 2020-2023  润新知