2013年8月21日

8月19号的练习:

摘要: 小Q系列故事――�丝的逆袭 HDU 4500水题: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int main() 7 { 8 int n,m,i,j,a[25][25],b[25][25],max1,left,right; 9 while(scanf("%d%d",&n,&m)!=EOF)10 {11 if(n==0&&m==0)12 break;13 for(i=1;i=1)24 {25 ... 阅读全文
posted @ 2013-08-21 15:21 ~~碾压机 阅读(160) 评论(0) 推荐(0) 编辑
2013年8月20日

8月18号的练习:HDU 1172&&HDU 2112&&POJ 1321&&POJ 3006&&POJ 1837

摘要: 猜数字HDU 1172一道模拟题:水爆了!!竞无从下手就是暴力枚举!! 1 #include 2 #include 3 #include 4 using namespace std; 5 struct line 6 { 7 int x; 8 int y; 9 int z;10 }a[105];11 int main()12 {13 int a1[5],b2[5];14 int n,i,j,k,k1,w,sum;15 while(scanf("%d",&n)!=EOF)16 {17 if(n==0)18 ... 阅读全文
posted @ 2013-08-20 23:31 ~~碾压机 阅读(146) 评论(0) 推荐(0) 编辑

二分图的拓展与应用:HDU 2819&&POJ 1486&&HDU 3488&&HDU1853

摘要: SwapHDU 2819此题主要让我们发现匈牙利算法中记录匹配点编号数组的应用:此数组记录的是左边的第几个与右边的第几个匹配!因为要求对角线匹配,那么进行两两移位就行了。。。注意的是:你把横坐标的数放在左边,竖坐标的数放在右边的话,是移动C。反过来就是移动R。具体看代码:(注意红色字体部分) 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int a[105][105],b[105],vis[105],a1[105],b1[105],n; 7 int dfs(int x) 8 { 9 for(in... 阅读全文
posted @ 2013-08-20 11:04 ~~碾压机 阅读(213) 评论(0) 推荐(0) 编辑
2013年8月18日

二分图的基础与基本应用:POJ 1469&&POJ 3041&&HDU 2255&&HDU1533

摘要: 先把最基础的概念搞清楚:二分图:有两组顶点,一组顶点记为S1,另一组记为S2,S1和S2没有公共的元素,并且所有的边都是连接S1和S2中的点的,对于S1和S2本身,它们内部的任何两个点都没有边相连,这样的无向图就叫二分图。点覆盖集:即是一个点集,使得所有边至少有一个端点在集合里。边覆盖集:即是一个边集,使得所有点都与集合里的边邻接。(其实我觉得这句话很难理解)但是结合这句呢:在一个P*P的有向图中,最小路径覆盖=|P|-最大匹配数。(因为有匹配数的存在,本来要P个边的覆盖因此减小了)二分图的最小顶点覆盖数等于最大匹配数。匈牙利算法:主要二分图的最大匹配数。其实我觉得自学这东西不适合我,可能以前 阅读全文
posted @ 2013-08-18 00:20 ~~碾压机 阅读(251) 评论(0) 推荐(0) 编辑
2013年8月17日

8月15号的练习:HDU 1042&&HDU 1050&&HDU 1181&&HDU 3501&&HDU 2601

摘要: N! HDU 1042一道大数阶乘题目:知道方法还是好实现的。。。对于求大整数的阶乘,可以采用分段相乘的方法,其理论基础是加法的分配律,乘法的分配律。例如 :123456789*123=123*(123*10^5+56789)=123*123*10^5+123*56789;(把他们分段来存储,就不会乘不了了)如果我们用一个数组result[0]=56789,result[1]=123,那么123456789*123就是123*result[0]%10^6和result[1]*123+result[0]/10^6构成的一个数,另result[0]=123*result[0]%10^6,resul 阅读全文
posted @ 2013-08-17 21:13 ~~碾压机 阅读(179) 评论(0) 推荐(0) 编辑
2013年8月15日

8月14号的练习:HDU 1789&&HDU 1846&&HDU 1527&&POJ 1844&&HDU 1142

摘要: Doing Homework againHDU 1789可以用贪心做(网上搜了发现都是用贪心,DP就这么难???)思路:the reduced scores.从大到小排序,(相同就把the deadlines of the subjects从小到大排序)这里可保证耗分数最多的给完成,留下的分数最低。其实这贪心很容易想到。但最坑的是!只给出一个N,我还以为the deadlines of the subjects就在这里取呢!(1~N)之后才发现天数和所扣的分数未知!幸好这个天数就在1000左右,如果在大点肯定超时! 1 #include 2 #include 3 #include 4 #inc 阅读全文
posted @ 2013-08-15 15:08 ~~碾压机 阅读(172) 评论(0) 推荐(0) 编辑
2013年8月14日

8月13号的练习:POJ 3210&&HDU 4506&&HDU2546&&HDU 1026(注意事项)

摘要: CoinsPOJ 3210一道考逻辑的题:(感觉就是找规律)题目意思是:给出n个硬币,无论初始状态怎么样,总有存在一个最小且合适的数m。使其在任何的初始状态翻转m次达到全部向上或全部向下(一次只翻一个硬币)其实你画几个图会发现:奇数是不可能满足全部可能的!(因为偶数时都出来的步骤可以用一个循环(翻加不翻)状态不变)之后画几次发现n为偶数时,总有一个状态需要奇数的翻转才能达到全部向上或全部向下!而n为奇数时,需要最大的偶数次翻转就是(m=n-1)的时候。。。如果感觉只是猜测的话:请用数学归纳法来求证 1 #include 2 #include 3 #include 4 using namespa 阅读全文
posted @ 2013-08-14 18:46 ~~碾压机 阅读(151) 评论(0) 推荐(0) 编辑
2013年8月13日

8月12号的最短路:POJ 1062&&HDU 1317

摘要: 下面是算是难的了吧。。。(不知道还搞得掉吗!)先上这个。。。 昂贵的聘礼 POJ 1062最近比较浮躁。看了好久才懂的。。。首先题已经知道起点!限制条件:因为有等级制度的限制。可用枚举(一个一个物品列出来)之后发现是单向图问题!先看代码吧。 1 #include 2 #include 3 #include 4 using namespace std; 5 int max1,a[105][105],level[105],d[105],m,vis[105]; 6 int distesila() 7 { 8 int i,... 阅读全文
posted @ 2013-08-13 19:34 ~~碾压机 阅读(188) 评论(0) 推荐(0) 编辑

8月12号的(算是)组队赛吧。HDU 3790&&HDU 3665&&HDU 1869&&POJ 1847

摘要: 最近感冒了,状态一直不好,但是发现感冒好了之后,就没有心思做题了,淡定!还有仅仅的十几天就Over了!!今天偷偷瞟了一眼大神们在做的多校联赛。唉~大神们都被虐啊!顿时更没心情了!!还是好好刷题吧。。。这次是最短路的专题:(听说有四种方法:本人只知道两种,还不太会)首先肯定做的是模板题!!!!!因为有两道是做过的,参见以前的代码:HDU 2544和HDU 1874(这里)最短路径问题HDU 3790还是很水的一道题:搞好距离和花费的关系就行了。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 int b[1 阅读全文
posted @ 2013-08-13 17:11 ~~碾压机 阅读(192) 评论(0) 推荐(0) 编辑
2013年8月12日

8月11号的练习:POJ 3094&&HDU 1175&&HDU 2602&&HDU 2059

摘要: QuicksumPOJ 3094非常水: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 int main() 8 { 9 char a[260];10 int n,sum,i;11 while(3)12 {13 gets(a+1);14 if(a[1]=='#')15 break;16 n=strlen(a+1);17 sum=0;... 阅读全文
posted @ 2013-08-12 11:15 ~~碾压机 阅读(156) 评论(0) 推荐(0) 编辑