自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 新的征程......

本来以为要退役了呢。。不过运气不错,又可以继续下去。。   还是先要吐槽一下JXOI,太坑了,JX出题人是有多懒,连续两年搬CTSC原题上来(虽然我都没做过。。。),据说今年T1是OIBH上的题,呵呵。。第一题不能多说,题意不能再模糊了,又不告诉我什么叫剪成一个图案,又不告诉我什么叫本质相同的图案,问出题人还说题目已经说的很清楚了,wtf!!大概这是JX一直是弱省的很重要一个原因吧,题目出成这样,

2015-05-21 21:21:07 478

原创 [BZOJ4027]HEOI2015兔子与樱花|贪心

删点这个过程是与顺序无关的,我们不妨从叶子开始删。。考虑一个点x,删去任意孩子对答案贡献是一样的,所以肯定是从负重小的开始删,从root开始dfs,离开一个点时维护一个删完它的子树上的点时的最终负重c[i],那么把x的孩子按c排序贪心地删就可以了。。(为啥n=2000000这样搞不会T掉。。#include#include#include#define N 2000005using n

2015-05-14 09:21:18 585

原创 [BZOJ4011]HNOI2015落叶枫音|拓扑序DP

窝不会做啊QAQ。。看了题解发现一个DAG每个点选一条入边就是一颗有根树(森林),所以DAG的生成有根树的数量就是所有入度不为0的点的入度积。那么在DAG上加了一条边之后还是这样算就可能会有一些不合法的情况(成环)了,假设加进来的是s->t的边,那么环中一定包含了一条t->s的路径,所以我们的任务就是找出原DAG上包含t->s的路径的生成有根树的数量然后减掉就行了。。如果有t->x这条边,那么考虑

2015-05-14 09:19:39 801

原创 [BZOJ3529]SDOI2014数表|莫比乌斯反演|树状数组

要求的是的约数和。。惯用思路,转过来枚举,则有,现在要求的就是,那么如果能处理出的前缀和就可以分块计算辣。。这两个都是积性的可以线性筛出来(我嫌麻烦暴力算的)。。但是还要处理a的限制,把所有询问按a升序排序,i按升序排序,用树状数组维护前缀和,每次把小于当前询问的a的东西加进去就行啦。。(Orz PoPoQQQ)#include#include#include#define N 10

2015-05-14 09:15:16 518

原创 [BZOJ3504]CQOI2014危桥|最大流

源向a1和b1连流量为2*an,2*bn的边,a2和b2向汇连流量为2*an,2*bn的边,其他边非危桥连inf,危桥连2的边,跑最大流,但是这时满流不一定有解,因为可能有a1流到b2的流这样,所以把b1,b2反过来重构图再跑一次最大流,若能满流则有解。证明:假设第一次a1流了x的流到b2,第二次的时候由于是无向图,a1到a2流还是2*an-x,那么a1到b1是x,所以有x的流是b1-a1-b2,

2015-05-14 09:12:47 421

原创 [BZOJ3531]SDOI2014旅行

先树链剖分,然后为每一个教开一颗线段树,动态开点,没了。#include#include#include#define N 100005#define M 4000005using namespace std;struct edge{ int e,next;}ed[N*2];int n,Q,i,x,y,q,s,e,ne=0,nd=0,cnt,a[N],w[N],c[N],to

2015-05-14 09:11:44 414

原创 [BZOJ3631]JLOI2014松鼠的新家|树上差分

看起来是一个裸的树链剖分,其实不用那么麻烦。。给每个点一个标记表示它到root上所有点权值+多少,把每一次将一条链上权值+1的操作差分就相当于把L,R标记+1,把lca和fa[lca]标记-1,最后把标记往上传就行了。。#include#include#define N 300005using namespace std;struct edge{ int e,xu,next;}ed

2015-05-14 09:09:49 788

原创 [BZOJ3506]CQOI2014排序机械臂

挺有意思的。。看到区间翻转好像很容易想到splay,想到之后就没什么难度了。。每个节点维护一个子树最小值,没次删去一个点,该打标记打标记就是。。为了处理同大小的数要以初始序号为第二关键字。。#include#include#define N 100005#define lc c[x][0]#define rc c[x][1]#define inf 2000000005using n

2015-05-13 22:01:16 719

原创 [BZOJ3573]HNOI2017米特运输|贪心

语文题。。我一开始以为可以只从一部分子节点获取然后就不会做了。。   看懂题之后发现确定了一个点就确定了一颗树,那我们计算当i点不变时根节点的值,那么这些值的众数就是不变节点的最大数量了。。但是这个数可能很大,所以要hash一下,多取几个数模一下就安全了。。#include#include#include#define N 500005#define ll long long

2015-05-13 21:58:23 628

原创 [BZOJ1143]CTSC2008祭祀|最长反链|floyd|二分图匹配

据说这只有第一问才会这么水。。这东西好像叫做最长反链。。我的理解就是先一遍floyd找出每个点能到的所有点(好像这东西叫传递闭包?),然后对于一对可达的点A,B只能选取一个,这就是匹配了,拆点二分图,把可达的点对连边,n-匹配数就是答案。#include#include#include#define N 105#define inf 0x3fffffffusing namespace

2015-05-13 21:57:07 638

原创 [BZOJ1787]AHOI2008 紧急集合|LCA

仔细想想就是水题,找出三个点两两之间的LCA,必然会出现至少有两个LCA相同,因为肯定要有两个人先走到一起再往上走嘛,或者就是三个都相同了。。那么走到不同的LCA就是要走到的点,因为这个LCA只会使一个点走远路嘛。。#include#define N 500005#includeusing namespace std;struct edge{ int e,next;} ed[N*2

2015-05-13 21:56:10 412

原创 [BZOJ1018]SHOI2008堵塞的交通|线段树

好神的线段树题,以前只会维护区间什么数值信息的,竟然还可以维护联通性,好题啊,涨姿势了。。    由于只有两行嘛,要保证线段树节点有可加性,我们维护六个信息,分别是右上到右下,右上到左上,右上到左下,右下到左上,右下到左下,左上到左下的联通性,合并的时候自己YY一下,还是很好想的。一点要注意的,父节点的左上到左下不能简单的直接把左儿子的值赋上去,还有可能是左走到右再走回来,右上右下的同理。

2015-05-13 21:55:23 733

原创 [BZOJ2618]CQOI2006凸多边形|扫描线

凸多边形的面积并好像有很多搞法,网上有O(N^2logN)的算法,窝只会O(N^3logN)的扫描线暴力(好像能做到O(N^3)是么求解。。把所有三角形的端点和交点放在一起排序,这样所有图像就被分成了若干个区间,每个区间内的面积都是若干个梯形(三角形也可以当做梯形来做),然后求中位线的总长累计面积就行了。求中位线长的时候就用X=mid去得到所有交点,然后排个序,记录经过某个交点是进一个三角形还是出

2015-05-13 21:53:26 607

原创 [BZOJ4008]HNOI2015亚瑟王|期望DP

不会这种题啊好弱啊啊啊。。    f[i][j]表示前i张牌剩下j个机会,那么转移有两种,一是i-1利用了一个机会,二是i-1没有利用机会,也就是这样f[i][j]=f[i-1][j]*pow[i-1][j]+f[i-1][j+1]*(1-pow[i-1][j+1]),然后总的答案就是sigma f[i][j]*(1-pow[i][j])*d[i],(1-pow[i][j])就表示i利用到

2015-05-13 21:53:26 1738

原创 [BZOJ4010]HNOI2015菜肴制作|拓扑排序+堆

一开始看成字典序最小。。后来想到不对又YY了一种奇怪的方法,不过还是错的。。    正解是倒着来,边都倒着加,然后求一个字典序最大的拓扑序,反过来就是答案了。。一开始想不通为什么是这样,仔细想想应该没错。。如果没有选最大的,就让一个更小的放在了后面,而它本可以在更前的,所以一定要选最大的。。感觉和NOI2009变换序列的思路有点像,倒过来把要先满足的放到后面它自然就会满足了。。#inclu

2015-05-13 21:52:29 728

原创 [BZOJ1038]ZJOI2008瞭望塔|半平面交

考虑某个村庄可以被看见的区域,发现一条线段的上方就是可以看见端点的区域,那就把所有线段扔进去做半平面交,不要忘记了要加上两条左右边界。。求出来之后发现答案要么是某个村庄往上到半平面交的一段距离,要么是半平面交的某个点向下到轮廓线的一段距离,两个都是线性函数嘛。。根据这两种情况枚举更新答案即可。。#include#include#include#include#include#incl

2015-05-13 21:50:40 538

原创 [BZOJ1069]SCOI2007最大土地面积|凸包|旋转卡壳

这大概才是真正的第一题计算几何了。。首先这四个点肯定在凸包上,所以求出凸包,之后枚举四边形的对角线AB,凸包求出来之后点是按逆时针排序的,不妨设B在A的逆时针方向,那么就在A逆时针转到B的点之间取一个C点使三角形ABC面积最大,这个用叉积很方便,再在B逆时针转到A的点之间曲一个D使三角形ABD面积最大,现在ABCD就是以AB为对角线面积的最大值。。当A固定B逆时针转的时候C,D都是逆时

2015-05-13 21:46:27 890

原创 [BZOJ2242]SDOI2011计算器|快速幂|扩展欧几里得|BSGS

第一问快速幂,第二问扩欧,第三问BSBG,注意特判。。BSGS戳这里#include#include#include#include#define ll long longusing namespace std;map mp;int T,i,k;ll y,z,p,ans;ll pow(ll a,ll t,ll p){ if (t==0) return 1ll;

2015-05-13 21:44:00 465

原创 [BZOJ1293]SCOI2009生日礼物|贪心

这题好像有很多的乱搞方法。。我想的方法是贪心,考虑以i为右端点的最小覆盖了全部颜色的区间的左端点l,发现i增加的时候l显然是不降的,那就好办了,从1-n扫一遍,不断维护l,不断更新答案就行了。。   还有一种做法是弄出每种颜色出现的第一个位置和下一个位置,一开始把所有第一个位置找出来,放进一个堆,然后更新答案,每次把最左的那个颜色取出,将它的下一个位置加入堆,不断更新答案。。#incl

2015-05-04 21:05:12 726

原创 [BZOJ1079]SCOI2008着色方案|DP

只能想到5^15的方法。。       我们要利用起ci比较小这个性质,f[a][b][c][d][e][last]表示有a种颜色用了1个,b种颜色用了2个……上一次染色用的是剩余last个的颜色,转移就是f[a,b,c,d,e,last]=(a-(last==2))*f[a-1,b,c,d,e]+(b-(last==3))*f[a+1,b-1,c,d,e]+(c-(last==4))*f[a

2015-05-04 21:02:17 445

原创 [BZOJ1562]NOI2009变换序列|二分图匹配

一开始看错题以为是个傻逼的模拟。。不过也是个二分图匹配,但是我挂了好几次。。   可以弄出每个位置可以放的两个数,然后可以建出二分图。。不过要满足字典序最小,我一开始是边表按to从小到大放,顺序匹配,发现好像不行。。看了网上的说要倒序匹配,想一想也是,如果有解的话后匹配的点其实是优先满足的。。#include#include#define N 10005using namespa

2015-05-04 21:01:22 423

原创 [BZOJ1877]SDOI2009晨跑|费用流

看到每个点只能经过一次就要想到网络流嘛。。把每个点拆成两个点x1、x2,除1和n外x1都向x2连费用0流量1的边,1和n连流量无穷。。然后若i可以到j,就i2向j1连流量1费用为边权的边,注意这题是有向图。。建完图之后跑1-n的最小费用流即可,跑出来最大流就是天数,费用就是路程。。#include#include#define N 405#define M 20005#define i

2015-05-04 21:01:06 648

原创 [BZOJ1996]HNOI2010合唱队|DP

f[i][j][0]表示从i开始的j个数以左端为初始队列的最后的方案数,f[i][j][1]表示从i开始的j个数以右端为初始队列的最后的方案数,然后根据新加进来的数与区间两端的数的大小关系YY一下转移就行了。。#include#include#include#define N 1005#define p 19650827using namespace std;int n,i,j,a

2015-05-04 20:58:11 387

原创 [BZOJ1821]JSOI2010部落划分|贪心|Kruskal

一开始总想着二分答案,发现不会贪。。     其实就是选出最小生成树的前n-k条边之后下一条有用的边的长度,排序之后上kruskal就行了。。#include#include#include#include#define N 1005using namespace std;struct edge{ int s,e; double q; edge(){} edge(

2015-05-04 20:57:22 269

原创 [BZOJ2440]中山市选2011 完全平方数|莫比乌斯函数

一个不被讨厌的数质因数分解后一定是若干个指数为1的质数的积,然后二分答案,网上都说上界是2*k(why?),然后只要判断mid之内有多少不被讨厌的数就行了。。这个数会=mid-所有单个质数的平方+所有两个质数的平方-所有3个质数的平方……发现前面的系数(-1)^k不就是莫比乌斯函数吗。。对于一个数i,mu(i)*[mid/i^2]就是它对答案的贡献,那只要先线性筛一下莫比乌斯函数,然后从1枚举到√

2015-05-04 20:56:44 520

原创 [BZOJ1072]SCOI2007排列|DP

不会做啊。。只会暴力全排列。。f[i][j]表示所有位的选择状态为1,组合后余数为j的方案数,转移就是枚举没有选的位放到最高位,f[i|1。。#include#include#includeusing namespace std;int T,i,j,k,d,len,ans,u[15],f[(1<<10)+5][1005];char s[15];int main(){ sca

2015-05-04 20:55:32 587

原创 [BZOJ2463]中山市选2009 谁能赢呢

证明真是厉害,n为偶时棋盘一定可以被若干个1*2的骨牌覆盖,先手每次都是从一块骨牌的一端走向另一端,后手总是走向另一块骨牌,所以先手必胜;n为奇时先手走完一步后又能被若干个1*2的骨牌覆盖了,所以先后手互相转变,后手必胜。#includeint n;int main(){ while (scanf("%d",&n)&&n) printf("%s\n",n&1?"Bob":"Al

2015-05-04 20:51:55 1112

原创 [BZOJ1054]HAOI2008移动玩具|bfs

暴力bfs+hash判重咯,只有2^16个状态,直接压成二进制数。。#include#include#include#define N 1000000using namespace std;struct node{ bool a[4][4]; int d;}que[N+5],get,st,end;char s[10];int i,j,head,tail,hh,tt,to,u

2015-05-04 20:51:51 525

原创 [BZOJ2326]HNOI2011数学作业|矩阵乘法

容易得到一个递推式f[n]=10^(lgn)*f[n-1]+n,但是这个数据范围显然不能直接递推,范围这么大很自然想到矩阵乘法,这个式子是有2个会变的东西的,构造出矩阵如下(F[n])  (10^k  1    1 )(F[n-1])(  n  )=(   0    1    1 )(  n-1  )(  1  )  (   0    0    1 )(    1   )然后再看f

2015-05-04 20:50:32 457

原创 [BZOJ1146]CTSC2008网络管理|树上带修改K大

树上带修改K大,太可怕。。写了树链剖分+线段树套平衡树+二分和dfs序+主席树两种,每种都是写+调试花了将近5个小时!!我实在是太弱了。。1.   树链剖分+线段树套平衡树+二分最显然的做法了,没啥好多说的,不过写起来真是麻烦(我太弱),一不小心就会把线段树和平衡树的节点的域弄混,犯了超级多傻逼错误。。写这题的时候还把自己树链剖分的风格改了一下,以前的实在是太麻烦了。。查询的时候二分答

2015-05-04 20:43:58 774

原创 [BZOJ1196]HNOI2006公路修建问题|Kruskal|贪心|二分答案

二分答案很显然,贪心我没想到怎么贪。。   其实也挺显然的。。设当前二分到的答案是ans,将边排序(一级公路第一关键字,二级第二)后类似kruskal那样贪。。从小到大,如果一级公路费用,那直接选进来,else if二级公路费用且已选满k条一级公路,那就加进来。。最后如果能选到n-1条边就说明可行。。#include#include#include#define N 10005

2015-05-04 20:28:36 528

原创 BabyStepGiantStep学习笔记

为啥这个算法要叫这个名。。       这是一种求解高次同余方程的方法,基本思想是分块,用暴力解决小块来解决大块。。1.2.3.        具体操作方法:1.2.

2015-05-04 20:22:10 655

空空如也

空空如也

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

TA关注的人

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