自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(172)
  • 收藏
  • 关注

原创 为什么我们同时搞acm,结果是你就可以去final

“为什么我们同时搞acm,结果是你就可以去final,我就。。。。”“我在有一定基础之后,就不看解题报告了”

2013-08-28 15:53:53 3619 1

原创 hdu 1007 最近点对问题(Splay解法)

为什么要写这个题、、经典啊,当然,别以为我用分治做的,不过主要思想还是那神奇的六个点共存(一个h*2h的矩形中最多能放下多少个点使得两两距离不超过h)其实我是在这里看到的http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=lineSweep排个序,然后扫描过去,每次确定Y的范围,暴力找每个点(其实这是O(1)

2013-08-24 18:46:00 1244

原创 ABBYY Cup 3.0 - Finals(总结)

题目链接D题真的有点难写,,,不过写完后发现,也还行(我冒着可能万劫不复的心态研究了下tourist的代码),尽管如此,写的时候还是感觉各种不顺,还好1A了,不过肯定得重写,。这种题非常锻炼代码能力。这场比赛如果参加的话能暴涨啊。虚拟比赛的时候很快就做完了A B C ,然后D题不会做,暴力懒得写,写了的话估计还能涨点。A题:题意:给你一个序列,让你挑出一个子序列,子序列的两端必

2013-08-22 21:58:07 1876 2

转载 vim 常用快捷键!!!!

http://www.cnblogs.com/sld666666/archive/2010/04/05/1704462.html光标移动指令 1. h 左2. l 右3. k 上4. j 下5. Ctrl+f 向前翻页6.Ctrl+b 向后翻页7. 0  行首8. 移至行首第一个非空白字9. $ 行尾10.G

2013-08-19 21:27:19 889

原创 zoj 3164 分组背包 + 各种背包

把所有的背包结合起来的一道终极背包题,做了的话背包一般就没问题了题意:给你n个种类的物品的描述,背包容量D每个种类有三个属性 K E PK表示这类物品最多可以选多少个,如果为0表示可以选无限多个E表示选择这类物品每个物品的价值P表示每个物品的花费如果单纯是这样,那这道题目就太水了,直接多重背包就ok了所以题目又加了点,而这一点想了我n久 啊题目还将一些种类的物品分了

2013-08-19 18:58:45 871

原创 codeforces 127 div2

第一题我还写了一个dfs暴力--!实在是太水了,第三题一直错,赛后发现忘了特判x=3时的情况,第二题最后时刻一气呵成,无奈时间过了。。。。。啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊!!!!!!!!!!!!!!!!!!!结果自然名落孙山。但是有句话说的好失败是成功他妈

2013-08-19 18:58:27 766

原创 有更新 浙大月赛 ZOJ Monthly, June 2012 on June 24

zoj 3611 同类型的题目poj 2688化简模型即可得这样的问题,一幅图给定起点 终点 ,求起点到终点最多经过几个点,如果两种方案经过的点数相同,选路径总长短的注意,这幅图最多只有12个点,所以立刻可以想到用状态压缩来做dp[i][j]表示以i为终点的路径 为j状态(经过了那些点)时的最短路径ps:在预处理最短路的时候不要将'$'算进去,就看成一个普通的可以走的格

2013-08-19 18:58:25 884

原创 Codeforces Round #124 (Div. 2) (Div.1)

ps:D题挂了,最后只有三个。。。。E题是赛后看着一群大神的代码YY的(网上找不到题解,好奇怪,肿么都没人写的) 之所以这么迟是因为一直在纠结E题A:如果第一个人能放,那就放在中间的位置,然后第二个人不管放哪第一个人总有对称的放法B:水题C:简单贪心,错了一次D:给你一幅图,假如在地板上铺上无限的同样的图,判断从S出发能否走到无限远的地方只需要判断能否从一幅图的一个

2013-08-19 18:58:11 766

原创 Never underestimate the heart of a champion

The 1995 Rudy Tomjanovich-coached Houston Rockets basketball team were defending NBA champions, but they entered the NBA playoffs with a low seed after a poor regular season. The Rockets went on to de

2013-08-19 18:58:09 3105

原创 codeforces 123 div2

前两题做的还算快,可是最后却没有出题了,原因是题目都看不懂,特别是D题,真想骂几句,这神马意思啊最后由于做的比较快居然还涨rating了, ——!E题,并查集的带权合并  w[x]表示x到根的权值和在find的时候合并掉View Code #includeconst int maxn = 100010;const int mod = 1000000007;int

2013-08-19 18:58:04 901

原创 codeforces 122

A : 暴力枚举B:找规律,也可以用数学方法找最小的x使得   a*x%b == 0   a,b已知(a=4*n  b=n+1)x是所走的圈数,易得只要把x只要等于  b/gcd(a,b)  就满足了 然后答案就是a*x/b   即a/gcd(a,b)还要加上1,因为出发前就在1的位置走了一步了  所以答案 : a/gcd(a,b)+1;B题开始太草率了,被人黑了,于是又回来看

2013-08-19 18:57:55 751

原创 codeforces 121 (比赛) codeforces 191C

哎,CF终于变色了A题:我写了个二分,囧。。。B题:模拟题,水C题:想了半天,水王(一学长)告诉我是DP,果断敲了dp[i][j]表示i字符走到j字符最大的权值View Code int dp[30][30];int max(int a,int b){ return a>b?a:b;}int main(){ int n,i,j,k;

2013-08-19 18:57:48 1018

原创 CF 4 练习

ABC水题 D:n个二元组,求最长的一个序列组seq,序列的每一个元素的两个值都分别大于前一个元素记忆化搜索或者筛选后DP都可以两种方法View Code #include#include#includeset>#includestring>#include#include#include#includeusing names

2013-08-19 18:57:39 715

原创 Codeforces Beta Round #3 练习

A:裸的广搜题,需要输出路径 B:贪心抓住题目的特殊性,每个物品只有1 2 两种体积先按性价比排序,贪心的优先选择性价比高的,某次选了之后体积超了,就剪掉这样子遍历一遍之后还不是答案因为可能会有1体积的空位,而可能通过去掉已选集合中某个1体积的物品,再用一个2体积的物品替代达到更优解所以这里要判断一下View Code #include#include#includ

2013-08-19 18:57:37 732

原创 Codeforces Beta Round #2 练习

A题:模拟题,仔细点就好B题:DP给你一个数字矩阵,要求从左上角走到右下角的一条路径,这条路径上的数乘起来后末尾的0的个数最少末尾的0是由2、5产生的,于是联想一下是不是走2最少的一条路或者5最少的一条路就ok了呢?嗯,就是ok的.*_*假设从左上角走到右下角走过的数含因子2的最小的个数是x,5的最小的个数是y,则答案是min(x,y),即最优解x、y的个数中有一项是最少的

2013-08-19 18:57:30 656

原创 Codeforces Beta Round #1 练习

A 大水题B 模拟题,要很小心,注意细节处理  C  给你在一个正多边形上的三个点,判断这个多边形的最小面积。由于这个多边形最多只有100条边,可以直接枚举多边形的边数计算是否满足判断是否满足:三个点组成的三角形的每个角是圆周角的整数倍判断整数的时候精度不宜太大View Code #include#include#include#includ

2013-08-19 18:57:27 713

原创 codeforces 练习 ---- CF 24

A  给你一个环,环上的每条边都有一个方向,按某个方向(顺时针或逆时针)走一遍,把与行走的方向相反的边反向,并加上相应的费用,判断走哪个方向的费用比较少直接dfs搞即可View Code #include#include#include#includeusing namespace std;int out[110];vectorint> edge[110

2013-08-19 18:57:21 829

原创 后缀数组论文推荐题

先是论文中的一个模板View Code /*后缀数组模板rank[0~n-1] : 值域: 1~nsa[1~n] ; 值域: 0~n-1height[2~n]: suffix[i-1]与suffix[i]的最长公共前缀suffix(i-1) 与 suffix(i)是排名相邻的两个后缀height[1]无意义*/#include#include#i

2013-08-19 18:57:00 818

原创 树的直径(最长路) 的详细证明

主要是利用了反证法:假设 s-t这条路径为树的直径,或者称为树上的最长路现有结论,从任意一点u出发搜到的最远的点一定是s、t中的一点,然后在从这个最远点开始搜,就可以搜到另一个最长路的端点,即用两遍广搜就可以找出树的最长路证明:1    设u为s-t路径上的一点,结论显然成立,否则设搜到的最远点为T则dis(u,T) >dis(u,s)     且  dis(u,T)>dis(

2013-08-19 18:56:17 713

原创 与树相关的题目 树形DP 总结,不断汇总中

hdu 1561     The more, The Better   树形DP入门   利用分组背包的思想#include#include#includeusing namespace std;int dp[250][250];vector edge[250];int n,m;int val[250];int max(int a,int b){ ret

2013-08-19 18:56:14 967

原创 状态压缩DP 求简单图的环的个数

题目链接http://www.codeforces.com/contest/11/problem/D题目的点数不超过20,所以利用状态压缩DP可解dp[i][j]表示i状态时以j结尾的简单路径的数量,i的二进制表示中为1的表示这个点在路径中i的二进制中最低位1表示的点是起始点View Code #include#includetypedef __int64 lld;cons

2013-08-19 18:56:12 788

原创 线段树练习 区间合并

题目链接http://www.codeforces.com/problemset/problem/145/E蛮好的题目一连串由4、7组成的字符串两种操作:count 输出整个区间内最长的不下降子序列的长度switch a b 将a、b之间的数4变成7   7变成4注意,最长不下贱子序列不一定要连续一般情况下,不连续的最长不下降子序列的长度是无法维护的,但是这道题目的特殊性显

2013-08-19 18:56:02 655

原创 KM算法模板

View Code #define MIN(a,b) ((a)#define INF 999999#define MAX 5110int n,match[MAX];bool sx[MAX],sy[MAX];int lx[MAX],ly[MAX],map[MAX][MAX];bool path(int u){ sx[u]=true; for(int v=0;v if

2013-08-19 18:55:31 804

原创 codeforces 160D Edges in MST

给你一幅图,对于图中的每一条边,判断1、存在于任何一颗最小生成树中 any2、至少存在于某一颗最小生成树中  at least one3、不存在任何一棵最小生成树中 none看见就想一做的图论题思路:至少存在于某一颗最小生成树中 这种情况只可能存在于相同权值的边中,所以每次对于同一权值的边一起处理,再用 最小生成树中克鲁斯卡尔的方法来搞利用并查集:如果某时刻一条边的两个端点

2013-08-19 18:55:05 1444

原创 zoj 2006 1729 字符串最小表示法 模板

其实也算不上模板,代码很简单http://acmpj.zstu.edu.cn/JudgeOnline/showproblem?problem_id=1086上面这题可以理解什么是最小表示法方法在这里http://www.cnblogs.com/ACAC/archive/2010/05/23/1742349.html字符串最小表示求字符串的循环最小表示: 上面说的

2013-08-19 18:54:43 616

原创 poj 2944 求长方体的体积并

有点特殊,每个长方体的底面的左下角都在(0,0 , 0)所以计算面积的时候就简单很多了。用线段树,对x坐标建树rm[rt]:区间最右端y值mx[rt]:管辖区间内最大的y值sum[rt]:管辖区间内的总面积cover[rt]:是否被某个y值完全覆盖求体积的时候,从下往上不好求因为如果y大的长方体在下面,y小的在上面,从下往上计算的时候会多算比如 5 5 5 

2013-08-19 18:54:32 687

原创 poj 2125 有向图破坏,求拆掉图中所有边的最小代价

对于每个点有两个数in[i],out[i],表示拆掉i的所有入边的代价和拆掉所有出边的代价对于一条边(u,v)有两种操作可以将其拆掉,要么拆除u的所有出边,要么拆除v的所有入边,两个操作至少要有一个被执行这就相当于最小点权覆盖(可以参考那篇最小割的论文)中的一条边中的任意一个点都可以覆盖这条边所以,一个操作看做一个点,一条边相当于连接两个操作的边,一个最小点权覆盖的模型就建立好了建

2013-08-19 18:54:27 1096

原创 poj 2987 最大权闭合图

由上一篇可得最大权闭合图的权值为sum-max_flowsum为正的权值和,max_flow为重新建图后的最大流求最大流后,在残留网络中从s出发dfs能搜到点都为最大权闭合图中的点,即这个最小割对应的是最大权闭合图View Code #include#includestring.h>const int MAX=100005;const int INF=1000000000;

2013-08-19 18:54:25 580

原创 最大权闭合图

[网络流]最大权闭合图(转载)来自: http://hi.baidu.com/%C6%AE%BB%A8%C4%EA%B4%FA/blog/item/45d4bb1765e7044721a4e960.html以下内容参考 胡伯涛 《最小割模型在信息学竞赛中的应用》,感谢他为我们提供这么优秀的论文。看不懂以上论文的同学,可以试试看一下以下内容,本文无大量的数学符号,方便阅读理解。 

2013-08-19 18:54:23 650

原创 poj 1637 求混合图的欧拉回路

网上摘的一些知识点基础知识    欧拉回路是图G中的一个回路,经过每条边有且仅一次,称该回路为欧拉回路。具有欧拉回路的图称为欧拉图,简称E图。    无向图中存在欧拉回路的条件:每个点的度数均为偶数。    有向图中存在欧拉回路的条件:每个点的入度=出度。    欧拉路径比欧拉回路要求少一点:    无向图中存在欧拉路径的条件:每个点的度数均为偶数或者有且仅有2个度数为奇数

2013-08-19 18:54:20 568

原创 poj 3352 边双连通

题目要求至少添加几条边才能使去掉人和一条边后,图还是连通的首先进行双连通缩点,一个连通块就相当于新图中的一个点新的图形成了一棵树要想添加若干条边后任意去掉一条原图中的边后图还是连通的,我们应该将叶子连起来,使得任何一个叶子都有连接到别的叶子的边很显然,叶子总数cnt为偶数时,答案为cnt/2; 叶子总数为奇数时,答案为(cnt+!)/2;View Code #inc

2013-08-19 18:54:16 541

原创 hdu 3245 zoj zju 3188 树形DP

好猛的一道题目,做到吐血,最后发现有一组数据栈溢出了,就一组!!!算了,想法还是最重要的参考这里,可以和我的文章结合起来看http://www.cppblog.com/Yuan/archive/2010/09/06/125962.html?opt=admin首先明确一点,由于是两点之间的一条路径,所以不可能出现下面的情况 即不可能出现三叉路口,出现三叉的就不是两点间的路

2013-08-19 18:54:00 951

原创 zoj 2974 矩阵连乘

matrix[i][j]表示第i个水桶要倒matrox[i][j](比例)的水到第j个水桶,由于倒的次数非常多,所以可以用矩阵连乘来优化,求出倒了m次后的结果如样例可得矩阵0    1 0.5 0.5这个矩阵连乘2次0.5  0.50.25 0.75就是倒2次水后的结果然后呢统计即可View Code #include #include #define

2013-08-19 18:53:58 840

原创 无源汇上下界网络流 zju zoj 2314

类型:无源汇可行流参考自()http://hi.baidu.com/evelynhe/blog/item/f1c5ba2fcbe674271e3089ad.html每条边的容量满足一定的限制,即有一个上限值,也有一个下限值上界用ci表示,下界用bi表示。下界是必须流满的,那么对于每一条边,去掉下界后,其自由流为ci– bi。主要思想:每一个点流进来的流=流出去的流对于每

2013-08-19 18:53:51 596

原创 zju 2587 判断最小割是否唯一

求的最大流后依次从源点和汇点开始dfs 如果能搜到的点数之和等于总的点数,最小割唯一,否则不唯一View Code #include#includestring.h>const int MAX=100005;const int INF=1000000000;struct{ int v,c,next;}edge[1000000];int E,head[MAX];int gap[MA

2013-08-19 18:53:47 711

原创 poj 2391 网络流 二分 最短路 拆点

首先注意边是双向边,最短路的inf要取很大思路:增加一个源点,一个汇点,如果一个避雨点有a只奶牛,则从源点向这个点连一条边,容量为a,如果这个避雨点能容纳b只奶牛,则从这个点向汇点连一条容量为b的边。接着二分枚举答案,两点间最短路径的长度小于等于二分值的两个点能互相到达,连一条容量为无穷大的边这样子建好图后求最大流会发现样例都过不了,debug过程中发现如果1->2 , 2->3,

2013-08-19 18:53:33 515

原创 poj 2112 Optimal Milking 网络流

题意:安排C头奶牛到K个挤奶器,每个挤奶器最多能为M头牛挤奶,给出奶牛、挤奶器之间的额边的权值,求所有安排方案中,C头奶牛需要走的最大距离的最小值先求好原图中两两间的最短路径,再二分答案,验证是否能满足C头奶牛都能到达挤奶器,能的话就继续缩小范围具体验证方法:增加一个汇点,每个挤奶器向汇点连上一条容量为M的边,增加一个源点,向每只牛连一条容量为1的边,然后求一个s--t的最大流即可Vi

2013-08-19 18:53:31 606

原创 hdu 3642 求长方体的体积交

做了两个多小时。。。。其实也还好求至少有三个长方体重叠的区域的体积交对z轴坐标离散化,对于每个高度,记录包含该高度的长方体的下表面,求至少覆盖三次的面积并求面积交同那道“覆盖的面积”,只不过这里是覆盖三次,稍微想的仔细一点应该不成问题再乘以(z[i+1]-z[i]),易知z[i+1]==所记录的长方体上表面的高的最小值,所以不用担心这样做的正确性View Code #i

2013-08-19 18:53:24 751

原创 hdu 3887 树状数组(模拟栈)

一棵树,求每个结点的子树中有几个数是小于这个数的dfs会进入一个点一次,出一个点一次,中间经过的点都是它的子树中的点,所以,进入的时候统计一遍,出来的时候统计一遍,两个结果相减就可以了纯dfs会爆栈,要模拟栈。不过,不模拟栈也可以过,在网上看到c++可以设置栈的大小,所以把栈空间设置的大一点直接dfs做就可以了View Code #pragma comment(linker

2013-08-19 18:53:11 692

原创 poj 2486 apple tree 树形DP 不懂的一定把你讲懂

很典型的树形DP,自己也理解了好久,感觉自己好水哦。。。。。。。。。。。。。。。。。。。。。。。。。所以讲得清楚一点,以后回忆起来也快题意:一颗树,n个点(1-n),n-1条边,每个点上有一个权值,求从1出发,走V步,最多能遍历到的权值我们把背包的思想用到这里来,做的步数相当于背包的容量,点上的权值相当于价值,给定一定的背包容量,求最多能装进背包的价值设dp[0][s][j]表示从

2013-08-19 18:52:06 677

空空如也

空空如也

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

TA关注的人

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