题目连接:http://codeforces.com/gym/100801/attachments
在一个n*m的矩形中,放入三个等大的正方形,问最大边长。
Ans=max(min(n/2,m/2),min(n,m/3));这里n需要保证小于m;
让我们构造出来一个r*c的矩阵,使得其中两种颜色的连通块个数分别为b个和w个。
观察到b和w并不大,那么用两行去随便构造构造就行。
仔细思考不难发现:Ans=n*m-串1第二个到最后一个字符在第串2中出现的次数的加和。
偏向思维的一道数学题,考虑每一次提取倍数然后处理下去。
贪心题,让我们在数字之间添加加号或者减号,使得算式中没有连续两个加号也没有连续两个减号,并且需要保证算式中没有带有前导0的数字存在,问想要将最终结果最大化,如何改变算式。
我们知道,我们想要让结果最大化,肯定是想要将原式中的减号后边的部分变成加号,注意前导0问题即可。
如果是-100000,那么我们将其变成-1+0+0+0+0+0
如果是-100500,那么我们将其变成-1+0+0+500即可。
F.Fygon
G.Graph
贪心能够带来整体最优,推荐一个很好的题解:http://blog.csdn.net/snowy_smile/article/details/49852263
找到相同间隔的两对字符,然后按照二进制输出即可。
J.Journey to the "The World's Start"
二分+Dp+单调队列维护优化。
如果一个点的某个方向上的数严格小于当前数,那么ans++.
模拟一下就行。