自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (2)
  • 收藏
  • 关注

原创 【定径圆覆盖最多点模板】

#define eps 1e-9#define pi acos(-1.0)#define N 222struct point{ double x,y;}p[N];struct alpha{ double v; bool flag; bool friend operator <(const alpha &a,const alpha &b){//排序专用偏序关

2012-03-24 01:27:17 1385

原创 【dp求期望值】POJ 3756

dp求期望double dp[1024][111];//dp[i][j]第i round到j格的概率bool stop[111];int go[111];int n;int main(){ while(scanf("%d",&n) !=-1){ int i,j; int m; memset(go,0,sizeof(go));

2012-03-30 20:31:05 851

原创 【鸽笼原理】ZOJ 2955

用到了鸽笼原理的结论:设可选的 N 个数从小到大依次为 a(1)、 a(2) … a(N),则在最优的取法中,小于 a(N) 的数不会多于 a(N) 个。#define N 10005int dp[N];int w[111];int main(){ int t; scanf("%d",&t); while(t--){ int n,c;

2012-03-30 13:09:18 886

原创 【计算几何——直线相交】POJ 1039

黑书例题#define eps 1e-9#define pi acos(-1.0)struct Point{ double x,y;};int dbl_cmp(double d){ if (fabs(d)<eps) return 0; return d>0?1:-1;}double det(double x1,double y1,doubl

2012-03-29 21:22:36 869

原创 【O(nlgn)判定点在凸包内】Codeforces Round #113 (Div. 2) B

思路参考了这个bloghttp://hi.baidu.com/aekdycoin/blog/item/7abf85026f0d7e85d43f7cfe.html复杂度是O(nlgn)#define N 100005struct node{ double x,y;}a[100005];double cross(node a,node b,node c){//>0,ab在ac

2012-03-29 02:00:09 727

原创 【Havel定理判断可图化】POJ 1659

这里首先复习一下什么叫“简单图”(其实是自己忘记了==!).......一个图如果不含重边或环则称为简单图。1 、Havel 定理:把度排序,从大到小,类似拓扑排序,只是把过程反过来而已。具体过程:贪心的方法是每次把顶点按度大小从大到小排序,取出度最大的点 Vi,依次和度较大 的那些顶点 Vj 连接,同时减去 Vj 的度。连接完之后就不再考虑 Vi 了,剩下的点再次排 序然后找度最大的

2012-03-20 18:26:30 1683

原创 【作业调度—贪心】POJ 2751

http://poj.org/problem?id=2751贪心策略见cmp函数,简单来说就是使得s1的作业及你快完成,以便尽快转到s2,注意s1没有空闲时间,而s2可能有空闲时间#define N 10005struct node{ int s1,s2;}p[N];/*bool cmp(node a,node b){ if(a.s1!=b.s1)retur

2012-03-16 20:29:18 1446

原创 【tarjan求双连通分量+染色判二分图】POJ 2942

这题debug的好郁闷啊!!!先是染色有问题,然后就是各种小错误....判奇圈可以用二分图标准,因为奇圈肯定不是二分图,之前还要分离各双连通分量.......染色法判二分图一定要先对分量里每一个点都染一次色再枚举任意两个相邻的点看是否有同色,就是因为这里wa了n次!!!#define N 1005vector v[N];vector lin[N];int dfn[N],low[N];

2012-03-15 02:08:31 676

原创 【最大流】HDU 3572

http://acm.hdu.edu.cn/showproblem.php?pid=3572题意:给出n个任务+m台机器,还有一个任务处理时限+开始时间+结束时间,一个时刻里一台机器只能处理一个任务,但是一个任务可以在不同机器处理,问能否处理完所有任务?方法:最大流。这个题的建图算是经典,因为限定每个时刻每台机器只能处理一个任务,所以可以把时间点分配给各个合法的机器...具体是先设定一个超

2012-03-14 20:11:34 1097 1

原创 【弱连通分量】POJ 2762

http://poj.org/problem?id=2762题目给出n个点m条单向边,问是否存在取任意两点x,y,使得可以x->y或y->x,其实就是求弱连通分量....方法:缩点+拓扑。因为环内各点肯定可以任意到达,缩完点后就可能变成树或森林,当树是一条链的时候才存在弱连通分量,拓扑一下就ok...一开始看不到The cave has n rooms, andone-waycor

2012-03-14 19:08:40 3516 1

原创 【KMP】ZOJ 3587

利用了kmp的性质,kmp可以找出前i个在主串出现的次数(可覆盖),同样也可以找出后j个在主串出现的次数,只需要反向kmp就行了==,具体实现是两次预处理正向&反向,然后记录num1和num2数组所以复杂度是线性时间.....理解kmp是重点!#define N 100005char s[N],t[N];int next1[N],next2[N];int num1[N],num2

2012-03-13 00:55:38 1085

原创 【树形dp统计距离为k的点对】VK Cup 2012 Round 1 D. Distance in Tree

http://codeforces.com/contest/161/problem/D树形dp,很优美,利用了树的性质和dfs回溯...注意以防重复,所以要把计数提前到更新操作前#define N 50005LL dp[N][505];vector v[N];LL ans = 0;int n,k;void dfs(int u,int fa){ int i; d

2012-03-12 17:53:14 1095 1

原创 【dfs找不在简单路径的点】ZOJ 10th Anniversary Contest C ZOJ 3583

