<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cici天堂]]></title><description><![CDATA[活着...vivi]]></description><link>https://blog.youkuaiyun.com/cicirise</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cicirise]]></copyright><item><title><![CDATA[POJ 3463 Sightseeing]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/5099961</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/5099961</guid><author>cicirise</author><pubDate>Tue, 29 Dec 2009 17:12:00 +0800</pubDate><description><![CDATA[POJ 3463 Sightseeing题目大意：旅行团每天固定的从S地出发到达T地，为了省油要求尽量走最短路径或比最短路径长1单位距离的路径，求满足条件的路径条数分析：根据描述可知，本题的要求就是要求出最短路和比最短路长1的次短路，因此可用Dijkstra来解决。具体做法如下：用两组数分别记录最短路和次短路的长度（dist），条数（cnt），访问标记（used），建一个优先队列，元素单位]]></description><category></category></item><item><title><![CDATA[POJ 3013 Big Christmas Tree 手写Heap和STl对操作]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/4972313</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/4972313</guid><author>cicirise</author><pubDate>Wed, 09 Dec 2009 16:00:00 +0800</pubDate><description><![CDATA[题目大意是：给定一批材料，组装成一棵圣诞树，使得总的花费最小。关于最小花费的具体规则是是：圣诞树是一颗无向树形图，其中，编号为1的节点为根节点，原始图中每条边具有边权（unit）：材料的单位价值，每个点也有一个权(weight)：点的重量。生成树中，各个点处的花费是指向该点的边权（unit）*该点的子树中所有点的重量（weight）和，总的花费则是生成树中所有点的花费之和。解题思路：直接根据题]]></description><category></category></item><item><title><![CDATA[Pku 1470 Closest Common Ancestors ]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/4945144</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/4945144</guid><author>cicirise</author><pubDate>Sat, 05 Dec 2009 11:27:00 +0800</pubDate><description><![CDATA[最近在学习LCA的Tarjan算法，用来做1330秒过了。但是做1470的时候遇到了不小的麻烦。本题大意：给出一棵树，给出所有的LCA询问，输出所有点成为LCA点的次数（为0不输出）；分析：这道题和1330的不同之处在于1.LCA多次询问，需要另外建立查询表统计2.输入时候需要特殊处理 接着道题时贡献了无数的RE，原因不清楚，都是用邻接表建树写的，后来改成STl里的vect]]></description><category></category></item><item><title><![CDATA[POJ 1151 Atlantis 线段树+离散化]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/4204155</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/4204155</guid><author>cicirise</author><pubDate>Wed, 20 May 2009 16:09:00 +0800</pubDate><description><![CDATA[题意比较简单，给出平面上一系列矩形，求出总的覆盖面积。本题数据量不是很大，矩形数量最多100个，其实可以不用线段树的，不过的确是很经典的线段树类型的题。1.用line结构体数组记录各纵边，标记左边和右边。2.矩形的长度范围达到200000，有必要先进行离散化处理，用Index数组来保存横坐标。3.对Index和纵向的线段进行排序，排序的时候使用STL里的sort函数会比较高效，（我用s]]></description><category></category></item><item><title><![CDATA[星期一流亡日志]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/4089245</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/4089245</guid><author>cicirise</author><pubDate>Sat, 18 Apr 2009 11:12:00 +0800</pubDate><description><![CDATA[ 昨天晚上睡得太晚，今天上午开始就浑浑噩噩的，逃了一天的课，一个人在地下看代码发呆。四点半的时候，感到大脑严重缺氧，回寝室躺了一会儿，可是依然没睡着。汇编的课依旧要上，这门课一直到现在都不明白，就像桌面上那只瞪大眼睛瞅着我的颓废的鱼，我不懂他，他也不明白我。17点40分，看不到一丝阳光了，依旧眯着眼，然后迷迷糊糊的上了四号楼413。路上好像有人叫我的名字，可是回过头就看到一堆蒙蒙的人影。后来去A食]]></description><category></category></item><item><title><![CDATA[c语言规范]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/4089243</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/4089243</guid><author>cicirise</author><pubDate>Sat, 18 Apr 2009 11:09:00 +0800</pubDate><description><![CDATA[1.变量定义的规范:变量命名的一般约定为:[限定范围的前缀]+[数据类型前缀]+[有意义的单词].[限定范围的前缀]表示该变量是全局的，静态的，类内的成员变量或局部变量。变量默认即为局部变量，固无须任何限定范围的前缀。[数据类型前缀]表示该变量数据类型如INT，LONG等。[有意义的单词]表示变量使用能够表示该变量真正意义的单词或单词的缩写组合表示，每个单词开头一个字母大写。该条约定按执行的级，可]]></description><category></category></item><item><title><![CDATA[POJ 2942—— Knights of the Round Table双连通分量+交叉染色]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/4089144</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/4089144</guid><author>cicirise</author><pubDate>Sat, 18 Apr 2009 10:31:00 +0800</pubDate><description><![CDATA[很经典的题目，可是我做了四天才做出来，题意是：一群骑士，某些骑士之间互相憎恨，如果在一起容易发生争斗事件，因此他们只有满足一定条件才能参加圆桌会议：1.圆桌边上任意相邻的两个骑士不能互相憎恨；2。同一个圆桌边上的骑士数量必须是奇数；分析： 让不互相憎恨的骑士才能坐在一起，可以如下处理：将各骑士看成点，不互相憎恨的骑士之间存在边，建立无向图。先按照要求1，将所有能坐在一起的骑士分为一组，全部骑士]]></description><category></category></item><item><title><![CDATA[POJ 3352 Road Construction解题报告]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/4089065</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/4089065</guid><author>cicirise</author><pubDate>Sat, 18 Apr 2009 09:58:00 +0800</pubDate><description><![CDATA[题目大意很简单：给定一个双向连通的公路网，当某些公路路段检修的时候可能会由于该段公路不通，可能会使某些旅游点之间无法通行，求至少新建多少条公路，使得任意对一段公路进行检修的时候，所有的旅游景点之间仍然畅通；分析：检修某一路段导致公路网不畅通的原因必然是该段公路在图中是一桥，因此，完全畅通的方法就是，家最若干条边，使图中不存在桥。先找出所有的桥，将双连通分量进行缩点，得到一个树形图，将所有的叶子]]></description><category></category></item><item><title><![CDATA[割点和桥算法——摘自《算法艺术与信息学竞赛》]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/4068611</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/4068611</guid><author>cicirise</author><pubDate>Mon, 13 Apr 2009 10:57:00 +0800</pubDate><description><![CDATA[最近在做圆桌骑士的问题，在一个无向图中求出双连通分量，判断各双连通分量中是否含有奇圈，求出不能构成奇圈的节点的个数。思路大概明确了，但是写的时候老是出现问题，所以专题又看了一下双连通分量的算法，看来看去，还是刘汝佳的最经典，索性直接手打出来，方便以后再看void DFS(节点编号k,k的父亲节点编号father,deep){ int i,tot; 染色C_k=灰色；D_k=deep记录顶点k在树中]]></description><category></category></item><item><title><![CDATA[POJ 3177 Redundant Paths]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/3980585</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/3980585</guid><author>cicirise</author><pubDate>Wed, 11 Mar 2009 15:48:00 +0800</pubDate><description><![CDATA[我也慢慢改成了纯c代码的习惯了，原因是前些时间提交做了对比，c和c++的输入输出的差异，导致时间竟能差异150ms以上，呵呵，以前都没注意到 题意大致上是： 一群牛将被在一个特定路径构成的农场上迁移，每两块农场之间都至少有一条通道，这些牛要求每两块路径至少要有两条通道，求最少需要修建多少条路才能满足要求 思路：每两块农场之间至少有两条通道，也就是说要求添加若干边，将整个图变成一双连]]></description><category></category></item><item><title><![CDATA[POJ 1659 Frogs Neighborhood Haval]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/3927794</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/3927794</guid><author>cicirise</author><pubDate>Mon, 23 Feb 2009 13:32:00 +0800</pubDate><description><![CDATA[这道题可以完全按照Haval处理度序列的方法做，看评论上说暴搜可以过，可能数据量还是小了一点，但是我没敢写，太麻烦了。呵呵，Haval真是让人惊艳。需要注意的是最后的输出格式，我最初完全按照最后的格式要求，在每两个数据之间打一个空格，中间不换行，结果wa了n次，后来参照了Tiaotiao大牛的做法，在每一行的最后不打空格，换成回车，然后就0ms很轻松的过了。呵呵，最近做题，每做一道题，都能学到至少]]></description><category></category></item><item><title><![CDATA[图的度序列:Havel定理]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/3927777</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/3927777</guid><author>cicirise</author><pubDate>Mon, 23 Feb 2009 13:29:00 +0800</pubDate><description><![CDATA[给定一个非负整数序列{d1,d2,...dn}，若存在一个无向图使得图中各点的度与此序列一一对应，则称此序列可图化。进一步，若图为简单图，则称此序列可简单图化。可图化的判定比较简单：d1+d2+...dn=0(mod2)。关于具体图的构造，我们可以简单地把奇数度的点配对，剩下的全部搞成自环。可简单图化的判定，有一个Havel定理，是说: 我们把序列排成不增序，即d1>=d2>=...>=dn，则d]]></description><category></category></item><item><title><![CDATA[POJ 1236 Network of Schools ]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/3922591</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/3922591</guid><author>cicirise</author><pubDate>Sun, 22 Feb 2009 17:34:00 +0800</pubDate><description><![CDATA[题目大意:N（2 分析要点：1.如果网络中存在强连通分量G，从G强连通分量中任意一个点出发，都能遍历G这个连通分量，而任意通过G以外的点进入G，都可以通过G中的任意一个出度大于1的点离开G。这样，可以将网络中的强连通分量看成一个点，也就是传说中的“缩点”（详见《 缩点》），这样图就得到了简化。寻找强连通分量的方法用kosaraju算法。2.新生成的图是一个有向无环图，如果将图中的无]]></description><category></category></item><item><title><![CDATA[kosaraju+缩点]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/3922569</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/3922569</guid><author>cicirise</author><pubDate>Sun, 22 Feb 2009 17:30:00 +0800</pubDate><description><![CDATA[1、对图G进行深度优先搜索，按递归调用完成的先后顺序对各顶点编号。2、将原图的每条边反向——直接转置邻接矩阵即可。得到新的一个图G‘。3、从编号最大的顶点开始对G’进行深度优先搜索。如果搜索的过程中没有访问遍G‘的所有顶点，则从未被访问过的顶点中再选取编号最大的顶点，并从此顶点开始继续做深度优先搜索。（即这里的深度优先搜索是按顶点编号降序进行的）4、在最后得到的G’的深度优先森林中，每棵树上的顶点]]></description><category></category></item><item><title><![CDATA[缩点]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/3911376</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/3911376</guid><author>cicirise</author><pubDate>Thu, 19 Feb 2009 19:19:00 +0800</pubDate><description><![CDATA[无向图的连通性先明白一些概念。割点：若一个点删除后（也就是与之相连的边统统去掉），无向图不再连通，那么此点称为割点。桥：若一条边断去后，无向图不再连通，那么此边称为桥。桥有一个很好的性质，就是DFS一个无向图，那么这个过程必定要经过桥。块：没有割点的无向图称为2-连通分支，也称作块。割点、桥均可以在DFS的过程中求得。那么，对于一个无向图有以下操作：1.将一个无向图的块缩成一个点。这个时候要注意，]]></description><category></category></item><item><title><![CDATA[Kruskal]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/3908041</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/3908041</guid><author>cicirise</author><pubDate>Thu, 19 Feb 2009 00:12:00 +0800</pubDate><description><![CDATA[/*kruskal算法是枚举所有边，找出避免构成环的最小边，一一添加到生成树里面，纯粹的kruskal可以不需要建图，保存所有边的节点和权值就行*/ #include #include using namespace std;const int M=10000000;struct edge{ int u,v,len;};int pre[101];int n,m;edge T[101];void]]></description><category></category></item><item><title><![CDATA[POJ3522 Slim Span]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/3908030</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/3908030</guid><author>cicirise</author><pubDate>Thu, 19 Feb 2009 00:08:00 +0800</pubDate><description><![CDATA[ #include #include using namespace std;const int M=10000000;struct edge{ int u,v,len;};int pre[101];edge T[10000];int m,n,slimness;int cmp(const void *a,const void *b);int father(int s);int slim(int s]]></description><category></category></item><item><title><![CDATA[Prim]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/3908018</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/3908018</guid><author>cicirise</author><pubDate>Thu, 19 Feb 2009 00:04:00 +0800</pubDate><description><![CDATA[ #include using namespace std;struct Edge{ int u,v; int len;};const int n=5;const int M=10000000;Edge T[n];int map[n][n],mmlen,mmnum;void input();void init();void prim();int main(){ input(); init(); p]]></description><category></category></item><item><title><![CDATA[Prim]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/3908014</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/3908014</guid><author>cicirise</author><pubDate>Thu, 19 Feb 2009 00:03:00 +0800</pubDate><description><![CDATA[ #include using namespace std;const int M=100000000;int map[101][101],dist[101],pre[101];int m,n;void readData();int prim();int main(){ int cs,rst; readData(); cout return 0;}int prim(){ int i,j,k,sum]]></description><category></category></item><item><title><![CDATA[HeapSort]]></title><link>https://blog.youkuaiyun.com/cicirise/article/details/3908003</link><guid>https://blog.youkuaiyun.com/cicirise/article/details/3908003</guid><author>cicirise</author><pubDate>Thu, 19 Feb 2009 00:00:00 +0800</pubDate><description><![CDATA[ #include using namespace std;int a[11] = { 0,12,14,2,3,0,29,17,16,36,7 };void heapSort(int i,int n);int main ( ){ int i,k,n=10; for ( i=n/2; i>=1; i--) 	heapSort( i, n ); for ( k=n; k>=1; k--) { 	hea]]></description><category></category></item></channel></rss>