摘要:
题意:球的编号为 0 - N-1 最开收有 A 个老箱子, 编号为 1 - A-1 把 球的编号%A 就是球所放的箱子数,现在新购入 B 个新箱子,,把所有的老箱子中的按照原来的规则(%B)放入 新箱子中,移动的距离(|老箱子编号-新箱子编号|)为花费,求总花费解题思路: 把n分为较大的一段一段(根据循环节)因为N 较大,所以对这些编号求一个循环节,每个循环节中的状态一样,然后对每个循环节里面的小段分情况讨论!解题代码: 1 #include 2 #include 3 #include 4 long long gcd(long long a, long long b) 5 ...
阅读全文
posted @ 2013-07-27 11:50
dark_dream
阅读(206)
推荐(0)
摘要:
题意:在网格里面给定了 横,竖 两种多米诺骨牌,同向的不可以覆盖,不同向的可以覆盖,问你最多去掉多少个有覆盖的多米诺,使得网格内剩余的多米诺骨牌最多解题思路:一.搜索 (1),分别对横竖两种不同的多米诺建图(同一块标记),然后根据某个封闭覆盖区域的交叉搜索可得到横竖的走向次数,贪心最大可得。(2).直接建图, 有向深搜,然后面积/2二,二分匹配,解题代码:(第一种) 1 #include 2 #include 3 #include 4 #include 5 int map[200][200]; 6 int map1[200][200]; 7 int visit[200][...
阅读全文
posted @ 2013-07-25 21:41
dark_dream
阅读(490)
推荐(0)
摘要:
题意:给定一个序列,从前往后取,然后给出一个可以从前面加和从后面加的特殊栈,但是这个栈必须保持递增,问你栈的最长长度为多少解题思路:从后往前枚举第一个加入栈的队列,在求从后同时求不递增,不递减序列,然后在序列中找最小重复的,对于这个点的最大长度就是两个长度相加再减去最小重复的。解题思路:// File Name: e.c// Author: darkdream// Created Time: 2013年07月25日 星期四 10时17分58秒#include#include#include#include#include#includeint a[100005];int stackup[100
阅读全文
posted @ 2013-07-24 21:55
dark_dream
阅读(242)
推荐(0)
摘要:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4607题意:给定一个简单图,向你多次询问访问n个点所需要的最少步数解题思路:找出这个图中节点之间的最大长度(用递归和dp) , 然后如果点数小于(最大长度+1),那么步数就是(点数-1),如果点数大于最大长度中的点,则步数为最大长度 + (点数 - 最大长度 - 1) * 2 ;解题代码:// File Name: h.c// Author: darkdream// Created Time: 2013年07月23日 星期二 21时20分37秒#include#include#include#inc
阅读全文
posted @ 2013-07-24 16:33
dark_dream
阅读(252)
推荐(0)
摘要:
题目链接http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2362
阅读全文
posted @ 2013-07-21 21:27
dark_dream
阅读(116)
推荐(0)
摘要:
http://blog.csdn.net/jackyguo1992/article/details/9372489
阅读全文
posted @ 2013-07-20 21:09
dark_dream
阅读(200)
推荐(0)
摘要:
题意:有n个队伍比赛,比赛的规则是,如果人数是奇数,则任意两个队伍都要比直接决出冠军(n*(n-1)/2),如果人数是偶数的话,任意两个队比赛(n/2),给出你比赛次数,让你求n解题思路:假设队伍大小为(2^p*x)则用枚举p 二分找x 就能得出答案,不过要注意数据范围!!解题代码: 1 // File Name: 325b.c 2 // Author: darkdream 3 // Created Time: 2013年07月19日 星期五 16时44分33秒 4 5 #include 6 #include 7 #include 8 #include 9 #include10 #incl..
阅读全文
posted @ 2013-07-19 20:53
dark_dream
阅读(411)
推荐(0)
摘要:
题意:给定一个网格,然后其中的 '.' 中可以建塔,有两种塔,绿塔可以装100人,红塔可以容纳200人不过必须要边上有绿塔(同边)的时候才能建造,对一个 '.'格子有三种操作,建立绿塔,摧毁塔,建立红塔,让你给出一种方案使得容纳总人数最多解题思路:先把每一个 ‘.’ 建立绿塔,可以把每 一块 独立的 '.' 单独出来bfs 然后从栈尾的点一直摧毁建立红塔一直到栈只剩一个元素,就这样就可以了!!解题代码: 1 // File Name: d.c 2 // Author: darkdream 3 // Created Time: 2013年07月18
阅读全文
posted @ 2013-07-19 13:46
dark_dream
阅读(321)
推荐(0)
摘要:
题意:给定你n个哑铃,每个哑铃都有质量和价格两个属性,要你把它分为k个一组;分组要求为,每组哑铃数相同,同一组内哑铃质量不同,不同组内哑铃质量必须一一相同,问你最多能分成多少组(如果有 组数 相同的组合,输出总花费最大的那个方案)解题思路:用结构体数组 list 存储哑铃,然后在哑铃质量的基础上对花费进行从大到小的排序(把哑铃按照质量在数组中分为不同的堆),然后用 因为哑铃的质量比较小,所以我们用 hash 数组(结构体 包含这个值第一次在lish出现的位置 和 它的个数 )对不同质量的进行统计, 然后对 hash 中的 个数 进行排序, 就能知道可以得出几组,然后在 通过 hash ...
阅读全文
posted @ 2013-07-18 19:17
dark_dream
阅读(276)
推荐(0)
摘要:
题意:给定一个序列,告诉你里面要有多少个0 和 1 要求替换次数最小得出要求序列解题思路:模拟替换解题代码:// File Name: e.c// Author: darkdream// Created Time: 2013年07月17日 星期三 09时41分24秒#include#include#include#include#include#includechar str[10000];int visit[10000];int main(){ //freopen("/home/plac/problem/input.txt","r",stdin); /
阅读全文
posted @ 2013-07-18 15:33
dark_dream
阅读(246)
推荐(0)