
ACM程序设计
zgkdzw
这个作者很懒,什么都没留下…
展开
-
POJ 1061(转)扩展欧几里德
此题其实就是扩展欧几里德算法-求解不定方程,线性同余方程。 设过s步后两青蛙相遇,则必满足以下等式: (x+m*s)-(y+n*s)=k*l(k=0,1,2....) 稍微变一下形得: (n-m)*s+k*l=x-y 令n-m=a,k=b,x-y=c,即 a*s+b*l=c 只要上式存在整数解,则两青蛙能相遇,否则不能。 首先想到的一转载 2013-04-16 21:07:18 · 716 阅读 · 0 评论 -
POJ 1386(欧拉路)
在进行题目分析前,先澄清一些概念,一些图论中很重要的概念然后给出思路: 节点度 英文:Node Degree 图论中: 节点度是指和该节点相关联的边的条数。 特别地,对于有向图, 节点的入度 是指进入该节点的边的条数; 节点的出度是指从该节点出发的边的条数。 对于无向图: 思路(很重要): 将一个单词的首字母和尾字母看做结点,该单词看做是一条边。 则依照题意,即判原创 2013-04-19 19:50:01 · 865 阅读 · 0 评论 -
POJ 1041(无向图欧拉回路)
这个题目和POJ 1086不同,1086是有向图欧拉回路,这个是无向图欧拉回路。还有一个很重要的一点,本题目事先声明是连通图,所以不需要进行图遍历验证连通性。剩下的就是判断是否存在欧拉路,然后进行输出。 本题目不要求字典序,但是本代码是按照字典序输出的。 下面是关于七桥问题以及欧拉路的百度百科,不清楚的朋友可以看看:http://baike.baidu.com/view/142962.htm,原创 2013-04-19 23:13:48 · 818 阅读 · 0 评论 -
POJ 图论基础讲解及习题
无向图的连通性 先明白一些概念。 完全图:完全图是指任意两个结点之间都有一个边相连,也就是结点两两相连; 连通图:连通图是指任意两个结点之间都有一个路径相连; 割点:若一个点删除后(也就是与之相连的边统统去掉),无向图不再连通,那么此点称为割点。 桥:若一条边断去后,无向图不再连通,那么此边称为桥。桥有一个很好的性质,就是DFS一个无向图,那么这个过程必定要经转载 2013-04-19 10:59:20 · 958 阅读 · 0 评论 -
POJ 1094(拓扑排序)
思路: 1.读入一条边后,先做Floyd,确认是否有环,若有环退出,输出"Inconsistency",矛盾 2.再做Toposort,判断已读入的几条边是否可以满足输出,在进行拓扑排序时,观察出度为0的点有多少, 若有大于两个以上的点,则退出,不考虑,继续读入边,若恰好有一个点,则继续拓扑排序,直到最后 n个点都排好序,则输出"Sorted sequence determined",若有转载 2013-04-18 19:01:09 · 583 阅读 · 0 评论 -
poj 2367(拓扑排序TopSort)
题意简单,说到底就是求符合的拓扑排序。 代码如下: #include #include #include #define maxn 100 using namespace std; struct edge { int v, next; }; int g[maxn], n, list[maxn]; edge e[maxn*maxn]; bool topsortdfs( int原创 2013-04-18 14:51:28 · 722 阅读 · 0 评论 -
poj 2188(归并排序求逆序对)
题目比较绕,但是大意就是求逆序对(帮牛们解开缠绕在一起的绳子),此题允许O(n2),但是nlogn就可以过。 主要就是如何得到要排序的序列,main函数里可以清晰看出来。 下面是代码: #include #include #include #define M 1001 using namespace std; int n, a[M], xu[M], b[M] ; int m原创 2013-04-17 22:35:59 · 782 阅读 · 0 评论 -
poj 2104(划分树)
sorry,这道题目我还没弄明白,如果以后有机会我会好好看别人解法做这个题目的。 现在时间紧迫,还有很多基本算法和数据结构不会,只能忍痛割爱了,希望能谅解,离比赛越来越近了,还有很多算法更值得我去学......原创 2013-04-17 19:11:45 · 667 阅读 · 0 评论 -
POJ 2002 二分求解
题意:给出平面上n个点的坐标,求这些点所能组成的正方形的个数。 思路:对n个点排序后,枚举对角线,计算出另外对角的坐标,二分查找它们是否在这n个点中,如果都在,则计数器增1。 利用三角函数公式容易推出另外两点坐标。注意一个合法的正方形会被计数2次,故最终答案要除2。 ---------------------------------------------------------原创 2013-04-16 22:31:08 · 794 阅读 · 0 评论 -
POJ 2115 扩展欧几里德解线性同余方程
这个题目是其实就是求解线性同余方程,本质就是扩展欧几里德定理。参考我的博文POJ 1061:http://blog.youkuaiyun.com/zgkdzw/article/details/8811125 那里有详细讲解扩展欧几里德。这里就简单贴上代码: #include #include using namespace std; long long gcd( long long a, l原创 2013-04-16 21:09:37 · 686 阅读 · 0 评论 -
编程之美2013 管道系统
已经好久没写代码了,看到这个题目,模板题目,太水了。马上找个模板套上去,交了。(不过套模板,真是坏习惯......) 代码如下: #include #include #include #include #include #include using namespace std; const int MAXN = 202; int c[MAXN][MAXN]; int dis[MA原创 2013-04-16 22:45:08 · 736 阅读 · 0 评论 -
POJ 3737 小数学题
因为只做过二分题目,三分没做过,编程之美2013初赛跪了。赛后找个练手,结果发下poj3737,就是数学推导,无语......看来还得再找个练练....... 题意:求一个面积为s的圆锥体的最大体积,以及对应的底面半径和高。 思路:基础几何。注意面积 s = s侧面+s底面。对于PI,以后就取PI=acos(-1.0)。 S=pi*r*l + pi*转载 2013-04-16 21:04:29 · 762 阅读 · 2 评论 -
编程之美2013 集会
三分题目,比较简单: 代码如下: #include #include #include #define maxn 50007 #define eps 0.0000009 using namespace std; double d[maxn][2]; int n; int main() { int ca, w, i; double a, l, r, t1,原创 2013-04-16 21:02:08 · 700 阅读 · 0 评论 -
POJ 2186(有向图的强连通分量Tarjan)
首先转载ByVoid大神的日志一篇:http://www.byvoid.com/blog/scc-tarjan/ 这个可以说是我看过最好的讲解tarjian算法的文章了,实例分析,带图片,非常有助于理解,这里请允许我代表我本人以及看过我的这篇博文的读者向THU ByVoid大神致以崇高的敬意! 下面转入正题,本题可以说是很明显的tarjian算法题目,如果说看不出来,这里提供一篇日志:http原创 2013-04-20 11:54:12 · 735 阅读 · 0 评论