随笔分类 -  Acm

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 15 下一页
摘要:#include #include #include using namespace std; const int maxn = 32; const int INF = 99999999; int map[maxn][maxn],n,m,dis[maxn][maxn]; int max(int x,int y) { return x>y?x:y; } int floyd() { ... 阅读全文
posted @ 2015-10-13 22:30 sweat123 阅读(182) 评论(0) 推荐(0)
摘要:#include #include #include #include #include #include using namespace std; struct node { char s[60]; int v; int flag; int cou; }a[300]; bool cmp(node fa,node fb) { if(fa.v!=fb.v) ... 阅读全文
posted @ 2015-10-13 22:30 sweat123 阅读(135) 评论(0) 推荐(0)
摘要:因为行可以了,那列就不行,所以根据行列建立最小割模型。 然后这题精妙之处在于把乘法取对数后转化为加法,瞬间就简单了。 保证精度,C++AC ,16MS G++WA。 阅读全文
posted @ 2015-10-11 22:44 sweat123 阅读(191) 评论(0) 推荐(0)
摘要:最大流之后S集合与T集合不在相连,即s不能到达T中的点。 对于同一个模块,Ai,Bi,Ai与源点相连,Bi与汇点相连。不同CPU间消耗的模块,相连。 由于最后模块只能在一个CPU中运行,所以要么与源点相连,要么与汇点相连,所以可看做最小割模型。 我原来的Dinic模板,不是多路增广,所以超时。然后向 阅读全文
posted @ 2015-10-11 16:33 sweat123 阅读(431) 评论(0) 推荐(1)
摘要:对于欧拉回路,先判断出度入度的差是否为偶数,然后最大流一次。 此题是判断有无欧拉通路,前提要判断图是否连通,然后欧拉通路的条件:要么出入度差没有奇数,或者只有2个点。 所以先统计差为奇数的个数,如果不为0或2,不可能。然后如果为2,表示可能使欧拉路,所以此时可以将这两个点相连,类似添加一条无向边。然 阅读全文
posted @ 2015-10-11 15:15 sweat123 阅读(244) 评论(0) 推荐(0)
摘要:欧拉路:经过所有路有且仅有1次,可以路过所有的点。 无向图: 图连通,所有点都是偶数度,或者只有两个点是奇数度。当所有点是偶数度时欧拉路起点可以是任意点;当有两个奇数度点时起点必须是奇数度点。 有向图: 图连通,所有点出度=入度,或者有一个点入度-出度=1,有一个点出度-入度=1。同样,当所有点出度 阅读全文
posted @ 2015-10-10 10:32 sweat123 阅读(229) 评论(0) 推荐(0)
摘要:RMQ预处理最大值,最小值,然后对于每一点,二分可能满足的区间长度,长度-1就是该店开始的区间满足的个数。 阅读全文
posted @ 2015-10-08 22:31 sweat123 阅读(237) 评论(0) 推荐(0)
摘要:比较简单。 阅读全文
posted @ 2015-10-08 14:23 sweat123 阅读(241) 评论(0) 推荐(0)
摘要:题意:F块草坪,上面有n头牛,可以容纳m个牛遮雨。将草坪一份为2,成为二部图。 对于此题,和poj2112很像,只是2112很明显的二部图。这道题就开始敲,但是建图遇到问题,草坪的2个值怎么处理,于是将1个草坪分成2分,一份与源点相连,值为牛的个数, 另一份与汇点相连表示可以留下多少牛,由于是一个草 阅读全文
posted @ 2015-09-25 00:06 sweat123 阅读(195) 评论(0) 推荐(0)
摘要:多源多汇。 比较明显的建图。对于电器,可以从源点与各个电器相连,容量为1,表示这个电器有1个,然后对于各种接头,那可以各个接头与汇点相连,容量为1,表示每个接头只能用一次。 然后对于能够相互转换的接头,其容量为无穷,文中写到转换器可以无穷使用。然后对于电器和其使用的接头,相连,容量为1表示该电器使用 阅读全文
posted @ 2015-09-24 15:35 sweat123 阅读(242) 评论(0) 推荐(0)
摘要:我用Dinic写的。G++ 1800ms 很慢,c++直接超时。优化后的 141ms,很快! 对于此题,建图方法很巧妙,通常想到求距离,那就会朝距离的方向建图,但是这题根据牛个数来建图,然后二分距离。 先求出任意点之间的最短距离。对于挤奶器,牛,很明显的分为2部分。挤奶器的牛来自牛这部分。先另外设源 阅读全文
posted @ 2015-09-23 23:46 sweat123 阅读(149) 评论(0) 推荐(0)
摘要:#include #include #include #define MAXN 1010 using namespace std; int map[MAXN][MAXN],n,dis[MAXN]; int min(int x,int y) {return xq; memset(dis,-1,sizeof(dis)); dis[1]=0; q.push(1); wh... 阅读全文
posted @ 2015-09-21 19:43 sweat123 阅读(311) 评论(0) 推荐(0)
摘要:Dinic算法: 层次图:根据源点到该点的距离建图,这里设相邻的都差1。 (下面部分转) 在这幅图中我们首先要增广1->2->4->6,这时可以获得一个容量为2的流,但是如果不建立4->2反向弧的话,则无法进一步增广,最终答案为2,显然是不对的,然而如果建立了反向弧4->2,则第二次能进行1->3- 阅读全文
posted @ 2015-09-21 13:07 sweat123 阅读(287) 评论(0) 推荐(0)
摘要:RMQ即求区间(i,j)的最值。通过O(nlogn)处理,O(1)给出答案。 RMQ主要是动态规划来做。dp[i][j]表示从i开始的长为2^j的区间最值。 那么可以得到dp[i][j]=max(dp[i][j-1],dp[i+(1<<(j-1))][j-1]); dp[i][j],这个区间可以分为 阅读全文
posted @ 2015-09-17 23:04 sweat123 阅读(253) 评论(0) 推荐(0)
摘要:对于每次询问的大的值,都是从小的值开始的,那就从小到大处理,省去很多时间,并且秩序遍历一遍m; 这题cin容易超时,scanf明显快很多很多。G++又比C++快; 阅读全文
posted @ 2015-09-16 16:30 sweat123 阅读(160) 评论(0) 推荐(0)
摘要:优先队列做,然后遍历人数。 阅读全文
posted @ 2015-09-16 10:28 sweat123 阅读(130) 评论(0) 推荐(0)
摘要:先dfs对度小于2的删边,知道不能删为止。 然后通过并查集来计算每一个分量里面几个元素。 阅读全文
posted @ 2015-09-14 22:59 sweat123 阅读(154) 评论(0) 推荐(0)
摘要:可以暴力。 阅读全文
posted @ 2015-09-14 19:48 sweat123 阅读(160) 评论(0) 推荐(0)
摘要:#include #include #define lson l,m,rty?x:y; } void PushUp(int rt) { sum[rt]=max(sum[rt=r) { return sum[rt]; } int ret=-9999999; int m=(l + r)/2; if(m = R) { ... 阅读全文
posted @ 2015-09-14 19:20 sweat123 阅读(102) 评论(0) 推荐(0)
摘要:wa从一点到晚上11点没停过,也不知道为什么错,第二天换了个思路做,终于过了。这题还是有点问题的,数据有点水,我看到有人贴的代码baabbaab这组数据是4 0,明显错的,但是却可以过。 下面的是我第一次写的代码,也不知道到底哪里错了,能想到的样例都过了。 正的直接后缀数组求出即可。反着的我还用he 阅读全文
posted @ 2015-09-14 13:07 sweat123 阅读(145) 评论(0) 推荐(0)

上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 15 下一页