- 博客(12)
- 收藏
- 关注
原创 poj 1014 dividing (母函数)
题意:每一行输入的6个数,第i个数表示价值为i的珠宝的个数,问这些珠宝是不是能等价平分给两个人。 方法:就是组合数学中的母函数,不会的去学下就会了(可以尝试下hdu1028,比这题简单些),这题的难点在于题目中说每种珠宝的数量最多有20000个,如果不进行一些优化是会超时的,优化的方法就是当每种珠宝的个数n>=8是,可以令n=11(n为奇数)or =12(n为偶数),然后就OK了。还有一个坑就是
2015-04-27 17:26:49
457
原创 hdu 5194 DZY Loves Balls(组合数学)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5194 题目大意:给你n个黑球和m个白球,每次取一个球,黑球代表1,白球代表0,求p/q,q表示不同字符串的个数,p表示01子串的总个数。q比较好求,q=(m+n)的全排列除以(m的全排列乘n的全排列),直接算(m+n)的全排列会超出longlong 的范围,m+n最大是24,所以需要一点小技巧,具体
2015-04-02 18:07:19
475
原创 poj 1505 or uva 714 copying books 二分法
题目大意:把一个包含m个正整数的序列分成k个(1= 方法:所有子序列之和肯定满足区间 [ 序列中最大的数,所有数之和 ] ,然后对这个区间进行二分,从右往左扫一遍序列,求得 AC代码: #include #include #include #include #include #include #include #include using namespace std; int m,k; in
2015-03-16 15:33:35
444
原创 uva 1442 Cav(左右各扫描一次)
题目大意:一个洞穴的宽度为n(n 方法:设每个片段中燃料的高度为l,初始值为是s[0]或s[n-1],如果当前片段的地面高度pi>l,则l=pi,顶高度si AC代码: #include #include #include #include #include #include #include #include using namespace std; int p[1000005],s[10
2015-03-13 01:35:05
525
原创 uva 11572 unique snowflakes
题目大意:输入一个长度为n(n 方法:使用set容器中的count,insert,erase三个函数,将序列扫一遍,当前的元素与序列中的元素不相同,就添加进序列,否则,删除序列最左边的元素。 提醒:我是在vjudge上交的题,在hdu交就wa,在uva交就ac,不知道原因,希望大家也不要为此困惑。 AC代码: #include #include #include #include #inc
2015-03-12 22:25:12
373
原创 uva 12627 erratic expansion
题目大意:一开始有一个红气球。每小时后,一个红气球会变成三个红气球和一个蓝气球,一个蓝气球会变成四个蓝气球,问经过k小时后,第A~B行一共有多少个红气球。 方法:做这种类型的题目,就先把k比较小的情况列出来,这样比较容易能找到规律,像这道题的规律就是把第k小时的气球图从中间分开,就能发现上半部分的左右两侧和k-1小时的图是一样的。下半部分的左边也和k-1小时的是一样的,右边全是蓝气球,不用管了。
2015-03-12 02:13:18
388
原创 poj 2940 wine trading in gergovia
题目大意:直线上有n个等距的村庄,每个村庄要么买酒,要么卖酒。第i个村庄对酒的需求是ai,ai>0表示买酒,ai 方法:从左往右扫到n-1,每到一个村庄,最后的结果ans+=|ai|,不管ai的值是多少,ai+1+=ai,表示它还需要ai大小的酒运到村庄i或者从村庄i收到ai的酒; AC代码: #include #include #include #include #include #inc
2015-03-12 00:02:14
338
原创 uva 10954 add all
题意:给你n个数,要你加起来,每一次加法的代价就是两数相加的和,求将这些书相加后的最小代价。 方法:很明显题目就在暗示你用haffman
2015-03-10 14:00:12
292
原创 uva 11093 just finish it up
题目大意:有n个加气站,以顺时钟排序,每个加气站有一定的气储备,每个加气站到下一个加气站的用气量也会给出,有一辆没有气的车,问是否可以从一个加气站出发,能绕一圈后回到原点。 方法:使用气的总量大于存储量就肯定不可能。将存储量减去使用的值存在一个数组中,从开始往后加,若值为负,则代表前面的点都不行,则将值赋值为0,记录下一个位置,遍历完数组就知道答案了。 AC代码: #include #in
2015-03-09 22:41:21
637
原创 poj 2785 4 values whose sum is 0
题目大意:有四列整数,从每列中取出一个数相加,和如果是0,即满足要求,求这样的数的组合有多少种。 方法:由于每列最多可以有4000个数,所以暴力的话会超时,可以先将两列的数的所有组合的和存在两个数组中,然后看一个数组中的数在另一个数组中能否找到对应的数相加起来为0,这样时间复杂是O(16000000); AC代码: #include #include #include #include
2015-03-09 22:34:25
394
原创 poj 3566 building for UN
题目大意:给你n个国家,要你在一个建筑里为这些国家排列办公室,要求是每个国家至少有两间办公室是相邻,相邻的概念是要么在同一层有相同的墙壁,要么是上下层,下层的天花板是上层的地板 输出:h,w,l,h是建筑的高度,每层有l条,每条有w个办公室。每层之间有一个空行。 方法:一共有n层,每层2条,每条n间办公室,第一条的办公室是相应层对应的国家,第二条1ton个国家,这样就能满足每个至少有两间办公室
2015-03-09 14:26:40
568
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人