Codeforces Round#500 Div.2 翻车记

时间:2023-03-09 09:02:50
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=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 55
int n,x,y;
int main()
{
n=read();
for (int i=;i<=n;i++) x+=read();
for (int i=;i<=n;i++) y+=read();
if (x>=y) cout<<"Yes";else cout<<"No";
return ;
}

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

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

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

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

  貌似写这三题时达到的最高排名是十几名,有点小膨胀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题还是得先想好状态和转移,推倒重来太耗时间了。

  以及,先看清题意啊。