自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zx2003的博客

我可能快要遗忘了眼泪的滋味

  • 博客(135)
  • 收藏
  • 关注

原创 CF891E,奇妙的计数题

题面传送门 题解 首先这道题面里的”res”,其实就是初始n个数的积与k次操作后的期望乘积之差。这个挺显然的,然而我一开始就没往这方面去想,反倒想出了什么倒数和的期望,我好菜啊。 知道这个性质后,我想出了一个O(nk2)O(nk^2)的DP 然后就是题解里的算法,最后居然是O(n2)O(n^2) 我仔细看了一下,感觉题解这么优越,是因为不必枚举每个数减了记下,dp时每次在k这一维上的偏移量

2017-11-19 11:53:26 593

原创 CF891C

当时赛场上做到这题时还剩1小时,然后因为深夜精神不好加上对kruskal理解不够深刻,没有做出来,还直接导致房间里的hack都被别人抢走了。 题意是有一张连通图,每次询问是否有一颗最小生成树包含给定的一组边集。 首先,如果边集大小是1,那么求出最小生成树对应链上的最大值即可。 但如果边集大于1,就不行了。因为如果强行加上两条权值相等的边,可能会导致环的出现。 考虑kruskal,把边权从小到

2017-11-18 13:12:39 556

原创 TC SRM568,奇妙的题目

