HDU1495_非常可乐_暴力广搜
摘要:题目大意: 给你一杯体积为S的满的牛奶,然后有两个容量之和为S的杯子,求倒最小的次数将这杯牛奶平分。解题思路: 直接用bfs暴力模拟吧,广搜好写,这道题目比较适合广搜,深搜搞了好久还是没有搞出来,等下把它弄出来。代码:#include#includeusing namespace std;const MAX=105;struct pp{ int x; int y; in...
阅读全文
posted @
2011-11-30 22:32
cchun
阅读(201)
推荐(0)
HDU2216_GameIII_暴力广搜
摘要:题目大意: 一个男的Z要去找一个女的S,然后这个男的每走一步,那个女的就走跟他相反的方向。这个地图里面只有两种元素,“X”就是墙,“.”就是平地。然后要求这个男的走最少的步数找到女的,相邻或者重合即算找到。解题思路: 直接用广搜,搜到的第一个就是最短路径啦,(广搜按层搜索的优势),题目中要注意,每走一步,男的跟女的都有状态,而且可能状态还不一样,所以要开个四维的vi...
阅读全文
posted @
2011-11-30 22:27
cchun
阅读(267)
推荐(0)
HDU2822_Dogs_广搜+优先队列
摘要:题目大意: 有一只小狗要去找另一只小狗,两只小狗的坐标都知道,然后这个地图里只有两种元素,即房子还有草地,如果小狗经过房子,则不用花时间,如果经过的是草地,时间+1,最后算出小狗到达目标的时候所花费的最小时间。解题思路: 用优先队列解决这道题目,还是比较好理解的。每次都从队列里面取出当前到达时间最小的一个点,然后由这个点进行扩展,到达目标。好像还可以用一般的队列做,但是...
阅读全文
posted @
2011-11-30 22:19
cchun
阅读(267)
推荐(0)
HDU1059_Dividing_多重背包
摘要:题目大意: 给你6个石子,石子的价值分别从1->t;6,然后输入各个石子的数量。之后要你判断石子能否分成两堆,使两堆石子的价值一样。想了好久,最后觉得才发现可以用多重背包做。解题思路: 首先这6种石子不是无数个的,而且石子有价值,可以假设石子的体积都一样,反正题目都木有要求体积嘛。 一开始先算出石子的总价值,然后判断总价值的奇偶性,如果是奇数,肯定分不了,...
阅读全文
posted @
2011-11-25 14:30
cchun
阅读(198)
推荐(0)
HDU3449_变种01背包_多个篮子
摘要:题目大意: 提供给你几个篮子,每个篮子有价格,还有其可以容纳的物品的个数,然后可容纳的物品有各自需要的价格(注意篮子有多个,每个篮子里面的物品可以不同,种数也可以不同),然后物品都有自己的权值(可以理解为重量之类的属性)。要买篮子里面的物品,你必须要先买这些物品所属的篮子。然后你一开始有一定的钱,要求你买到物品的权值最大(可以理解为重量最多)。解题思路: 咋一看,这...
阅读全文
posted @
2011-11-24 14:46
cchun
阅读(263)
推荐(1)
HDU2546_用01背包做
摘要:题目大意: 电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。 Input...
阅读全文
posted @
2011-11-23 14:21
cchun
阅读(516)
推荐(0)
USACO2_1_4_Healthy Holsteins
摘要:题目大意: 给你n种维生素,每只牛每天摄入的维生素必须大于等于这n种维生素的量。再让你输入一个数m,代表有m种不同的食物。里面含有的维生素的量。然后要求最少吃哪几种食物可以满足牛的维生素量。如果食物相同,则输出字典序最小的。解题思路: 最多就15种食物,直接暴力dfs吧。最多也就2^15种状态。不会超时的。。暴力出来的结果就是字典序最小的。代码:/* ID:yuqichu...
阅读全文
posted @
2011-11-21 01:13
cchun
阅读(226)
推荐(0)
HDU2955_Robberies_01背包变种
摘要:题目大意: 一个人去偷n家银行偷东西,每家银行规定只能选择偷or不偷,然后偷了的话,有一个被捉到的概率。然后这个小偷的老妈给他算了一下,只要他能够让他被捉的概率小于一个指定值ans_p,那么他就不会被捉,然后求他不被捉的能偷到的最大价值。解题思路: 根据概率方面的知识,要求一个人被捉的概率,其实应该先算出偷每家银行不被捉到的概率,然后将他偷几家银行的不被捉的概率求乘积。最...
阅读全文
posted @
2011-11-20 02:12
cchun
阅读(144)
推荐(0)
HDU1114_DP_完全背包
摘要:题目大意: 让你输入空的存钱罐的质量empty,还有存满时的质量full。 然后输入n,接下来有n组,每组输入p,w.代表n种硬币,p是每种的价格,w是每种的质量。要求求出这个存钱罐的可能最小钱数。解题思路: 属于背包九讲中的完全背包,以存钱罐中钱的质量tal=full-empty,不过特殊的就是这种背包必须把背包填满,即最终放的硬币必...
阅读全文
posted @
2011-11-19 10:26
cchun
阅读(1001)
推荐(0)
HDU2602_Bone Collector_很水的01背包
摘要:题目大意:好吧,典型的01背包。解题思路:01背包。代码:#include#define max(x,y) x>y? x:yconst int MAX=1005;using namespace std;int main(void){ int cas,n,m,p[MAX],c[MAX],f[MAX]; cin>>cas; while(cas--) { int i,j,num,tal; memse...
阅读全文
posted @
2011-11-19 01:31
cchun
阅读(137)
推荐(0)
HDU3809_Decrypt coordinate_迭代法
摘要:题目大意: 让你求解方程: x1=x-sqrt(y); y1=y-sqrt(x);已知x1,y1,要求x与y,精确到小数点后6位。解题思路; 迭代法,感谢阿侠,一语惊醒。。 式子是这样推的:x=x1+sqrt(y); y...
阅读全文
posted @
2011-11-17 20:46
cchun
阅读(187)
推荐(0)
中国剩余定理的_非互素同余模板
摘要:下面这个程序可以对付非互素的同余#include #include #include #include using namespace std;__int64 x, y, t;__int64 egcd(__int64 a, __int64 b) { if (b==0) { x=1; y=0; return a; ...
阅读全文
posted @
2011-11-16 18:26
cchun
阅读(234)
推荐(0)
中国剩余定理模板
摘要:不知道说什么,就完全一个模板来着……不过里面的意蕴深厚,有待深究!includeusing namespace std;__int64 m[1000];//除数__int64 r[1000];//余数__int64 X,Y;__int64 f2(__int64 a, __int64 b)//扩展欧拉{ if (b==0) { X=1; Y...
阅读全文
posted @
2011-11-13 15:04
cchun
阅读(237)
推荐(0)
欧几里得算法扩展(extended gcd)--解不定方程_初入门
摘要:扩展欧几里德算法是用来在已知a, b求解一组p,q使得p * a+q * b = Gcd(p, q) (解一定存在,根据数论中的相关定理)。扩展欧几里德常用在求解模线性方程及方程组中。下面是一个使用C++的实现:(拓展欧几里得算法的时间复杂度跟gcd()欧几里得算法复杂度是一样的)int extended_gcd(int a, int b, int &x, int &y){ int ret, t...
阅读全文
posted @
2011-11-13 14:48
cchun
阅读(487)
推荐(0)
Codeforces Beta Round #93_B题
摘要:题目大意: 给你n支木棍,然后把这n支木棍围成一个框。要求这个框必须是矩形,也可以是正方形。一个框用4根木棍。。解题思路: 数学水题。#include#includeusing namespace std;int main(void){ map int_count; int n,i,a; cin>>n; for(i=0;i>a; ++int_count[a]; } map::...
阅读全文
posted @
2011-11-10 11:31
cchun
阅读(131)
推荐(0)
Codeforces Beta Round #93_A题
摘要:题目大意: 给你一条折线,给一个速度,求把这条折线走完的时间。。。折线要*k.解题思路: 直接暴力算吧。。唉!,这就没有什么营养了。#include#include#includeconst int MAX=105;using namespace std;typedef struct p{ double x; double y;}P;int main(void){ ...
阅读全文
posted @
2011-11-10 11:28
cchun
阅读(114)
推荐(0)
USACO_2_1_3_Sorting a Three-Valued Sequence_交换环
摘要:题目大意: 让你输入n,然后在输入n个数,这些数只有1,2,3,然后要求你给这些数从小到大排序,排完后要求最小的排序步数。(即排完这些数,需要的最小次数)解题思路: 网络上别的大牛说这是一道图论的交换环题目,好吧,交换环,感觉还是蛮抽象。不过还好还有另外一种算巧妙一点的做法。 分为3个步骤: 1、原来输入的无序数放在数组num[],排序完成后...
阅读全文
posted @
2011-11-09 22:07
cchun
阅读(182)
推荐(0)
HDU1856_More is better
摘要:题目大意: 让你输入n,然后输入n组数据,表示a与b的关系,最后求出关系最多一组的个数。注意(a与b有关系,b与c有关系,那么a与c就有关系)解题思路: 并查集,开一个结构体用来存储以当前节点为跟节点的数目,最后再历遍一次就可以得到最大值了。吐吐槽: 有点儿蛋疼,遇到了2个疼疼的问题,本来这是一道模板题啊,唉,问题1:交这道题目的时候,一交TLE了,疼,没...
阅读全文
posted @
2011-11-09 21:54
cchun
阅读(314)
推荐(0)
HDU1213_How Many Tables
摘要:题目大意: 让你输入n,m,n代表有n个人,m代表有m组表示其关系的数据,最后要求输出,能够把这n个点分为几组,注意,如果a与b有关系,b与c有关系,那么a与c也有关系。解题思路: 直接用并查集查找就行了,查找分为几组。代码:#includeusing namespace std;const int MAX=1005;int pre[MAX];int find(int ...
阅读全文
posted @
2011-11-09 18:43
cchun
阅读(208)
推荐(0)
HDU1272_并查集
摘要:题目大意: 让你输入n,m,代表一个迷宫中的两个点,要求这个迷宫中,不能有回路。这是一个无向图,但是其实根据题意来说,最终应该是一棵树。解题思路: 只要输入的时候一开始判断两个点的父节点是不是相同的,如果相同,那么说明这两个点是连通的,你再加上去,就证明要产生回路啦。所以要排除,,还有,当输入n,m为0时,这时候输出yes,最后再判断下,这个图有没有连通分量...
阅读全文
posted @
2011-11-09 16:52
cchun
阅读(366)
推荐(0)
HDU1128_Self Numbers_筛选法
摘要:题目大意: 一个数n,比如n=75,或者n=39,则n可以根据下面这种规则生成87与51这两个数,所以87跟51这两个数就不是self number,而当有一个数不能由其他数根据这种方法生成过来的时候,这个数就称为self number.d(75) = 75 + 7 + 5 = 87d(39) = 39 + 3 + 9 = 51There are thirteen self-num...
阅读全文
posted @
2011-11-07 01:46
cchun
阅读(398)
推荐(0)
HDU1286_找新朋友_筛选法
摘要:题目大意: 让你输入一个数n,求1……n-1这么多个数,能与n有公约数不为1的数的总数。解题思路: while里面有一个小技巧。一开始用一般的gcd()函数调用方法,就直接TLE了。打表也TLE。代码:#includeusing namespace std;const int MAX=32769;int gcd(int a,int b){ int c; while(...
阅读全文
posted @
2011-11-07 01:23
cchun
阅读(169)
推荐(0)
HDU1164_Eddy's research I_素数筛选法
摘要:题目大意: 让你输入一个数n,然后将n拆分为n内的素数的乘积。解题思路: 先把素数打表,然后暴力即可。代码:#include#includeusing namespace std;const int MAX=65540;int p[8]={4,2,4,2,4,6,2,6};int num[MAX];int Prime(int n)//判断素数{ int i=...
阅读全文
posted @
2011-11-07 00:41
cchun
阅读(168)
推荐(0)
HDU1397_Goldbach's Conjecture_素数筛选法
摘要:题目大意: 让你输入n,然后求出n里面可以拆分为多少对素数的和(两个素数可以是相同的)。解题思路: 先把素数打表,然后用素数筛选法得结果。#include#includeusing namespace std; int p[8]={4,2,4,2,4,6,2,6};int num[35000];int Prime(int n)//判断素数{ int i=7,...
阅读全文
posted @
2011-11-07 00:20
cchun
阅读(244)
推荐(0)
HDU1297_Children’s Queue_递推题
摘要:题目大意: 让你输入一个数n,代表有n个人,然后n个人里面,一定不能有一个女的是孤立的,当然,也可以没有女的。要你输出所有可能的种类。解题思路: 求递推式。 情况一:(最后是以男生结尾的)这时候是:f[n-1]+男; 情况二:(最后是以女生结尾的) 1.这时候有可能:f...
阅读全文
posted @
2011-11-06 20:13
cchun
阅读(264)
推荐(0)
HDU3199_Hamming Problem_类似丑数
摘要:背景知识: 丑数是指那些因子只含2,3,5的数,为方便起见,1也视为丑数,故1,2,3,4,5,6,8,9,10,12,15是最前面的丑数。但是本题不是要求丑数,只是思想类似。题目大意: 给你三个素数a,b,c,然后要求用这个三个数生成他们合数,然后输出第几个合数。解题思路:类似于丑数的思想由底往上生成。#includeconst int MAX=1...
阅读全文
posted @
2011-11-06 18:29
cchun
阅读(199)
推荐(0)
HDU1049_数学水题
摘要:水水,弱弱飘过~编译就省了吧。#includeusing namespace std;int main(void){ int len,n,d; while(cin>>len>>n>>d,len||n||d) { int temp=0; temp=len-n; int ans=temp/(n-d); if(temp%(n-d)) ans++; cout
阅读全文
posted @
2011-11-06 13:40
cchun
阅读(98)
推荐(0)
HDU1115_Lifting the Stone_凹凸多边形重心_可作为模板
摘要:题目大意: 让你输入一个n边形的n个点的坐标,要你求这个多边形的重心。解题思路: 用叉积的思想把多边形给分割成多个小三角形,就可以搞定啦。 贴公式:C=sigma(Ai * Ci) / A (i=1…N) Ci=Centroid(△ O Pi Pi+1) = (O + ↑Pi +↑Pi+1 )/...
阅读全文
posted @
2011-11-06 13:04
cchun
阅读(174)
推荐(0)
ACM入门_STL简介_转
摘要:ACM入门之STL简介第二章 STL简介1.STL是什么作为一个C++程序设计者,STL是一种不可忽视的技术。Standard Template Library (STL):标准模板库,更准确的说是 C++ 程序设计语言标准模板库。STL是所有C++编译器和所有操作系统平台都支持的一种库,说它是一种库是因为,虽然STL是一种标准,也就是说对所有的编译器来说,提供给C++程序设计者的接口都是一样的...
阅读全文
posted @
2011-11-06 11:39
cchun
阅读(399)
推荐(0)
HDU2108_Shape of HDU_判断凹凸
摘要:题目大意: 让你逆时针输入一个n边行n个点的坐标,然后判断这个n边形的凹凸性。解题思路: 利用两向量的叉积就可以秒掉。不过一开始对叉积理解得还不是很好。所以调试了20分钟,汗!~~水!~~~ 再看一遍叉积吧:计算矢量叉积是与直线和线段相关算法的核心部分。设矢量P = ( x1, y1 ),Q = ( x2, y2 ),则矢量叉...
阅读全文
posted @
2011-11-06 10:51
cchun
阅读(191)
推荐(0)
HDU2036_改革春风照大地_点求多边形面积
摘要:题目大意: 给你逆时针n个坐标点,要求求一个多边形的面积(多边形可能为凸多边形or凹多边形)。解题思路: 利用叉积的思想,改进版是只要求一个循环的点的关系。S=0.5*abs(x1*y2-y1*x2+x2*y3-y2*x3+...+xn*y1-yn*x1);代码:#includeconst int MAX=105;using namespa...
阅读全文
posted @
2011-11-06 09:42
cchun
阅读(162)
推荐(0)
计算几何基础
摘要:在此献上一个牛逼网站:计算机几何概述:http://dev.gameres.com/Program/Abstract/Geometry.htm矢量的概念: 如果一条线段的端点是有次序之分的,我们把这种线段成为有向线段(directed segment)。如果有向线段p1p2的起点p1在坐标原点,我们可以把它称为矢量(vector)p2。 矢量加减法: 设二维矢量P = ( x1, y1 ),...
阅读全文
posted @
2011-11-06 08:49
cchun
阅读(175)
推荐(0)
HDU1086_You can Solve a Geometry Problem too_判断两线段相交
摘要:背景知识:判断两线段是否相交: 我们分两步确定两条线段是否相交: (1)快速排斥试验 设以线段 P1P2 为对角线的矩形为R, 设以线段 Q1Q2 为对角线的矩形为T,如果R和T不相交,显然两线段不会相交。 (2)跨立试验 如果两线段相交,则两线段必然相互跨立对方。若P1P2跨立Q1Q2 ,则矢量 ( P1 - Q1 ) 和( P2 - Q1 )位于矢量( Q2 - Q1 ) 的...
阅读全文
posted @
2011-11-06 02:08
cchun
阅读(328)
推荐(0)
产生数的全排列(暴力深搜,比STL的快)_模板
摘要:产生数的全排列。速度快,哈,怕超时的时候,试试看。#include#includeint a[1001];int m;void f1(int visited[],int y){ int i; if(y==m+1)//输出函数,历遍一组,输出一组 { /* 要用到全排列的,可以在这里操作 */ ...
阅读全文
posted @
2011-11-04 03:13
cchun
阅读(686)
推荐(0)
03Codeforces Beta Round #92 (Div. 2 Only) _B题
摘要:题目大意: 让你输入n,m,n为数字的个数,m为数字的位数(数字可以出现前缀零)。然后要求你用一种规定来从新排列每一个数,比如3257按照(3,2,4,1)的规则就变成了5273.(要求每一个数都按照这种规定),其实规定就是数字的位数的全排列。最后要求输出变换后的数字组合中的最大值减去最小值的差值最小。找出这个最小差值。(n,mn>>di) { memset(sub,0,siz...
阅读全文
posted @
2011-11-04 03:09
cchun
阅读(143)
推荐(0)
Codeforces Beta Round #92 (Div. 2 Only) _A题
摘要:题目大意: 有一个n个人的队伍,然后有一个人在其中,这个人说在他的前面的人数不少于a个人,在他后面的人不多于b个人。然后要你求出他可能位置的个数。解题思路:直接模拟下嘛,不过好像我的方法烂得很啊。。。好吧。毕竟还是自己的心血。上代码。代码:#includeusing namespace std;const int MAX=105;int main(void){ int...
阅读全文
posted @
2011-11-04 03:03
cchun
阅读(183)
推荐(0)
HDU2515_数学规律题
摘要:题目大意: 让你输入n,代表有n个数,然后再打一个n(n-1)/2的数表,代表n个数的和。解题思路: 慢慢找规律:代码:#includeusing namespace std;int main(void){ int n,num[2505],tal; cin>>n; tal=n*(n-1)/2; for(int i=1;i>num[i]; int a1=(num...
阅读全文
posted @
2011-11-02 23:16
cchun
阅读(204)
推荐(0)
HDU2553_N皇后_位运算DFS
摘要:题目大意:N皇后解题思路:用位运算dfs。代码:#includeusing namespace std;int tal,sum;int n;void dfs(int row,int ld,int rd,int deep){ int pos,p; if(row!=tal) { pos=tal & ~(row | ld | rd); while(pos!=0) { p=pos & -pos;...
阅读全文
posted @
2011-11-02 22:47
cchun
阅读(157)
推荐(0)
HDU1171_Big Event in HDU_母函数
摘要:题目大意: 要你输入n,代表学院里面有n种设备,并且在下面输入n行,每一行输入v,m代表设备的价格为v,设备的数量是m.然后要求把这些设备的总价值分摊,尽量平分,使其总价值接近相等,最好是相等。解题思路: 一开始有点儿难转换为母函数,好像很多牛人都用DP做嘞,速度上应该更快吧。转换为母函数的思路是:把设备排列组合,把所有可能的组合都打出来,然后从总价值的中间开始搜,...
阅读全文
posted @
2011-11-02 22:13
cchun
阅读(325)
推荐(0)
HDU2152_Fruit_母函数
摘要:题目大意: 让你输入n,m,m代表要买m个水果,n表示有n种水果,然后输入n组数据,每组数据有一个s,e.表示每种水果必须要买s到e这么多个。最后要求输出有多少种组合。解题思路: 求组合的东西,以后要多想想母函数,直接写出生成函数G(x)=(fru[1].s……fru[1].e)(fru[2].s.……fru[2].e)……(fru...
阅读全文
posted @
2011-11-02 20:53
cchun
阅读(180)
推荐(0)
HDU1709_HDU 1709 The Balance(母函数/生成函数)
摘要:题目大意: 让你输入n,然后输入n个数,而n个数代表n个砝码的重量,给你一个天枰,然后要求你算出在n个砝码的总重量内,天枰无法计算出的重量。解题思路:一开始瞄不出是母函数,有点别扭,反复看了几遍题目了,想了不可能是母函数啊,因为天枰可以测出的重量有可能是两个砝码的重量和,而母函数可以解决这个么?母函数不都是用来求组合的咩?好吧...
阅读全文
posted @
2011-11-02 19:49
cchun
阅读(429)
推荐(0)
HDU1134_Game of Connections 卡特兰数
摘要:解题思路: 看着数据,有点儿像卡特兰数,直接写了看,就过了。。。前几项为 (OEIS中的数列A000108): 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263...
阅读全文
posted @
2011-11-02 00:55
cchun
阅读(235)
推荐(0)
HDU1130_How Many Trees?(卡特兰数 _java)
摘要:题目大意: 就是给你1到N个数,让你求他能构成多少种二叉树;题目分析: 这里又是一种组合数学里的重要知识点!Catalan数的应用。 Catelan有直接的公式,用java的BigInteger类就可以迅速搞掉了,用c/c++要慢慢模拟,不过速度会更快~各有特色吧。Java用了140MS...
阅读全文
posted @
2011-11-02 00:33
cchun
阅读(728)
推荐(0)
大的FIbonacci数列_Java求法
摘要:采用Java大数类打表的方式import java.math.BigInteger;import java.util.Scanner;public class HDU1130{ public static void main(String []args) { Scanner cin=new Scanner(); BigInteger fib[]=new Bigeter[105]; fib[1...
阅读全文
posted @
2011-11-01 18:45
cchun
阅读(308)
推荐(0)
HDU1063_高精度
摘要:题目大意: 要求你求一个浮点数的N次方,高精度输出。解题思路: 直接用java中的BigDecimal类就可以解决了。import java.math.BigDecimal; import java.util.Scanner; public class Main { public static void main(String args[]) { ...
阅读全文
posted @
2011-11-01 02:16
cchun
阅读(173)
推荐(0)