上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 20 下一页
摘要: 题目大意:给一数N,在区间[L, U]上找到一个数M使得M| N的值最大,如果有M有多个可能值,取最小的那个值。 从最高位开始逐位判断,如果N的该位为0,为使M | N的值最大,M的该位应考虑置为1,然后判断M的该位为1时的可能取值区间[lmin, lmax],如果区间[lmin, lmax]与区间[L, U]有交集,则说明该位可置为1;如果N的该位为1,为使M的值尽可能小,M的该位应考虑置为0,然后判断可能取值区间与[L, U]是否有交集,如果没有交集,该位置为1。 1 #include 2 3 int main() 4 { 5 #ifdef LOCAL 6 freopen... 阅读全文
posted @ 2013-08-21 21:35 xiaobaibuhei 阅读(184) 评论(0) 推荐(0)
摘要: 题目大意:有n个包,其中小包可以装到大的包里,包的大小用数字进行表示,求最小的装包数量。 统计每个数字出现的次数,其中次数的最大值k就是最小的装包数量。答案显然不可能比k小,而把相同大小的包装进不同的大包里显然满足条件。题目中有一句话纠结了半天,“While maintaining the minimal number of pieces you are also to minimize the total number of bags in any one piece that must be carried.” 大概是说让每个大包里的小包的数量的最大值最小吧,也就是要把小包尽可能平均... 阅读全文
posted @ 2013-08-21 19:59 xiaobaibuhei 阅读(790) 评论(0) 推荐(0)
摘要: 题目大意:给一个字符串,判断是否能通过交换字母构成回文,如果能,计算所需的最小交换次数。 如果字符串中出现奇数次的字母的个数>1,则不能构成回文。然后...就没思路了...看网上说用贪心的思想先从两端开始考虑,决定两端的字母后再缩小问题范围直至字符串长度 2 #include 3 4 int main() 5 { 6 #ifdef LOCAL 7 freopen("in", "r", stdin); 8 #endif 9 int T;10 scanf("%d", &T);11 char str[110];12 while 阅读全文
posted @ 2013-08-21 19:07 xiaobaibuhei 阅读(372) 评论(0) 推荐(0)
摘要: 题目大意:判断一个序列是否可图化。Havel-Hakimi定理的简单应用。 在看D_Double's Journey的关于Havel-Hakimi定理时提到这道题,就做了一下。可悲的是,因为一些小细节问题WA了两次,无语... 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 12 6 7 struct Vertex 8 { 9 int d, id;10 bool operator v.d;13 }14 };15 Vertex vertex[MAXN];16 in... 阅读全文
posted @ 2013-08-19 19:27 xiaobaibuhei 阅读(170) 评论(0) 推荐(0)
摘要: 题目大意:给n个整数, 分别代表图中n个顶点的度,判断是否能构成一张图。 看到这个题后,除了所有数之和应该为偶数之外,没有别的想法了,只好在网上搜解题报告了。然后了解了Havel-Hakimi定理。之后的事情就简单了。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 #define MAXN 10000+10 7 8 int a[MAXN]; 9 int n;10 11 bool Havel_Hakimi()12 {13 for (int i = 0; i ());16 if (i ... 阅读全文
posted @ 2013-08-19 18:44 xiaobaibuhei 阅读(208) 评论(0) 推荐(0)
摘要: 题目大意:John有h的时间可以去钓鱼,有n湖可钓鱼,以5分钟为时间单位,每个湖初始每个单位时间可钓f条鱼,每下一个时间单位数量减少d条。同时,John只能从1号湖往后走进行钓鱼,湖之间的距离需要t个单位时间。求最多能钓到最多少鱼,并给出方案。 “贪心+暴力,从近至远依次枚举可以到达的钓鱼地点,用总时间减去中途消耗的时间,这样就可以将其当成在各个钓鱼地点之间随意转移(实际题目中给出是单方向前行的),然后在已到达的最远的钓鱼地点之内的所有钓鱼地点上按每次能钓到的鱼的最大值做贪心,若时间用不完,则剩余时间加到第一个钓鱼地点上。注意,钓鱼地点最初的钓鱼值可能为零。” 1 #include 2... 阅读全文
posted @ 2013-08-18 16:56 xiaobaibuhei 阅读(320) 评论(0) 推荐(0)
摘要: 题目大意:最大和子序列问题。由于具有最大和的子序列具有一下性质:第一项不为负数,并且从第一项开始累加,中间不会有和出现负数,因为一旦有负数我们可以抛弃前边的部分以得到更大的子序列和,这将会产生矛盾。 1 #include 2 3 int main() 4 { 5 #ifdef LOCAL 6 freopen("in", "r", stdin); 7 #endif 8 int T; 9 scanf("%d", &T);10 for (int kase = 1; kase nicest || (sum == nicest & 阅读全文
posted @ 2013-08-18 14:16 xiaobaibuhei 阅读(152) 评论(0) 推荐(0)
摘要: 题目大意: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 阅读(192) 评论(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 阅读(321) 评论(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 阅读(414) 评论(0) 推荐(0)
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 20 下一页