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題還是得先想好狀態和轉移,推倒重來太耗時間了。

  以及,先看清題意啊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM