![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
poj
Jiahe Xu
为何要去攀登珠穆朗玛峰,因为她就在那里啊.
展开
-
poj 2449 K 短路(不严格)
#include #include #include #define M 100010#define N 1005const int inf = 0x3f3f3f3f;using namespace std;struct E //邻接表建边,to是下个结点,w 是权值 nxt 是下条边的位置{ int to,w,nxt;}edge[2*M];struc原创 2017-03-17 21:53:24 · 425 阅读 · 0 评论 -
poj2186 Popular Cows 强联通
只是模板。#include #include #include #include #include #define M 50000using namespace std;int a[M],b[M],num,next[M],p[M],n,m,e,dfn[M],index,low[M];int top,instack[M],flag[M],belong[M],Flag,out[M],j原创 2014-11-03 11:03:16 · 578 阅读 · 0 评论 -
poj3974 Palindrome 字符串
这个可以借鉴这篇博客http://blog.csdn.net/u013508213/article/details/29597201 #include #include #include #include #include using namespace std;#define maxn 1100000char st[maxn],play[maxn<<1];int p[maxn转载 2014-09-25 22:39:57 · 513 阅读 · 0 评论 -
poj3613Cow Relays 矩阵快速幂
矩阵+快速幂。用矩阵做floyd。原创 2014-07-24 16:35:46 · 629 阅读 · 0 评论 -
poj3657 二分+并查集
二分哪一次操作是最后一次正确转载 2014-09-07 15:34:06 · 945 阅读 · 0 评论 -
poj2688 Cleaning Robot 简单BFS+DFS
先bfs处理出各个垃圾之间的距离,然后直接原创 2014-09-24 18:11:46 · 552 阅读 · 0 评论 -
poj3172 搜索01背包
#include #include #include #include #include using namespace std;long long w[1100],c,ans,sum[1100];int n;void dfs(int order,long long left){ if(left<=0) return; if(order==1)原创 2014-08-18 09:53:21 · 736 阅读 · 0 评论 -
poj2528Mayor's posters 离散化+线段树区间更新
线段树和离散化。1e7原创 2014-07-07 15:45:47 · 616 阅读 · 0 评论 -
poj3276 Face The Right Way模拟
#include #include #include #include #include #include #include #define N 5002#define MAX 100010000int cows[N];int use[N];int main(){ int n; scanf("%d",&n); char tmp; for(in原创 2014-08-16 19:18:48 · 544 阅读 · 0 评论 -
poj3614 Sunscreen 贪心+单调队列
牛按最小值排序,防晒霜按权值排序。把原创 2014-07-23 14:48:16 · 494 阅读 · 0 评论 -
poj3177 Redundant Paths 简单双联通求桥
tarjan双联通。由于有可能有重边,所以map记录两点是否有原创 2014-10-16 16:21:21 · 486 阅读 · 0 评论 -
poj1637 Sightseeing tour dinic
直接借用讲义。。。【题目大意】混合图欧拉回路。(1 【建模方法】把该图的无向边随便定向,计算每个点的入度和出度。如果有某个点出入度之差为奇数,那么肯定不存在欧拉回路。因为欧拉回路要求每点入度 = 出度,也就是总度数为偶数,存在奇数度点必不能有欧拉回路。好了,现在每个点入度和出度之差均为偶数。那么将这个偶数除以2,得x。也就是说,对于每一个点,只要将x条边改变方向(入>出就是变入原创 2014-11-18 21:38:17 · 472 阅读 · 0 评论 -
poj3468A Simple Problem with Integers Splay版
练练splay的lazy操作。惊奇的发现在select的时候pushdown效率比一边更新一边pushdown高。。。。#include #include #include #include #include using namespace std;#define maxn 110000typedef long long sint;sint sum[maxn];int lazy[原创 2014-12-23 22:05:13 · 502 阅读 · 0 评论 -
hdu1540 poj2892 Tunnel Warfare 线段树端点更新 SBT
题目大意,给n个点表示n个村庄,一开始都是相连的,现在有3种操作:Q x,查询第与第x个村庄相连的村庄个数;D x,摧毁掉第x个村庄;R 恢复刚摧毁的村庄。题目分析:每个点用2个状态表示,0表示被摧毁,1表示存在,因为有恢复操作,并且每次恢复上一个被摧毁的村庄,所以用一个栈存储所有被摧毁的村庄,每次R操作恢复栈顶村庄。这题关键是查询操作,如果查询的村庄x不存在,则没有村庄与之相连通,如果原创 2014-08-13 19:14:02 · 614 阅读 · 0 评论 -
poj3481Double Queue SBT
直接上,多一个数组记编号。#include #include #include #include #include using namespace std;#define maxm 51000#define maxn 210000int getint(){ char c; int res; while(c=getchar(),c'9'); res=原创 2014-12-16 13:00:20 · 498 阅读 · 0 评论 -
poj2931 Ombrophobic Bovines dinic
坑点:答案很大会爆int 细节点很多,二分原创 2014-11-18 16:56:40 · 602 阅读 · 0 评论 -
poj1149 PIGS DINIC
题意: 有 M 个猪圈,每个猪圈里初始时有若干头猪。一开始所有猪圈都是关闭的。依次来了 N 个顾客,每个顾客分别会打开指定的几个猪圈,从中买若干头猪。每个顾客分别都有他能够买的数量的上限。每个顾客走后,他打开的那些猪圈中的猪,都可以被任意地调换到其它开着的猪圈里,然后所有猪圈重新关上。分析: 此题是网络流,网络流里经典的构图题。将顾客看作除源和汇以外的节点,源和每个猪圈的第一个顾客连边,边原创 2014-11-16 21:52:31 · 513 阅读 · 0 评论 -
poj3281 Dining Dinic
由于牛只能选一次,所以对牛进行拆点。原创 2014-11-17 19:01:25 · 442 阅读 · 0 评论 -
poj2828 Buy Tickets 线段树端点更新
逆序插入,这样就能把第i个位置上的人确定下来了。原创 2014-07-15 19:28:35 · 538 阅读 · 0 评论 -
poj2044 Weather Forecast 搜索
vis判重 几个值分别表示 日期 左上角所在位置()原创 2014-09-22 20:28:51 · 840 阅读 · 0 评论 -
POJ3666 Making the Grade [DP,离散化]
#include #include #include #include #include #include using namespace std;#define maxn 3000#define ll long longll dp[maxn][maxn];int a[maxn],b[maxn],n;void solve(){ ll minn; for(in原创 2014-08-28 18:26:13 · 616 阅读 · 0 评论 -
poj3659 dfs+贪心
因为根节点不可能建新号塔,原创 2014-09-07 15:36:17 · 504 阅读 · 0 评论 -
poj3658 模拟
#include #include #include #include using namespace std;#define maxn 110000#define ll long long#define inf 1000000000000ll ans[maxn],last[maxn],next[maxn],w[maxn],h[maxn];int main (){ in原创 2014-09-07 15:50:39 · 873 阅读 · 0 评论 -
poj1190 生日蛋糕 搜索+剪枝
首先写出最裸的剪枝。我们可以发现第原创 2014-09-19 19:07:57 · 653 阅读 · 0 评论 -
poj1128 dfs好题 voj1030
先找出每个矩形的边界,再建立拓扑图。原创 2014-08-22 16:15:11 · 494 阅读 · 0 评论 -
poj3041Asteroids
按点的x坐标和y坐标构建两个点的集合,原创 2014-07-12 11:32:45 · 370 阅读 · 0 评论 -
poj3271 Lilypad Pond bfs
处理出每个点一步能到的原创 2014-07-26 14:34:16 · 598 阅读 · 0 评论 -
poj2226 Muddy Fields
题目大意:用木板将'*'覆盖,同一行或同一列的'*'可以用一块木板覆盖,'.'不能被覆盖。问最少用多少块木板可以把全部的'*'覆盖?木板只能够覆盖连续的横着的泥巴和竖着的泥巴,中间有草地就要隔开解题思路:二分匹配的经典构图题目构图思路:将横着的木板和看成一边的点的集合,将竖着的木板看成另外一边的点的集合,如果他们相交于一点就连边如果要把所有的泥巴覆盖,又要所需要的木板最少,原创 2014-07-22 11:16:40 · 409 阅读 · 0 评论 -
poj2635
大整数求余,注意是对位的原创 2014-07-18 14:27:22 · 479 阅读 · 0 评论 -
poj3169
简单的差分约束,涨姿势。题意:有n头牛。有ml个关系:每个关系A,B,C表示B距离A不能超过C。有md个关系:每个关系A,B,C表示B距离A至少为C。为牛1和牛n的距离是最大是多少,可能是任意的,也可能是无解的。思路:对于每个关系B-AB,权值为C;对于每个关系B-A>=C,建一条边B->A,权值为-C。用spfa求最短路,若最后求得dis[n]=INF,则距离是任意的,若图中原创 2014-07-17 10:59:19 · 403 阅读 · 0 评论 -
poj1011 Sticks 搜索
把长度按大到小排一次。#include #include #include #include using namespace std;int sticks[65];int used[65];int n,len;bool dfs(int i,int l,int t){ if(l==0) { t-=len; if(t==0)return原创 2014-09-19 18:02:57 · 488 阅读 · 0 评论 -
poj2375 强联通分量
用bfs将连着的相同高度的山坡缩为1个点,再原创 2014-08-13 09:30:25 · 540 阅读 · 0 评论 -
poj3669 Meteor Shower BFS
#include #include #include #include #include #include using namespace std;int st[400][400];struct node{ int x,y,t,mv;}save[51000];vectormiss[1100];int n,ed;int dx[]={0,0,1,-1,0};int原创 2014-08-28 18:07:33 · 434 阅读 · 0 评论 -
poj1436 Horizontally Visible Segments 线段树成段更新
#include #include #include #include #include #include using namespace std;#define maxn 8100#define lson rt<<1,l,m#define rson rt<<1|1,m+1,rint tree[maxn<<3];vectormark[maxn];int lab[maxn<<原创 2014-08-14 15:24:01 · 512 阅读 · 0 评论 -
poj1330 倍增LCA
#include #include #include #include #include #include using namespace std;#define maxn 11000#define deg 20int fa[maxn][deg],n,num,m,in[maxn<<2],ceng[maxn<<2];int first[maxn<<2],next[maxn<<2]原创 2014-08-26 16:35:17 · 501 阅读 · 0 评论 -
poj3468 A Simple Problem with Integers 线段树区间更新
#include #include #include #include #include #include using namespace std;#define maxn 110000#define ll long long#define lson rt<<1,l,m#define rson rt<<1|1,m+1,rll tree[maxn<<2],add[maxn<<2原创 2014-08-13 14:47:34 · 415 阅读 · 0 评论 -
poj3667 线段树区间合并
第一次写区间合并,自己改了很久,又对着标程改了很久,反正就是很久很久。。。。。原创 2014-07-16 22:37:43 · 487 阅读 · 0 评论 -
poj2777 线段树+位运算
#include #include #include #include #include using namespace std;#define maxn 210000int vis[maxn<<2],tree[maxn<<2];void pushup(int rt){ tree[rt]=(tree[rt<<1] | tree[rt<<1|1]);}void push原创 2014-08-12 18:53:00 · 457 阅读 · 0 评论 -
poj2948 Martian Mining dp
记录前缀和然后直接dp#include #include #include #include #include using namespace std;int n,m,a[600][600],dp[600][600],b[600][600];int main(){ while(scanf("%d%d",&n,&m)) { if(n+m==0)原创 2014-09-09 21:57:01 · 613 阅读 · 0 评论 -
poj2409Let it Bead Polay定理
题意:给出一个长度为m的项链,每个珠子可以用n种颜色涂色。翻转和旋转后相同的算作一种。有多少种不同的项链?思路:(1)对于Burnside引理,G为所有置换集合,|G|为所有置换个数,gi为第i种置换,D(gi)为在第i种置换下保持不动的元素个数。对于Polay定理,G为所有置换集合,|G|为所有置换个数,gi为第i种置换,n为颜色的种类,c(gi)为第i种原创 2014-07-08 08:56:58 · 580 阅读 · 0 评论