纯YYint g[111][111];bool vis[111];bool visit[111];int pre[111];int n,m,s,t;void dfs(int u){ int i; if(u==t || vis[u]){ while(u!=s){ vis[u] = 1; u = pre[

2012-03-11 20:02:59 1248 11

原创 【树状数组求第k小】POJ 2892

又一次用到树状数组求第k小,注意边界情况#define N 50005int c[N];int lowbit(int x){ return x&(-x);}void add(int x,int v){ while(x<N){ c[x]+=v; x+=lowbit(x); }}int sum(int x){ int an

2012-03-10 10:47:08 641

原创 【树状数组求第k小+并查集】POJ 2985

http://poj.org/problem?id=2985树状数组已经够神奇了,原来它还可以求第k小的元素........orz,位运算V5!#define N (1<<20)int c[N],rank[N],fa[N];int n,m;void init(){ int i; for(i=1;i<N;i++){ c[i] = 0;

2012-03-10 10:01:13 1198

原创 【斜率优化dp】HDU 2993

第一道斜率优化dp,看着别人的报告做的,做之前建议看一下04年周源的《浅谈数形结合思想在信息学竞赛中的应用》论文         http://wenku.baidu.com/view/f6421ce8b8f67c1cfad6b8ac.html斜率优化其实就是把每个状态看作直角坐标系上离散的点抽象出x,y 表示斜率 (y2 - y1) / (x2 - x1) 于一个关系状态i个函数的关系,然后

2012-03-09 00:51:20 922

原创 【Krusual求伪森林】HDU 3367

http://acm.hdu.edu.cn/showproblem.php?pid=3367根据题目的定义,伪森林就是一个子图最多只有一个环,题目问权值最大的伪森林。方法:把Krusual变形,记录以i为根的树是否已经有环,再分情况把树接上#define N 10005#define M 100005int n,m;struct node{ int u,v; in

2012-03-08 19:59:23 629

原创 【最大生成树】POJ 2377

最大生成树,prime算法改一下就可以了,注意有重边!!!#define N 1005int g[N][N];int vis[N];int dis[N];int n;int prime(){ int i,j; for(i=1;i<=n;i++){ dis[i] = g[1][i]; vis[i] = 0; } vis[1

2012-03-08 01:42:09 1077

原创 【唯一最小生成树】POJ 1679

判断MST时候唯一,用prime算法,复杂度O(n^2)#define N 105int n,m;int dis[N],g[N][N];bool vis[N];int mx[N][N];//记录路径i-j最大的边值int pre[N];//记录最小生成树路径bool intree[N][N];//判断哪些边属于MSTint prime(int s){ int i,j;

2012-03-08 00:04:35 635

原创 【bfs优先队列/floodfill】POJ 2227

刘汝佳黑书P89例题,先把边界入队,取出最小的检查4个方向,如果小于当前的证明可以注水,注水完后更新高度为当前高度,入队;如果大于当前高度就直接入队。。。所以出队的元素都是不能注水的....黑书上说有floodfill算法,没研究过,应该类似这样吧LL ans;struct node{ int x,y; int h; friend bool operator < (n

2012-03-06 21:56:59 1220

原创 【bfs优先队列】POJ 2312

char g[333][333];int n,m;struct node{ int x,y; int step; friend bool operator <(node a,node b){ return a.step>b.step; }};node st,end;bool vis[333][333];int d[4][2] = {0,1

2012-03-06 13:07:41 491

原创 【bfs优先队列】POJ 3635

http://poj.org/problem?id=3635#define N 1005struct node{ int u; int len;};vector v[N];int n,m;int price[N];void add(int a,int b,int w){ node tmp; tmp.u = b; tmp.len = w;

2012-03-06 12:15:41 532

原创 【dp】Codeforces Beta Round #2 B

http://codeforces.com/problemset/problem/2/B分别对2和5dp,取最小的,注意有0的情况,如果最后2和5最小值ans>=1时就走0,否则走2、5,至于路径我就用比较方便的方法:对每一点记录前一点的坐标写得有点搓.......#define N 1005int dp[N][N][2];int n;bool zero;struct no

2012-03-06 01:07:34 469

原创 【dp】VK Cup 2012 Qualification Round 1 ——E

E dp类似01背包,只是这里不一定取完k个,而01背包则一定取完k个int dp[4444];int ans;int main(){ int n,m; cin>>n>>m; int i,j; int s,d; ans = 0; while(n--){ cin>>s>>d; for(i=m;i>=0;i

2012-03-05 21:31:38 522

原创 【博弈题目】

poj-2234:poj-2484:poj-1704:poj-1067:poj-2505:poj-3480:poj-1740:poj-2348:poj-1082:poj-2960poj-2425poj-2505poj-2311:hdu2147 筛法找规律。1850 SG和的简单应用,

2012-03-05 00:44:29 529

原创 【STL string中erase用法】

erase函数的原型如下:(1)string& erase ( size_t pos = 0, size_t n = npos );(2)iterator erase ( iterator position );(3)iterator erase ( iterator first, iterator last );也就是说有三种用法:(1)erase(pos,n); 删除从pos开始的n个字符,比

2012-03-03 21:11:39 6237

原创 【dp】Codeforces Round #110 (Div. 1) C

http://codeforces.com/contest/156/problem/C可以发现所有可以转化的串的字符总和都相同,所以可以先预处理求出长度为i总和为j的字符串有多少个,转移方程很容易写#define MOD 1000000007LL dp[110][26*110];char str[110];void init(){ int i,j,k; memset(

2012-03-01 22:17:28 736

acm程序设计曾宗根

acm程序设计曾宗根,方便

2011-09-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除