这场CF真是逗了。。。
因为早上7点起的,所以到做CF的时候已经17个小时没有休息了,再加上中午5小时的比赛。
头脑很不清晰。做第一个题的时候差点读成求最大字段和了。然后发现是水体,迅速A掉。
然后开始看了B题,第一遍没有看懂,此时大脑已经看不下去了。然后突然某个群说D是水题。
我去看了一下D,我去,D的题意好简单啊。。。。于是,冥思苦想中。。。。。一直到快要1点
的时候,还是没有结果。。。此时我感觉不行了。。要放弃D,于是,又去看B。仔细读了读题目,
才发现,B题才是真正的水题。。一阵郁闷啊。。
A题:
可以暴力枚举区间,然后枚举去掉几个数。
去数的时候肯定是优先去掉最小的数,然后拿进来最大的。
#include#include #include#include #include using namespace std;#define maxn 220000#define mem(a,b) memset(a,b,sizeof(a))int a[222];vector vec;vector vecc;int main(){ int n,m,ans,i,j,k; while(~scanf("%d%d",&n,&m)) { for(i=1;ij)vecc.push_back(a[k]); } sort(vec.begin(),vec.end()); sort(vecc.begin(),vecc.end()); int len=vec.size(); ans=max(ans,p); for(k=1;k
B题:这道题目仔细研究下你就会发现,如果想变成合法的,那么任意两行或者两列都是相同或者相反的状态。
那么如果m小与10的话,咱们就枚举第一行的状态。
如果m大于10的话,咱们就枚举哪一列没有被改变。
#include#include #include #include #include #include #include