摘要: LINK:HDU 2554这是昨天晚上小练里面比较有趣的一道题~我在做的时候思路错了,以为数字的排列会有规律,结果后面发现就算有也很难找......╮(╯▽╰)╭看了网上的题解,有一种恍然大悟的感觉,就直接把它当做方程来解,只要符合题意的x,y存在即可~题解: 假设双胞胎数为n,那么就共有2n个人,把双胞胎分开,分别记为A类和B类。在进行排列时,ak代表【年龄为k,同时所属分类为A的人在排列中的位置】,同理,bk则表示【年龄为k,所属分类为B的人在排列中的位置】~(注:在此假设ak 2 #include 3 int main() 4 { 5 int n; 6 while( ... 阅读全文
posted @ 2013-08-22 16:12 Teilwall 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 二分图【KM算法及其具体过程】【转自:http://www.cnblogs.com/jackge/archive/2013/05/03/3057028.html】(1)可行点标:每个点有一个标号,记lx[i]为X方点i的标号,ly[j]为Y方点j的标号。如果对于图中的任意边(i, j, W)都有lx[i]+ly[j]>=W,则这一组点标是可行的。特别地,对于lx[i]+ly[j]=W的边(i, j, W),称为可行边;(2)KM 算法的核心思想就是通过修改某些点的标号(但要满足点标始终是可行的),不断增加图中的可行边总数,直到图中存在仅由可行边组成的完全匹配为止,此时这个 匹配一定是最佳 阅读全文
posted @ 2013-08-21 20:31 Teilwall 阅读(285) 评论(0) 推荐(0) 编辑
摘要: LINK:8-19-小练 POJ 1651题目:Multiplication PuzzleTime Limit:1000MSMemory Limit:65536KB64bit IO Format:%I64d & %I64uSubmitStatusPracticePOJ 1651DescriptionThe multiplication puzzle is played with a row of cards, each containing a single positive integer. During the move player takes one card out of t 阅读全文
posted @ 2013-08-20 21:13 Teilwall 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 8-17-二分图这次题目的A、B、C是二分图的最大匹配问题~算法讲解转自:http://ycool.com/post/cfnym64【目前我在网上看到的讲的最清楚的╮(╯▽╰)╭】图1图2图1是我给出的二分图中的一个匹配:[1,5]和[2,6]。图2就是在这个匹配的基础上找到的一条增广路径:3->6->2->5->1->4。我们借由它来描述一下二分图中的增广路径的性质:(1)有奇数条边。(2)起点在二分图的左半边,终点在右半边。(3)路径上的点一定是一个在左半边,一个在右半边,交替出现。(其实二分图的性质就决定了这一点,因为二分图同一边的点之间没有边相连,不要忘记 阅读全文
posted @ 2013-08-19 21:34 Teilwall 阅读(873) 评论(0) 推荐(0) 编辑
摘要: 8-18-小练A.HDU 1172 猜数字采用枚举~【赤果果的暴力~】代码: 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int x[111],y[111],s,ss,vis[4],dis[4]; 7 char a[111][5]; 8 9 void find(int b,int c)10 {11 if(b==(a[c][0]-'0') && !vis[0])12 {13 s++;vis[0]=1;14 return;15 }16 if(b==(... 阅读全文
posted @ 2013-08-19 21:08 Teilwall 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 8-15-小练这次的题目......只觉得泪奔啊......T TA.HDU 1042 N!因为0 2 #include 3 using namespace std; 4 5 int a[40000]; 6 7 int main() 8 { 9 int n,i,j;10 while(~scanf("%d",&n))11 {12 if(n==1 || n==0){printf("1\n"); continue;}13 a[0]=1; //用来记录数字的位数14 a[1]=1;15 ... 阅读全文
posted @ 2013-08-16 23:37 Teilwall 阅读(278) 评论(4) 推荐(0) 编辑
摘要: 8-14-小练 这次是我这组出题......我出的是B、C、D【虽然本来是想出的很难......╮(╯▽╰)╭但是,没找到AC1000+同时又让我想出的难题......SO...我出的真的不难= =】,荆红出的是A,从此不再出的是D......A.HDU 1789 Doing Homework again用贪心做~先按分数从大到小排,若分数相同则按天数从大到小排。排好后,从头开始扫描,扫到未标记的点,就进行标记(A),同时看A点后是否还有要在A点的天数之内一定要完成的作业,直到把A点的天数填完,若天数不够填,则证明哪一门作业无法按时完成~代码: 1 #include 2 #include... 阅读全文
posted @ 2013-08-15 17:31 Teilwall 阅读(200) 评论(0) 推荐(0) 编辑
摘要: B.HDU 1846 Brave Game算是最简单的入门博弈题吧......呃......我用的......算是不是方法的方法吧——找规律~可以发现:X-M为奇数时,先手会输;而为偶数的时候,先手会赢~代码: 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int main() 7 { 8 int t,x,y; 9 scanf("%d",&t);10 while(t--)11 {12 scanf("%d%d",&x,&y);13 int k=y+1;... 阅读全文
posted @ 2013-08-15 10:55 Teilwall 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 链接:夜间活动昨天的比赛好郁闷.......倒不是因为题目......在快要比赛的时候突然所有的网站都进不去了.......改了半天的DNS & IP......比赛都比了1个多小时才进去.....都不想做题了= =|||A.POJ 3210 Coins这道题感觉似曾相识......貌似很久以前做过= =其实仔细想一下,题目并不难~若n为偶数的话,那么"偶正+偶负"翻转的一定是偶数次;而"奇正+奇负"翻转的一定是奇数次~故没有确定的最少次数~但是,若n为奇数的话,是"奇正+偶负"或"偶正+奇负",翻转的都是 阅读全文
posted @ 2013-08-14 21:02 Teilwall 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 链接:最短路A.HDU 2544 最短路算是最基础的题目了吧.............我采用的是Dijkstra算法.......代码: 1 #include 2 #include 3 #include 4 using namespace std; 5 6 #define inf 0x3f3f3f3f 7 int map[105][105],d[105],vis[105],n,m; 8 9 int Dijkstra()10 {11 memset(vis,0,sizeof(vis));12 for(int i=0;i 2 #include 3 #include 4 ... 阅读全文
posted @ 2013-08-14 14:26 Teilwall 阅读(182) 评论(0) 推荐(0) 编辑