这道题一开始的想法是瞎贪心一波,建张图出来,然后跑带花树,看看是否有完美匹配。 描述一下如何建图,首先贪心,如果连接一个已知点对的半圆方向能向上就向上,否则向下。 再引入一个概念,对于一个未确定点PP,定义f(d,P)f(d,P)为d方向上覆盖了这个点的半圆集合。 考虑存在一个方向dxd_x使得f(dx,P1)f(d_x,P_1)等于f(dx,P2)f(d_x,P_2)的点对(P1,P2)(P

2017-11-16 19:02:38 378

原创 noip防低级错误手册

这里低级错误主要指与算法水平相关性不是特别大,或者能轻易发现的错误。诸如CE,静态内存超限,文件名打挂,样例不过。 1.开考前打开devCpp(我还是windowns选手),打开工具栏,点开编译选项,加入如下编译选项,-Wall可以防一些特低级错误,-Wl,--stack=*可以在本地运行时防爆栈(然而并不能在实际评测时防爆栈)(*是您想要的栈空间大小) 2.把代码尽量放进函数,结构体,类,

2017-11-08 13:26:48 2661 3

原创 P3696,玄妙的贪心题

首先把中场的每个团体看做左括号。结束时的每个团体看做右括号。然后按照人气值从小到大排序(实际上因为初始输入就有序,可以用归并来代替排序)。这样我们就得到了一个括号序列。每个括号都有一个颜色(即其学校编号)。然后要删掉尽量多的同色括号对,并使得剩下的括号序列仍然合法。从左往右考虑每个括号,一开始花了一个下午想了五种O(n)O(n)贪心,一一拍炸,然而拍炸前总觉得是对的。这里就不赘述这些贪心了。一个无所

2017-11-05 20:44:16 282

原创 CF878D

感觉这道题挺巧妙的(也可能是我题做少了),将取min和取max转化为了集合求交,并。 具体实现的时候,一个新的生物所对应的bitset,是他的父母对应的bitset取交和并后的集合,及其母集(与子集相对应,可能有更高级的叫法) 查询的时候,从高到低枚举这个生物的特性,在初始的k种生物中的排名,就行了。#include<bits/stdc++.h>#include<cstdio> const

2017-10-31 23:48:17 2028 2

原创 CF878C,图论与数据结构

当时赛场上读错题+被同学带偏节奏,在想kd-tree,然后gg。 首先,可以根据选手与选手之间直接比赛的胜负关系,可以建出一 张有向图。考虑将这张图进行SCC缩点,缩完后的DAG一定是一条链,这是一个良好的性质。 然后加入点的时候,就在kk个维度上找出它的前驱pp和后继ss,然后如果在原有的链中,ss在pp的前面,那么可以将pp到ss之间的强联通分量缩起来。具体操作的时候,我用了k棵set维护

2017-10-29 21:09:38 1065

原创 noip2017初赛,2017赛季的终点

昨天是noip2017的初赛。 初赛前一周,据统计数据称,宁波市报名提高组的人数从五十多激增至两百多,然后我以为别的地方也是如此,突然感觉压力山大,于是大力准备初赛(实际上也没多大力,只是把2010至2016的初赛做了一遍) 然后自我感觉良好,特别是AK了2016年的初赛卷,和得知实际上今年没比去年多太多之后。 抱着能过线就行的心态上考场后,被选择题给吓着了,认认真真地做了半小时,结果一道连通

2017-10-15 20:43:45 2527

原创 bzoj4709柠檬

一开始写了个O(n2)O(n^2)的暴力DP,找了波规律,发现每种数字的最优转移点一定是同种数字(话说这对于强的人来说可能不必找规律吧,看来我还是太菜了) 然后的想法就是平方函数具有下凸性,可以决策单调性优化,每次维护一个单调栈,再暴力弹栈就行了。 写完后发现跟暴力拍不上,单步了一会发现一种情况是第3个元素优于第1个元素优于第2个元素,然后暴力弹栈就挂了。 百度了题解,知道了可以预计算每个元素

2017-10-13 15:28:16 309

原创 bzoj3730震波

这是一道动态点分治好题。 在点分树上,对于每个点,维护两个树状数组,一个维护离点分中心距离不超过某个值的点权和,另一个维护离点分中心的父亲距离不超过某个值的点权和。注意树状数组的大小不必开到联通子树的大小,而是离某个定点的距离最大值就行了。 最后bzoj上好像是rk11?看来跑得还挺快的。#include<cstdio>#include<utility> #include<vector>#

2017-10-05 12:45:51 395

原创 bzoj3924幻想乡战略游戏

今天一整天都感觉有点心神不定。 这题我的写法是跟kczno1大爷的写法一样。 然后觉得点分治复杂度跟度数有关,是不对的。那标算还点分治? 在洛谷上AC后,又在bzoj上交了一发,好像是rk10? 接着就发现原版题面里有一句话“每个点的度数不超过20”,真想**出题人。#include<cstdio>#include<cctype>#include<utility>typedef lon

2017-10-04 21:08:43 281

原创 bzoj1095[ZJOI2007]捉迷藏

这题的题解就不说了,网上到处是。 但是,我一开始样例RE了,而且是改成调试模式就不RE了,真是难受(可能是windows的问题?)。 然后q234rty大爷用linux机子帮我调试,发现在我进行pop操作后,原先的point_iterator就失效了。我好菜啊,这都看不出。#include<cstdio>#include<vector>#include<cctype>#include<ex

2017-10-04 13:13:25 391

原创 bzoj2661,我全体都震悚起来

费用流做法是每个数拆成两个点,s和左侧点连流量为1,费用为0的边;右侧点和t连流量为1,费用为0的边。如果i,j合法,则同时向左侧i向右侧j及左侧j向右侧i连流量为1,费用为i+j的边。 但是,原图一眼看上去并没有什么性质。假如真的没有性质,那岂不是一般图最大权匹配可以用费用流?带花树发明者岂不是naive? 然后打表找规律,发现在n<=1000时是二分图。 大力思考一波,无果。 试了下n=

2017-09-27 20:23:22 419

原创 NOI2008志愿者招募,奇妙的费用流

这是题解 感觉没什么好说的,至于为什么要下减上,实质上是差分思想的运用,以将一段连续的东西变成两个单点。 最后再巧妙地运用流量守恒原理,就可以了。

2017-09-27 15:20:24 251

原创 bzoj3171

首先有一个结论 每个点只存在于一个环中,所以入度和出度都为1,而且其逆命题也成立。 拆点,S向入点连边容量为1,出点向T连边容量为1,向四联通的点连边容量为1费用为1。(如果是原来就有的箭头则费用为0) 这样,流最大时,每个点恰好入度和出度均为一。 并不是很想写,口胡一下算了,毕竟代码复杂度堪比普及,难点在于想法。

2017-09-26 20:47:38 229

原创 CF855E,状压数位DP

记叙一下当时的比赛情况。 开场2分钟看懂A,3分钟写完交上去,CE,发现没有#include<cstdio。我好菜啊。 然后10分钟时过掉B的pt,开C 20分钟时来了个提醒:注意B题答案可能为负。 突然想起来B题里有一句话const ll int=1ll<<60。而260<3∗10182^{60}\lt3*10^18,gg。 改完后B只剩897分,于是满怀怨恨地锁了B,发现有个人跟我错的

2017-09-25 15:24:55 912 1

原创 我的treap模板

今年寒假时封装了一个支持查询rank的treap。 然后发现这样无法支持指针的O(1)加减。事实上通过维护指向前继和后继的指针可以实现迭代器的O(1)加减。 今天就又写了一个treap模板,封装性自我感觉良好,有自己的迭代器,而且速度还行,在洛谷的普通平衡树一题中是第16页,总共2700份左右的AC代码。 同时为了测试迭代器和begin指针,还放到快排和堆的模板题里测试,发现我的treap常数

2017-09-24 14:40:34 325 2

原创 CF859G,奇妙的数学题

当时赛场上A掉前三题后,跟Chenwystc大爷分头开DE,我D他E,然后因为我是先做分值更低的D,导致只有rk155,比rk119的Chenwystc大爷低到不知道哪里去了。 A掉E后还有44分钟,大力做G,根本做不出,我真是太菜了。 从物理学角度看这题,有一个显然的做法:直接判n个质点的重心是否在圆心即可。具体实现时若直接用单位根,精度会爆炸,毕竟题解里号称可以造出重心离圆心只有10−500

2017-09-23 22:58:59 1121

原创 P2057

题解 这道题一开始潜意识里默认源点到人的边的流量inf,然后死活想不出,我真是太菜了。#include<cstdio> const int N=605,M=300005,inf=1<<25;inline int min(int a,int b){ return a>b?b:a;}struct graph{ struct edge{ int to,next,f

2017-09-22 14:54:35 303

原创 P2604网络扩容

我的做法是先将残量网络的正向边加进新图,并对所有残量小于k的正向边ii,在新图中对应地加上流量为k−fik-f_i,费用为wiw_i的边。 一开始WA在第一个点上,后来在重新建图时把残量网络里的反向边也加上,这样乱搞一下就AC了。据说此题数据很弱,哪位大佬能为我说明一下这种做法是否正确吗?#include <cstdio>#include <cstring>const int N=5010,M

2017-09-21 23:01:58 191

原创 p2469,[sdoi2010]星际竞速

如下是这道题一开始的想法 iniin_i->outiout_i连(0,1) ss->iniin_i连(aia_i,1) outiout_i->ss连(0,1) outiout_i->tt连(0,1) 若uu,vv之间有边(u<vu\lt v),则outuout_u->invin_v连(ww,1) 然而这样的图跑最小费用最大流时,会导致每个点都用能力爆发模式去到达。 然后就改成了如下方式

2017-09-20 20:09:49 220

原创 bzoj3698

这道题网上题解到处都是,在此就不赘述了。 看到这题时,我一开始的想法是对于每个点Ai,jA_{i,j}(其中i!=n && j!=n),向其所在行和列连边。 但这样是有问题的,因为可能行和列所连的边流量不同,这显然是不对的。 感觉网络流题目查错一般适合静态差错,因为网络流模板一般不太会打错,bug大多出在见图上,单步跟踪很难发现。 下面就是比q234rty大爷慢到不知道哪里去的代码。#inc

2017-09-20 14:46:24 315

原创 P3925,一道线段树合并题

有一种做法是考虑点x对答案的贡献,即所有满足vi<vxv_i<v_x的deplca(i,x)dep_lca(i,x)之和。将所有点按码力值排序后,依次将每个点到根的链加一,并把答案加上[(这个点到根的链上的点权和)乘(该点点权)]。用树链剖分实现,复杂度O(nlog2n)O(nlog^2n)。 我的做法是考虑续掉每个点x的收益,∑yvy∗ranky\sum_y v_y*rank_y,其中y处于x的

2017-09-18 23:34:56 501

原创 CF742F,奇妙的计数题

感觉通过重心来限制同构很巧妙啊(可能是套路?或许我做题太少了)。 我一开始的想法是把叶子去掉,这样就变成了所有点度数都小于等于dd,然后通过度数最大的点来限制同构,可能不太行?于是最后还是抄题解。不过这样可以减少点数,增加运行速度。 中途爆int,WA了一发,感觉自己好菜啊。#include<cstdio> const int N=1005;int f[N][15][N],n,d,i,j,m

2017-09-12 14:47:25 268

原创 洛谷3746

一开始没去想正解,对着部分分口胡了75分。 然后想正解,跟常人不同的是,我并没有把考虑k,接着就死活想不出,我真是太菜了。#include<cstdio>#include<cstring>const int N=55;int n,p,k,r,i;long long m;struct matrix{ int a[N][N]; inline void clear(){

2017-09-07 16:07:22 231

原创 UOJ195,【ZJOI2016】大♂森林

这题题解看梁大的即可,我就不赘述了。 对于梁大的代码,我有个细心但效果显著的优化,那就是求两点间距离时,acss(a[k].x); splay(a[k].x); ans[a[k].op]=sum[a[k].x]; x=acss(a[k].y); splay(a[k].y); ans[a[k].op]+=sum[a[k].y]; acss(x);

2017-09-06 15:42:45 500

原创 UOJ295,大力分类讨论

我可是现在才去订正今年ZJOI的蒟蒻。 回想ZJOI2017Round2,我2小时过了T1大样例中k=2的点,然后半小时码完T2的20分暴力,接着2小时15分钟一直沉浸在子串l..r的后缀是i..n的幻觉中,最后15分钟暴力+卡常。 倘若我记得特判T1n=1的情况,又把T3的2小时拿去写T2的r=n的部分分(当时应该会做),或许就110分了? 但那都过去了。 吉司机是公布过官方题解的,但那比

2017-09-05 22:04:52 346

原创 bzoj3682

这题网上题解到处都是,我就不说了。 有几个坑说一下(可能只有我这种蒟蒻能陷进去) 1.我以为开了读优后上一行的换行会被读掉,然后下一行读操作时就可以直接getchar()。于是我一怒之下卸掉了读优,以后少用getchar() 2.然后拼命简化代码,替罪羊树给删掉了重构操作,无果。结果发现函数末尾只有一个表达式,没有return,无语,我还是太菜了。

2017-09-05 15:08:14 294

原创 bzoj3685普通VEB树

这是一种来自xehoth大爷的奇技淫巧 我改造了一下,从232^3叉7层改成242^4叉5层,以适应2202^{20}左右的值域,但这可能缓存不优?因为辅助数组长度为65536,可能装不进缓存,感觉不太懂这套理论。 把5层改成6层(值域变成16777216)后测了一下: 插入10710^7个随机数是870ms左右; 删除10710^7个随机数是335ms左右(因为随出来的不一定在集合里)

2017-09-04 21:35:49 568

原创 CF848,第一次参加div1

开场3分钟杜教秒了A题,未成年的内心收到了震撼。 感觉A题同种字符只要数量一定,对答案的贡献就一定,而且不同种字符对答案的贡献互不影响。 然后打表找了下规律,好像是f[x]=x*(x-1)>>1。 接着一波01背包就过了A题,不过感觉26nn√26n\sqrt n可能比较悬?幸好这是CF。 看了下榜,大概300名左右,我还是太菜了。 开B题,似乎两个人i,j会相交,就一定满足ti-pi==

2017-09-02 18:47:14 1848

原创 bzoj3701,大力莫比乌斯反演

注意到n只有10万,这可比某些动辄101010^10的毒瘤题良心多了。 首先将[l,r][l,r]变为求前缀和 设当前的距离限制为L,对于两个点(x1,y1)(x_1,y_1),(x2,y2)(x_2,y_2),考虑枚举一维的增量dx=abs(x1-x2) 则答案为(n−dx+1)∑dx2+j2&lt;=Lj=1[gcd(dx,j)==1](m−j+1)(n-dx+1)\sum_{j=1}^{dx^

2017-09-01 18:49:40 707 4

原创 CF841E

传送门 [官方题解]http://codeforces.com/blog/entry/53943?locale=en() 我一直以为这场CF没题解,其实是Div2没题解 其实这题并不是很难想,像我这种蒟蒻在赛场上都能想出DP状态和转移,似乎跟题解差不多。然而因为自己太菜,状态设计的不太合理,转移很麻烦,然后就GG了。 题意很简单,就不说了。 大致说下我的做饭,首先注意到如果abab和bcb

2017-09-01 11:38:21 392

原创 CF842E

这场CF是以unrated选手的身份参加的,所以打的时候节奏比较慢,然而尽管慢,总共还是爆了5发OJ(A题忘判左界大于右界*1,B题看错d的含义*2 ,出题人真是的,样例给那么水 ,C题写了一个显然(是错的)的DP*2,D题反倒*0) 等到开E题时已经只剩30分钟,看到群里Claris说 辣鸡蒟蒻Claris(524936896) 0:34:20 我啥都不维护 辣鸡蒟蒻Claris(5249

2017-08-31 22:50:21 542

原创 BZOJ3589动态树,BIT+容斥

其实这题跟动态树无关。 由于链并的结果很奇怪,而链交的结果还是链,所以利用容斥,将并转化为交。 然后大概要求O(49q)O(49q)次链交?可能rmq求lca比较合适。 第一次写rmq求lca,以后要注意rmq相关的数组大小应开到两倍,因为欧拉序列长度是2n-1 然后还要使用一个数据结构,支持1.子树加;2.询问点到根的路径上所经过点的点权和。 求出原树dfs序后,维护两颗支持区间加,单点

2017-08-27 23:08:10 330

原创 CF AIM Tech Round 4上紫记

本来CF Round427就已经有1865rating了,当时扬言要一战上紫,结果后面两场CF一场-5,一场+2,直到现在才达成目标,可惜暑假结束前或许不再有div1的round了。 这场cf时常2.5小时(然而前108分钟拿到了所有分数)。 开场看A题,以为hack点很多(flag*1,后来发现是真的),过了5分钟才AC,然后15分钟时切了B题,30分钟时切了C题,一看standing,还在2

2017-08-25 20:11:26 493 1

原创 NOI2015软件包管理器,大力卡常记

其实此题并不卡常,只是昨天有人说这题全是0/1操作,或许可以压位,然后我采纳这个idea,刷了下榜。 一开始我把朴素线段树给直接换成压位,因为复杂度太大,并不比常数正常的线段树快。这里是纯压位代码 之后根据今年NOI2017D1T1压位线段树的经验,我把纯压位改成了压位线段树,这是代码 为什么压位线段树的相对于普通线段树的优化力度,并没有压位相对于常规暴力那么大?这是因为在常规问题中,压位优化

2017-08-24 19:49:42 570

原创 CF549C

刚看到这题,第一反应是打表,然而规律很乱。 看了下官方题解,似乎是直接考虑最终状态,然而细节较多,在cf这种手速至上的地方可能当场AC并不容易?#include<cstdio>#include<cstdlib>int n,i,z,x,y,k,j,l,u,v;inline void out(int x){ puts(x?"Stannis":"Daenerys"); exit(0

2017-08-18 20:48:22 431

原创 uoj196,DP好题

传送门 orz梁大 一开始的想法是设f[i][j][k]表示i次操作后第j个数为k的概率, 但不同的f[i][j][k]好像之间并不是独立的,反正没写出来。 然后就去抄梁大的题解,似乎很巧妙。#include<cstdio> #include<cstring>#include<algorithm>using namespace std;const int mo=1000000007,

2017-08-17 23:14:28 350

原创 bzoj2863图上的DP题

题目传送门 题解传送门 这题解最后一步似乎没讲清如何容斥的,或许是在大佬眼里,这过于显然(也可能是容斥的某个常用公式?)然而我并不知道,还是证一下吧。 对于有ii个点的图,记至少有j个入度为0的结点的DAG数量是 a[j]=(ij)∗2j∗(i−j)∗f[i−j]a[j]=\dbinom{i}{j}∗2^{j*(i-j)}∗f[i−j] 并用b[j]b[j]表示恰好有j个入度为0的结点

2017-08-15 23:31:38 312

原创 POJ3304

似乎NOI2017考了计算几何。 计算几何这么不OI向的东西,竟然在CCF系列赛事的NOI中考了,感觉有必要学一学啊。 这题本来倒没什么,只是我一开始枚举两个点,直接判下标是否相等。但按照网上各种题解,应该判两个点是否相等。 这可能是做计算几何遇到的第一个坑?#include<cstdio>#include<cmath>const int N=105;typedef double db;

2017-08-15 22:08:04 400

空空如也

空空如也

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

TA关注的人

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