zoukankan      html  css  js  c++  java
  • Codeforces Round#500 Div.2 翻车记

      A:签到

    #include<iostream> 
    #include<cstdio>
    #include<cmath>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int read()
    {
        int x=0,f=1;char c=getchar();
        while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
        while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
        return x*f;
    }
    #define N 55
    int n,x,y;
    int main()
    {
        n=read();
        for (int i=1;i<=n;i++) x+=read();
        for (int i=1;i<=n;i++) y+=read();
        if (x>=y) cout<<"Yes";else cout<<"No";
        return 0;
    }

      B:用不上位运算的各种性质,开个桶记一下能不能对应上就好。

    #include<iostream> 
    #include<cstdio>
    #include<cmath>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int read()
    {
        int x=0,f=1;char c=getchar();
        while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
        while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
        return x*f;
    }
    #define N 100010
    int n,x,a[N],f[N<<1];
    int main()
    {
        n=read(),x=read();
        for (int i=1;i<=n;i++) f[a[i]=read()]++;
        for (int i=1;i<=n;i++) if (f[a[i]]>1) {cout<<0;return 0;}
        for (int i=1;i<=n;i++) if (f[x&a[i]]>(a[i]==(x&a[i]))) {cout<<1;return 0;}
        memset(f,0,sizeof(f));
        for (int i=1;i<=n;i++) f[a[i]&x]++;
        for (int i=1;i<=n;i++) if (f[x&a[i]]>1) {cout<<2;return 0;}
        cout<<-1;
        return 0;
    }

      C:容易发现横坐标或纵坐标选取连续的一段最优。枚举横/纵坐标选取的起始位置就好。

    #include<iostream> 
    #include<cstdio>
    #include<cmath>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int read()
    {
        int x=0,f=1;char c=getchar();
        while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
        while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
        return x*f;
    }
    #define N 100010
    int n,a[N<<1];
    int main()
    {
        n=read();
        for (int i=1;i<=n*2;i++) a[i]=read();
        sort(a+1,a+n*2+1);
        long long ans=1ll*(a[n]-a[1])*(a[n*2]-a[n+1]);
        for (int i=2;i<=n;i++) ans=min(ans,1ll*(a[n*2]-a[1])*(a[n+i-1]-a[i]));
        cout<<ans;
        return 0;
    }

      貌似写这三题时达到的最高排名是十几名,有点小膨胀2333

      然后看D,完了没啥思路啊。赶紧跳E。

      咦这不是随便dp一下就好吗。码码码。

      啊好像不太对……咦这样改一下状态不就好了吗。码码码。

      啊好像不太对……咦这样改一下状态不就好了吗。码码码。

      啊好像不太对……咦这样改一下状态不就好了吗。码码码。

      ………………

      好像突然离结束只有半个小时了。期间从十几名一路掉到接近三百。

      终于找到一个比较靠谱的做法了。写起来感觉特别优美啊。

      码码码码完了。测样例。咦怎么挂了?

      调调调。还是不对啊?

      不是这样例怎么回事啊?

      哦我看错题了啊。

      瞬间翻车。还剩不到二十分钟,脑补一下这个题还是能做的,但根本码不完了啊。

      于是就弃疗了。不过看起来还是不会掉rating的。但还是好惨啊。

      D:冷静一下会发现,把行列各自看成点之后就是问图里有多少个连通块。

      E:后来发现还是想麻烦了,f[i][j]表示前i座山留j座(不考虑第i+1座的影响)花费的最少时间,加一维01状态记一下i留不留,转移时从f[i-1]和f[i-2]转移过来,讨论一下

      F:没看

      最后rank340,rating涨12。连着几场都在这附近感觉自己也确实就这么弱了啊。

      dp题还是得先想好状态和转移,推倒重来太耗时间了。

      以及,先看清题意啊。

  • 相关阅读:
    react ts axios 配置跨域
    npm run eject“Remove untracked files, stash or commit any changes, and try again.”错误
    java 进程的参数和list的线程安全
    帆软报表 大屏列表跑马灯效果JS
    帆软报表 快速复用数据集,避免重复劳动
    分析云 OA中部门分级思路和实现方法
    分析云 分段器 只显示一个块的数据
    分析云 更改服务默认的端口号
    分析云U8项目配置方法新版本(2)
    Oracle 创建时间维度表并更新是否工作日字段
  • 原文地址:https://www.cnblogs.com/Gloid/p/9392532.html
Copyright © 2011-2022 走看看