题目链接:https://codeforces.com/contest/1327
第一次在比赛中通过2200分难度的题目,鼓励一下自己,可以有机会不通过手速上橙色了。而且也准备突破历史上的最高纪录了,还差47分,加油。


当时开题的顺序如上图所示。
现在的A题送分都要卡我十分钟去想。
题意:给一个比较大的整数n,和一个比较大的整数k,问是否能选出恰好k个不同的奇数,使得他们的和为n。
题解:贪心,从1,3,5,7,9,...这样选,选一共k个,用等差数列求和公式得:k个最小的奇数的和为:k*k,当时觉得很诡异,不过验算一下前几项确实是这样。
那么贪心完成kk(注意不要溢出)之后,若已经比n大,那么无解。否则记剩余的部分r=n-kk,若r是奇数,那么和前面的任意一个组合都是得到偶数,也是无解。(其实k个奇数,若k是偶数,那么和肯定是偶数,否则和一定是奇数,也可以这样判断)否则把这个r加给最大的奇数,这样会让这个奇数有可能变成一个更大的奇数,反正就和小的那些不同了。
这个B题就比A题水很多了。
题意:一个二分图,有n个左部点,有n个右部点,不超过可以接受的范围的边数,没有重边。然后从[1,n]按顺序遍历每个左部点,每个左部点都选择与它连接的右部点中没有被选择过的最小编号的那个,若某个左部点无法选择就会被跳过。问是否可以通过加入恰好1条边,使得匹配数变大。
题解:首先想清楚一点:加入一条边,有可能使得匹配数变小(就是说,指使一个编号小的左部点,占了原本分配给编号大的左部点的右部点,导致那个编号大的失配),有可能不变(很显然可以不变,加一条边连接一个比被选择的右部点编号更大的点,样例有),有可能变大(样例有)。非常显然,先按题意模拟,假如模拟完成之后所有点都匹配了,那就不可能变大,否则至少剩下一个左部点和一个右部点,直接把这两个连起来,显然这样连着的点,不会影响其他点的选择。因为这个左部点要么没有连接右部点,要么连接的右部点都被编号更小的左部点选掉了,也是相当于没有连接。
又继续贪心。
题意:有一个n*m的棋盘格,上面有若干个薯片,薯片可以重叠。每个薯片需要途径一个属于这个薯片的终点,注意不需要在结束的时候停留在终点。每次可以摇动棋盘,使得所有的薯片向同一个方向一起移动。这个棋盘四周有墙,薯片向墙移动会什么都不发生。求是否可以摇动不超过2nm次使得所有薯片都途径他自己需要途径的终点。
题解:可以用n-1次U或者D来弄到边界上,然后用m-1次L或R来弄到一个角落里,然后让这堆薯片从这个角落开始遍历整个图,需要nm-1次,简单数学证明会发现这三个的和不可能超过2nm:
\(f(n,m)=(2nm)-(n-1+m-1+nm-1)\)
问这个 \(f(n,m)\) 是否恒为非负。
\(f(n,m)=nm-(n+m)+3\)
求偏导,可以知道最小值位于 \(f(1,1)=2\)
所以这个构造成立。
这个和昨天(2020/3/24)做的一个远古场的edu的题一模一样。
题解:
Educational Codeforces Round 84 (Rated for Div. 2)
原文:https://www.cnblogs.com/KisekiPurin2019/p/12566125.html