摘要:
题目大意:UVa 108 - Maximum Sum的加强版,求最大子矩阵和,不过矩阵是可以循环的,矩阵到结尾时可以循环到开头。开始听纠结的,想着难道要分情况讨论吗?!就去网上搜,看到可以通过补全进行处理,也是,通过补全一个相同的,问题就迎刃而解了,所以把n*n的矩阵扩展成2n*2n的矩阵就好了。 1 #include 2 #include 3 #define MAXN 160 4 5 int a[MAXN][MAXN], sum[MAXN][MAXN]; 6 7 int main() 8 { 9 #ifdef LOCAL10 freopen("in", "r&q 阅读全文
posted @ 2013-08-17 22:33
xiaobaibuhei
阅读(196)
评论(0)
推荐(0)
摘要:
题目大意:有一些广告牌,为了使跑步者看到固定数量的广告,设计所需租用的最少数量的广告牌。 其实就是区间选点问题:数轴上有n个区间[ai, bi],取尽量少的点,使得每一个区间都至少有一个点。首先对区间进行排序(按b从小到大的顺序,若b相同则按a从大到小的顺序),然后做出贪心选择:选取第一区间最后一个位置的点,然后逐个区间判断,若已经有点则无需处理,没有点的话选择该区间最后位置的点。本题则是变为k个点,道理是相同的,从后往前进行选点就可以了。 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN ... 阅读全文
posted @ 2013-08-17 21:27
xiaobaibuhei
阅读(323)
评论(0)
推荐(0)
摘要:
题目大意:给一个正整数n,构造一个0...n-1的排列,使得这个排列的任何一个长度大于2的子序列都不为等差数列。 把序列按照奇偶位置分成两个序列,这样在两个序列间就不会形成等差数列了,然后再对这两个序列进行分解,直到序列的长度小于3。 刚开始把 arithmetic progression 理解错了,以为是单调序列,后来感觉不对劲,发现原来是等差序列,可是还是不会...只好搜解题思路了,然后根据别人的思路写代码。有时写代码也会碰到困难,不知道该怎么写,就只能再参考别人代码了,这样...唉,不多说了 1 #include 2 #define MAXN 10000+10 3 4 int... 阅读全文
posted @ 2013-08-17 14:24
xiaobaibuhei
阅读(417)
评论(0)
推荐(0)

浙公网安备 33010602011771号