- 博客(42)
- 资源 (1)
- 收藏
- 关注
原创 Codeforces Round #186 (Div. 2) D Ilya and Roads DP 单调优化
刚开始犯2去想肿么建图了。dp还是很好想:定义 dp[i][x] 表示从 1 到 i 被覆盖了x个洞需要的最小花费。转移方程很简单, 对于 j >i 的有:dp[j][ x + j-i ] = min ( dp[j][ x + j-i ] , dp[i ][ x] + mincost( x+1,y)); 这里的mincost(x+1,y)表示要完全覆盖 从x+1到 y这个
2013-05-31 13:57:44 1113
原创 hdu 2222 ac自动机
一直米有去拍个ac自动机的版,找了个模板题,一发居然米拍过。贴下自己版吧#include #include #include #include #include using namespace std;namespace AC { const int dict = 26; const int root = 0; const int maxn = 300
2013-05-30 22:22:12 827
原创 Codeforces Round #185 (Div. 1) B - Cats Transport DP 斜率优化
将小猫对应对应到起点就是很板的题目了额比如miao是在h[i] ,h[i]这个点距离原点的距离是x,miao出现的时候为y,对应以后的距离就是y-x,说明从y-x时刻出发能达到该miao样例对应以后排序就是 0 0 0 8 9 10 记为d数组那你选择从0 和 10 出发,花费就是 0+0+0+2+1+0 =3很容易得出dp转移方程了额 : DP[K][I] = MI
2013-05-29 20:57:18 1260
原创 UVA 12524 Arranging Heaps 动态规划 斜率优化
定义dp[i][j] 代表在i这个地方放一个Heap , 从1到i这个区间一共放了n个heap,最小的cost。很容易想到dp转移方程:dp[i][j] = min { dp[k][j-1] + cost ( k ,i) } ( 1这是2d/1d的dp 还有优化余地。展开转移方程: dp[i][j] = min ( dp[k][j-1] + (p[i].h
2013-05-12 00:20:43 2212
原创 poj 3683 Priest John's Busiest Day
每个婚礼只能选择从开始时间开始或者终点时间结束,所以可以2-sat。建图:第i个婚礼 从开始时间开始用点 2*i 标记, 在终点时间结束用2*i+1 标记, 比较婚礼 i和j ,如果 2*i 和 2*j 有冲突, 则连一条 2*i到2*j+1的边(其他同理)......输出解: 先将图缩点,然后建立一个逆向的图,在拓扑输出解。因为如果正向的图,选了一个点,它能到达的点都需要选,而如果逆向
2013-05-02 12:01:24 1042
转载 推荐一个vim 配置
runtime! debian.vim"设置编码set encoding=utf-8set fencs=utf-8,ucs-bom,shift-jis,gb18030,gbk,gb2312,cp936set fileencodings=utf-8,ucs-bom,chinese"语言设置set langmenu=zh_CN.UTF-8"设置语法高亮syntax enables
2013-03-24 21:25:46 445
原创 ural 1078 Segments
可以将x轴的先有序化,也可将y轴的先有序化。 比如样例以x轴有序化后: -3 3 ; -2 2; -1 1; 4 5; 现在以x轴从小到大枚举。 只需求出比当前 y轴数值大的 以前的y 所对应的包含个数的最大值即可。我是用线段树来寻找最大值。#include #include #include #include #include #include #in
2013-02-19 09:59:26 391
原创 sgu 225 Little Knights 状态压缩dp
这道题好无语呀,500ms时限,60m的内存。 如果没有内存限制,我们可以很容易的想到 DP[U][V][ROW][KNIGHT] U 代表上一行的状态,V代表上上一行的状态。因为当前行只与前两行的状态有关。ROW代表行数,knight代表骑士数目。 然后dp就很简单了 DP【U】【V】【ROW】【KNIGHT】 = SUM(DP【V】【i】【ROW-1]【KNIGH
2013-02-15 16:32:38 767
原创 sgu 223 Little Kings 状态压缩dp
下一行的状态只受前面一行的影响。 先预处理出在一行中互相无冲突的状态,用数字来表示。比如 一行为3列,那没有冲突的状态就有:(1代表国王,0代表无)0 0 0 --------> 00 1 0 -------->20 0 1 --------> 41 0 0 --------> 11 0 1 --------> 5....这样列处理好了,就只用以行为阶段进行
2013-02-15 11:14:13 696
原创 poj 3405 How many 0's?
题目要求统计从m到n 的数字当中,0出现了几次。比如 99-101: 99 100 101 这里0 出现了3次#include #include #include #include #include #include using namespace std;typedef long long ll;#define sfint(x) scanf("%d",&x
2013-02-08 22:18:21 357
原创 POJ 1753 Flip Game 高斯消元法
高斯很好写,当有自由变元时再枚举一下自由变元就行了。#include #include #include #include #include #include using namespace std;typedef long long ll;#define sfint(x) scanf("%d",&x)#define sfint2(x,y) scanf("%
2013-02-03 15:48:30 1103
转载 博弈 nim sg
博弈论(一):Nim游戏 重点结论:对于一个Nim游戏的局面(a1,a2,...,an),它是P-position当且仅当a1^a2^...^an=0,其中^表示位异或(xor)运算。 Nim游戏是博弈论中最经典的模型(之一?),它又有着十分简单的规则和无比优美的结论,由这个游戏开始了解博弈论恐怕是最合适不过了。 Nim游戏是组合游戏(Combinatorial Ga
2012-12-30 16:01:47 565
原创 POJ 1873 The Fortified Forest 凸包+搜索
题目让你用最少的花费(砍掉树木的vi之和)以及砍掉树的数目最少,然后用砍掉树的li之和去围住剩余的树木。 就是一个简单的搜索 ,我都几乎木有加优化了,简单的状态拍一下序,就1Y了呀计算几何拍了个板真好呀,刷题腰不酸背不疼越刷越带感,刷题和切菜一样(可能刷水题多了吧)#include #include #include #include #include #incl
2012-12-19 17:01:18 385
原创 oj上的“%lf"
今天拍了一道很简单的计算几何凸包的题目POJ 2187Beauty Contest;想涨涨自信滴呀~没想到wrong得我蛋蛋碎了一地。后来才发现啃爹的poj在g++编译环境下不能用 %lf 输出浮点数的答案 (在c++环境下可以~~~)#define fi freopen("in.txt","r",stdin)#define fo freopen("output.txt","w",std
2012-12-17 19:49:52 551
原创 计算几何模板
废话不多说,先附上一个粗糙的板吧 ,然后慢慢完善~const double pi=acos(-1.0);const double eps=1e-8;/*my_template*//*Computational Geometry*/const int N = 10010;struct Point{ double x,y; Point(double _x=0,double _y=
2012-12-13 16:27:23 861
转载 stl list
STL中的list就是一双向链表,可高效地进行插入删除元素。现总结一下它的操作。文中所用到两个list对象c1,c2分别有元素c1(10,20,30) c2(40,50,60)。还有一个list::iterator citer用来指向c1或c2元素。list对象的声明构造():A. listc0; //空链表B. l
2012-12-13 15:17:05 341
原创 动态树模板 (陈首元ppt)
根据陈首元的ppt,写的动态树模板,功能灰常全~~~#include #include #define NMax 10000using namespace std;struct node{ int key,mn,delta; int revmark; node *p,*l,*r; node(){}};struct DynamicTree{ node *nodes;
2012-12-10 13:36:14 1941
原创 POJ 2697 A Board Game
我是直接用map 来判重的#define fi freopen("in.txt","r",stdin)#include #include #include #include #include #include #include #include #include using namespace std;/*my_template*//*data typ
2012-12-10 13:31:16 538
原创 UVA 11198 Dancing Digits
爆搜吧,状态利用康拓排列可以压缩#define fi freopen("in.txt","r",stdin)#include #include #include #include #include #include #include using namespace std;#define sfint(x) scanf("%d",&x)#define sf
2012-12-10 13:27:03 399
原创 spoj 1557 Can you answer these queries II (gss2)线段树
从来木有想过update儿子呀,除了lazy~~ #define fi freopen("in.txt","r",stdin)#include #include #include #include #include #include using namespace std;#define sfint(x) scanf("%d",&x)#define sf
2012-12-09 18:11:15 741
原创 spoj6779 Can you answer these queries VII(gss7)动态树
看了一下题,二话没说,想拍一个树链剖分,像线段树维护一下4个值就行了,可是想想树链剖分那长长的代码,额~(⊙o⊙)… 突然想到一句话,一切尽动态树。 先把建立一颗树吧 ,这里用1作为根, 这样的话这棵树就已经定型了。 刚开始每个节点只记录双亲。 这样任意两个节点 向着根所走过的路 要吗在路中间有交点,要么在根上有交点,要么就直接交与这两个点的某一个点了。利用这个性质我们可以yy很多东
2012-12-09 18:05:00 941
原创 ZOJ 2859 Matrix Searching 二维rmq
二维的rmq 和一维的rmq 其实非常相似,我们定义 dp[r][c][i][j] 为 覆盖了 r行c列 到 r+2^i-1行 c+2^j-1列的 标记值(如最大最小)。dp转移就很容易了: 当i为0 ,j为0 的时候就是 数组[r][c]的值, 当i= 0 ,就j不为0的时候,就和一维的rmq一样,此时即对第一行求rmq; 我们只看二维rmq的行,那么二维rmq 也变成了一维
2012-11-27 00:25:57 431
原创 poj 3080 后缀自动机
这道题大家都暴力过了,因为题目数据小 ,但如果数据大了肿么办~~,这道题还可以 用后缀数组+栈扫描 (或二分)解. 不过效率很都不如后缀自动机。 姑且用它来练练后缀自动机吧#include #include #include #include #define fr(i,s,n) for(int i=s;i<n;i++)#define fi freopen("in.
2012-11-01 01:01:05 397
原创 Codeforces Round #146 (Div. 2) Cyclical Quest 后缀自动机
比赛时居然没拍出来~~ 首先,利用主串 构造一个后缀自动机。 然后利用拓扑序 计算出 从s(初态)出发到达每个节点所构成的子串在主串中出现过几次(就是将parent树中的,儿子状态出现次数加给他的parent ,因为parent树中parent的状态是他的儿子节点的状态并集,不懂看clj的ppt~~~)。 构造出来以后,将要匹配的串 例如abc 改成 abcab ,将abc
2012-10-31 23:17:51 446
原创 poj 3422 费用流
感觉网络流的问题 大部分都是考建图, 建图的时候又经常拆点来限流。这道题目建图比较简单,很适合学习用~~~#include #include #include #include #include #define fr(i,s,n) for(int i=s;i<n;++i)#define _fr(i,n,s) for(int i=n-1;i>=s;--i)#de
2012-10-31 18:06:11 295
原创 poj 2761 splay tree
这道题 可以用很多方法做像划分树之类滴~~~用splay虽然比划分树慢了一点,不过也只是慢了一点呀,想想有通用的解法,何必用不太常用的划分树喃~~#include #include #include #include #define fr(i,s,n) for(int i=s;i<n;++i)#define _fr(i,n,s) for(int i=n-1;i>=s;
2012-10-28 22:47:23 491
原创 poj 3580 splay tree
splay tree 的孩子父亲关系 既可以是 大小的偏序关系 ,也可以是位置的偏序关系~~~这道题用的是位置的偏序关系~~~#include #include #include #include #include #define fr(i,s,n) for(int i=s;i<n;++i)#define _fr(i,n,s) for(int i=n-1;i>
2012-10-28 22:28:19 348
转载 修复grub
livecd 修复Grub方法1.有GRUB启动的光盘或U盘修复如果手上有GRUB启动的工具盘,用工具盘启动,在GRUB菜单上按c进入命令行状态,在grub>提示符下输入grub>find /boot/grub/core.img (有/boot分区的用find /grub/core.img)(hdx,y) (显示查找到的分区号)grub>root (hdx,y)grub>k
2012-10-22 13:49:20 338
转载 GRUB引导Win8,Win7,Ubuntu
GRUB引导Win8,Win7,Ubuntu与时俱进,装了Win8 RTM,我是直接光盘引导,安装在其中一个分区的。发现Win8安装过程是将原有Win7的Bootmgr和BCD覆盖升级并加入Win8引导项目,换句话说,Win7和Win8是共用一个Bootmgr和BCD的,这使得GRUB无法直接引导Win7和Win8,需要在进入Bootmgr后在选择,能不能直接在GRUB中直接集成Ubunt
2012-10-22 13:38:02 643
原创 vs2012 scanf不能使用
用上vs2012了 感觉比2010快了好多呀,不过2012 啃爹的说scanf unsafe 要我用scanf_s 可是oj上又不能用sacnf_s肿么破呢 , 其实很简单 只需加一句#pragma warning(disable:4996) 是不是发现又和2010一样了
2012-10-22 00:36:50 3963
转载 BURG 引导也疯狂
今天在http://forum.ubuntu.org.cn看到了一片美化引导帖子,利用burg不仅可以实现多重引导,还可以让你的引导变得非常漂亮。附上我自己的引导界面图:(是不是感觉启动界面漂亮了许多)BURG是一个基于GRUB2的工程。它使用新的菜单系统,屏幕布局和热健都可以通过配置文件非常灵活地定制。我上传了PPA二机制包,ubu
2012-10-19 21:44:12 5493
原创 ZOJ 3656 2-sat模板题
//2012长春现场赛很裸的2-sat 因为是位运算,所以 把b[i] 的 每一位都利用 2-sat 判断一次。 #include#include#include #include#include #include #include #define fr(i,s,n) for(int i=s;i<n;i++)#define fi freopen("in.txt","r
2012-10-17 20:25:36 539
原创 字符串分割
字符串分割一种时常会遇到的问题:下面列举几个函数 ,可以方便编程:1.strtok函数进行字符串分割 ( 适合用于一次性分割 ,这个用得比较多)原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。返回值:从str开头开始的一个个被分割的串。当
2012-10-13 14:38:04 560
原创 Admission to Exam欧拉函数逆运算
Admission to ExamAt the end of the previous semester the students of the Department of Mathematics and Mechanics of the Yekaterinozavodsk State University had to take an exam in network tech
2012-10-08 22:08:28 1083
原创 Codeforces Round #142 (Div. 2)
话说国庆大假,11:30寝室终于有电了呀。满心欢喜的做了一发cf,没想到system test挂得这么惨A:签到题B:打出素数表,将素数表的素数平方,然后读入询问的数二分就行了C:先预处理。 预处理出将 i行j列 置为1需要的最小步数。D:最短路,spfa,dijkstra神马的都可以搞,不过题目有个啃爹的限制,每个点有些时间点不能通过,其实只需要松弛操作的时候先算出di
2012-10-02 17:25:52 609
原创 hdu 4405 Aeroplane chess
//2012金华网赛1006求概率的题,这不是一道有无穷多种情况的概率题,所以不用推公式。很容易想到dp解法。 定义状态很状态转移看代码吧,都比较简单#include #include #include #include #include #include #define fr(i,s,n) for(int i=s;i<n;i++)#define pf pri
2012-09-22 18:56:45 528
原创 hdu 4407 sum
//2012金华网赛 1008 今天居然挂在了09了 ,n^3的算法 呀,不知道自己写挫了,还是爆rp了,居然老是t;话说这道题目也写得很挫。 这道题有个很好的性质1..n连续 。而且询问又很少,所以直接先求出原数组中(即1..n) 与p互质的数的和,具体肿么求可以用容斥原理。然后枚举被改变的数。#include #include #include #includ
2012-09-22 18:50:04 586
原创 Codeforces Round #139 (Div. 2)
做了一发cf,又瞻仰了一下tourist大神呀~~前三道a的灰常顺利了,后来太困了,d,e就木有拍。A:水题,不解释B:k-bonacci 因为k大于1 ,那么k-bonacci数就很少了,先根据K求出所有的k-bonacci数,然后dfs暴搜吧,当然平常的优化是要有滴~~~C:一眼就应该想到是dp吧,dp[i][flag][len] 代表从第一列到第i列 最后一位是‘#’还是‘
2012-09-20 12:41:08 428
原创 HDU 4289 网络流
题目:ControlYou, the head of Department of Security, recently received a top-secret information that a group of terrorists is planning to transport some WMD 1 from one city (the source) to
2012-09-18 19:04:17 873
原创 HDU 4294 spfa
题目:GroupsAfter the regional contest, all the ACMers are walking alone a very long avenue to the dining hall in groups. Groups can vary in size for kinds of reasons, which means, several pl
2012-09-18 18:54:20 437
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人