2011年7月14日
摘要: 大体思路都是找强连通子图,缩点,只是两个题目的所求不是太一样。hdu 3836:参考了qianshou的代码,网上的很多看的不是很懂,他写的很清晰,很好看懂http://blog.csdn.net/wsniyufang/article/details/6604503然后就是还要了解一点Tarjan算法,下面的那个网址讲的很清楚http://www.byvoid.com/blog/scc-tarjan/剩下的就是要自己写一个getans()的求结果的程序。经过缩点后,剩下的就是一个DAG图了。至于为什么是取入度和出度为0的点中最大的,我想了很久,还是不是特别清楚。我是这么想的,剩下的图如果要全联 阅读全文
posted @ 2011-07-14 15:17 FreeAquar 阅读(439) 评论(0) 推荐(0) 编辑
  2011年7月13日
摘要: 这道题感觉最难的是想到他是一个2-sat,即使我是按2-sat题目去找的……想了很久,还是觉得像贪心,但是贪心之后就不太好做了,以下是参考别人的代码写的,翻了好多代码,都不太理解,最后感觉这个感觉比较好理解吧,,但忘了是谁的blog里面的了先不写明出处了先/* 题意是:在一个有0,1,2,。。。n-1 个点组成的圆中,只能从圆里面和外面画线, 问你能否将m条边连起来,并且不能相交。 我的想法是:对于每条边要么从圆里面走,要么从圆外面走。那么,我们这样定义i 表示从里面走,i+n表示从外面走。然后我们遍历所有的两两边,如果他们交错了, 那么他们之间就有这样的关系:i从里面走,那么j就得... 阅读全文
posted @ 2011-07-13 10:08 FreeAquar 阅读(270) 评论(0) 推荐(0) 编辑
  2011年7月12日
摘要: 题意:中文的,不解释了思路:2-sat基本题,练习的第一道题目,网上找了个模板话说这个vector< vector<int> >还真是弄了好久的,所以先写了一个一维的弄了好久好久……2-sat终于有点思路了,各种错啊……这个是一维的:#include<iostream>#include<string>#include<vector>#include<stack>#include <cstdio>#include<algorithm>#include <cstring>using name 阅读全文
posted @ 2011-07-12 13:52 FreeAquar 阅读(310) 评论(0) 推荐(0) 编辑
  2011年7月7日
摘要: 这题不知道说什么了,不过是个好题先自己写差分约束,然后WA了……discuss里说超时也显示WA - -|||,c++交也是TLE……尴尬还有一个重点, 就是我在discuss里看到的。flymouse always compared the number of his candies with that of snoopy’s. He wanted to make the difference between the numbers as large as possible while keeping every kid satisfied因为是班长做主,所以程序必须是从1号为起点,否则如. 阅读全文
posted @ 2011-07-07 23:51 FreeAquar 阅读(522) 评论(0) 推荐(0) 编辑
  2011年7月5日
摘要: 题意:中文的,不解释了思路:唯一的难点是如何处理最短路径的输出,我的解决办法是将最短的路径储存在链表里,然后放到堆栈了保护起来+倒序一下#include <iostream>#include <cstdio>#include <cstring>#include <stack>using namespace std;struct Path{ int x, y; Path *forward; Path() {x=0; y=0; forward=NULL;}}path;stack<Path> st;int mov[][2]={{1, 0}, 阅读全文
posted @ 2011-07-05 10:25 FreeAquar 阅读(511) 评论(0) 推荐(0) 编辑
  2011年7月4日
摘要: 题意:给出一些长度的网线N,求等长最大的长度M思路:很好形成,很明显的二分,然而让人特无语的是double,被精度整了好几次后现在看到都挺虚的直接计算肯定要用到eps,想了想,用字符串转换,还是wa了N次之后,看discuss,还是没过,最后看了!的博客,终于改过了,写了好久--|||code:#include <iostream>#include <cstdio>#include <climits>#include <cstring>#include <cstdlib>#include <string>#define n 阅读全文
posted @ 2011-07-04 22:13 FreeAquar 阅读(487) 评论(0) 推荐(0) 编辑
  2011年7月1日
摘要: 是一入门的好题目,也是一道神奇的题目看来discus才知道G++是错的,C++是对的 -. - |||题意:给出N个分数,要求去掉n1个最高分,n2个最低分,然后算平均分。其实不太难,只是数据量太大,不能一次读入,但是可以看到,n1,n2都很小很小,只用全部加起来再减去n1个最大的数,减去n2个最小的数,于是,问题简化,球所有数的和,再减去即可,对于最大n1和最小n2求法,有了以下三种方法1.用sort:建立一个11的数组,然后high中全置零(任何分数大于0),low中全INF(任何分数小于INF),这样,当比high[n1]大的时候,就替换他,然后sort(……,cmp)一次,此时high 阅读全文
posted @ 2011-07-01 11:30 FreeAquar 阅读(319) 评论(0) 推荐(0) 编辑
  2011年6月30日
摘要: //MiYu原创, 转帖请注明 : 转载自 ______________白白の屋abstract :本文从各个方面讨论了泡妞与做题之间的相似之处与不同点,尽量的站在一个公平的角度阐述这一问题,所得的研究成果填补了国内外的理论空白。 -泡了一个好妞就好像做了一道难题一样快感都是相同的。 -首先这两项活动都需要耗费大量的精力,一般都是20岁左右的时候,最有激情最有精力参加这两项活动。所以参加acm的同时大多都是适婚男青年,主要人群两者基本相同。 -就像普通人一辈子泡妞的日子不过三五年,acm也有五年参赛的限制。 -假如你泡妞泡的特有成就,比如搞定了张梓琳。就好比参加了final一样,顶多你再参加一 阅读全文
posted @ 2011-06-30 12:32 FreeAquar 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 题意:给N个点,M条边,每个边有相应的权值,然后求出用M条边中的N-1条边形成的树中,边权值最大与最小的差为所有树中最小。思路:想到了并查集,然后借用克鲁斯卡尔的思想,边排序,再枚举一下即可。卡了很久,最后才发现是因为初始化并查集的时候N是从0~N-1了,还有就是初始化cMin时,却忘了初始化temp……用我可怜的小马甲交了N次………#include <iostream>#include <cstdio>#include <algorithm>#define MAXN 105#define INF 1000000004using namespace std; 阅读全文
posted @ 2011-06-30 01:02 FreeAquar 阅读(406) 评论(0) 推荐(0) 编辑
  2011年6月27日
摘要: #include <iostream>#include <cstdio>#include <cstring>#include <string>#include <queue>#include <map>#define eps 1e-6using namespace std;int m, n, count[32];double Map[32][32];map<string, int> money;string type;bool spfa(){ queue<int> q; double dist[32 阅读全文
posted @ 2011-06-27 15:39 FreeAquar 阅读(209) 评论(0) 推荐(0) 编辑