自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HbFS-

Would you like?

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

原创 [BZOJ4419][Shoi2013]发微博

嗯我的做法听龊的 有在线做法,诶我强行用一大堆STL跑过去了 啥都写不好,一次没AC/************************************************************** Problem: 4419 User: di4CoveRy Language: C++ Result: Accepted Time:1664 ms

2017-02-12 13:04:00 491

原创 burnside引理+polya计数法小结

WC上wwwwodddd讲的整数和多项式相关里面最后又burnside引理的一部分 被生成函数调戏疯了的我突然断线重连 坐在礼堂最后一排的沙发位上和老黄人疯狂口糊 不过听课的时候想的不是很细,重新整理了一发 大概就是 本质不同的方案数=1置换个数∑cnti=0在置换i下不变的方案数本质不同的方案数=\frac{1}{置换个数}\sum_{i=0}^{cnt}在置换i下不变的方案数 至

2017-02-09 00:13:31 1851 2

原创 [BZOJ2648]SJY摆棋子 k-dtree

好久以前尝试写的题,突然发现还没有写过 回来把坑补了诶看到题没想太多觉得cdq分治可做就直接上了 想把原问题拆成四个三维偏序,cdq分治+树状数组就能求 两个log,TLE成傻逼 实测大概要向下卡十倍常数,今天WC刚刚学了底层优化然并卵诶算了没关系就当复习了一遍cdq分治模板吧,一边和舍友扯淡一边写的,写了有点久。 k-dtree硬上真优美p.s.今天GEOTCBRL跑来房间里吐槽了我两件

2017-02-07 22:54:18 405

原创 [Codeforces][TestingRound#13]C. Interactive Bulls and Cows (Hard)

又是一道交互题,做法相当玄学,反正能过 大部分人好像都是随机随出来的,srand(233333)就可以…… 我的做法看起来不是随机的做法,听起来也很有道理,但我不知道为什么可以这么做每次交互可以筛去一部分不合法的数,我们要合理的输出使得询问次数最少 对于每一个数,和其他数匹配,找出 “若输出这个数,且回复为u,v那么能筛去多少数”,枚举u,v,取能筛去最多数的那个数输出。至于为什么对,大概是给

2017-02-06 00:10:18 334

原创 [BZOJ3626][LNOI2014]LCA 树链剖分

太神啦! http://blog.csdn.net/popoqqq/article/details/38823457/************************************************************** Problem: 3626 User: di4CoveRy Language: C++ Result: Accepted

2017-02-03 16:53:38 409

原创 [玲珑杯#Round8] XJT Love Strings KMP+树上倍增

写倍增写到怀疑人生 觉得没有任何问题但是交上去就是WA 最后发现“#ifndef ONLINE_JUDGE”在玲珑OJ上不能用原串最长的后缀等于该串的前缀(?)这个东西可以用KMP的next数组求 next数组构成一棵树(每个点有且只有1个失配父亲,0没有失配父亲),答案相当于求next[a]和next[b]的LCA倍增求即可 注意:区分深度和该点在原串中所代表的前缀的长度#include

2017-02-01 18:16:04 268

原创 [BZOJ4591][Shoi2015]超能粒子炮·改

解法很好想哟 2333是个质数,而且很小,Lucas走起 诶不会用编辑器打同余符号,题解不写了/************************************************************** Problem: 4591 User: di4CoveRy Language: C++ Result: Accepted Time:45

2017-02-01 12:19:08 577

原创 [BZOJ4554][Tjoi2016&Heoi2016]游戏

“有这么多奇怪的限制关系一般都是网络流” 如果没有硬石头,那么左边行右边列,每个点代表一条边一遍匈牙利就可以 硬石头会把所在行和所在列隔开,对这一行这一列新建一个节点继续建图就好我一定要在KOI前学会匈牙利!/************************************************************** Problem: 4554 User: di4

2017-02-01 12:13:03 243

原创 [BZOJ4028][HEOI2015]公约数数列

哇太神啦!隐约感觉到一定要分块,可是并没有想出来处理xor的方法,看到题解真的跪倒了orz根号分块,记录区间gcd和区间异或和,然后再另外一个数组里对这个区间进行排序,注意双关键字把标号小的扔前面单点修改直接暴力重构区间 查询的时候,如果该区间的gcd和这个区间之前的gcd相等(这个表述相当有问题,意会即可),把gcd除掉以后在有序数组里面二分即可(类似lower_bound做法)。若不相等,暴力

2017-02-01 12:09:36 366

原创 [CodeVS1343]蚱蜢 非旋转式Treap

非旋转式Treap代码请看周魏大爷blog http://blog.csdn.net/zawedx/article/details/54706561 一个写程序不需要if语句,外加变态压行的大爷听q神说用非旋转Treap写LCT多一个log?#include <iostream>#include <cstdio>#include <algorithm>#include <cassert>

2017-01-31 11:51:10 310 3

原创 [BZOJ4567][Scoi2016]背单词 字典树+贪心

后缀关系可以构成一棵树,这东西用字典树就能求那么等同于说需要把这棵树上的节点放到序列上,显然不可能把父亲放在儿子后面,n2n^2的代价大于任何一种按照dfs序放的代价显然放到序列上是按照dfs序来放的,这个推一推就推出来了 dfs优先走siz小的儿子(这个和树剖刚好相反),正确性显然(小学数学书好像有类似的结论)#include <iostream>#include <cstdio>#incl

2017-01-30 18:22:58 342

原创 [BZOJ4553][Tjoi2016&Heoi2016]序列 CDQ分治

令b[]为原序列,a[i]为修改过程中b[i]被修改到的历史最大值,c[i]为历史最小值 原题可转化为求最长的子序列,满足对于任意两项ii,jj,i<ji<j,b[i]<=c[j]b[i] <= c[j]且a[i]<=b[j]a[i]<=b[j] 这东西好像叫二维偏序,反正拿CDQ分治能求就是了 一维排序二维树状数组,因为树状数组已经有一个log了所以排序直接上快排也不会有很大影响#inclu

2017-01-30 18:15:19 436

原创 [BZOJ4552][Tjoi2016&Heoi2016]排序 二分答案+线段树

诶看到题目我以为是很神很神的数据结构,直接想放弃了 看到题解以后发现题目确实很神,不过并不是很强的数据结构,做法很巧很棒直接处理升序和降序是没法儿做的 二分答案x,将序列里面的所有元素分成大于x的和小于等于x的,分别用0,1表示,这样区间升序/降序就能转化成为区间赋值,线段树维护即可代码几乎没难度,可是考场里要想到这个解法可能不容易#include <iostream>#include <cs

2017-01-30 16:45:19 332

原创 [BZOJ4563][Haoi2016]放棋子 错排公式+高精度

诶我感觉我在刷水题啊#include <iostream>#include <cstdio>#define N 2050using namespace std;int n;struct num{ int d[N],w; void print() { for (int i=w;i>=1;i--) printf("%d",d[i]); printf("\n");

2017-01-30 15:38:25 471

原创 [GDKOI2016] Day2 染色大战 记忆化搜索

出题人讲这题的时候扯到了模拟退火,遗传算法,alphabeta剪枝等等 然而这题一个记忆化搜索就能跑过去#include <iostream>#include <cstdio>#define INF (1<<30)#define N 22using namespace std;int n,m,tp,e[N][N],map[N][N],v[N][N];int vis[2][1<<N];c

2017-01-29 16:30:12 319

原创 [GDKOI2016] Day2 QT与泰剧 数位dp

诶终于到博客第100篇了,值得纪念啊数位dp有很多种写法,大部分是记忆化搜索或者多一维表示是否受限制,我之前的写法一直是一遍普通dp+一遍普通搜索,虽然很好理解但是写起来很挫,这次尝试了一下多一维的做法(实际上我开了两个数组)F[i][p1][p2]F[i][p1][p2]表示第ii位(以个位为第一位),p1表示是否全部为质数,p2表示模3的余数。 特别注意处理前导零(我真是菜鸟在这里处理了好久,

2017-01-29 14:13:56 324

原创 [GDKOI2016] Day1 寻宝 01分数规划+最大权闭合子图

还有一个点没过……好奇怪 留坑先吧

2017-01-27 23:35:03 370

原创 [GDKOI2016] Day1 不稳定的传送门 结论

对每个点可以走的传送门排序算期望即可 对于任意两个可以走的传送门推一个偏序关系就可以了#include <iostream>#include <cstdio>#include <vector>#include <algorithm>#define N 200050#define INF 1<<30using namespace std;typedef double db;db F[N];

2017-01-27 23:33:30 368

原创 [GDKOI2016] Day1 魔卡少女 线段树

很久之前写的题,今天看到的一句话概括了这道题的精髓: xor的每一位具有独立性,分开维护即可10棵线段树+1e8+7,很好写很好过#include <iostream>#include <cstdio>#define N 2000050#define mod 100000007#define mid ( (l+r)>>1 )#define ls l,mid,(t<<1)#define rs

2017-01-27 23:16:28 663

原创 [POJ2976]Dropping tests 01分数规划

原来这就是01分数规划,以前听左老师讲过做了类似的题,结果并不知道这玩意儿的名字叫01分数规划,涨姿势了#include <iostream>#include <cstdio>#include <algorithm>#define eps 0.00000001#define N 1000050using namespace std;int n,k,a[N],b[N],e[N];doubl

2017-01-27 15:21:25 330

原创 [codeforces] 762C - Two strings 线段树

我想这题一定有不需要线段树的做法 但是比赛的时候时间紧迫也没有去想那么多觉得线段树可做直接上了考虑留下来的区间,一定是左边一段右边一段(也可以只有左边或右边),我们需要找最长的这么两段,且这两段和A串匹配的LCS不能有交集。线段树节点[l,r]值为y表示B串从左往右匹配LCS到A串的[l,r]区间,其中位置B串匹配到最长的长度为y,从左往右处理完之后再从右往左枚举B串长度和匹配到A串的位置,两者需

2017-01-26 19:27:15 583 3

原创 [codeforces] 501E - Misha and Palindrome Degree

分类大讨论即可若字符串本身就回文,区间可以任意取,否则,若区间[l,r]合法,那么[ll,rr]满足ll<=l且rr>=r的区间都合法,和[l,r]完全没有交集的区间不合法。那么一定能找到一个最小的区间必须被所有合法的区间包含,且包含它的皆为合法的区间,找出来就行了。#include <iostream>#include <cstdio>#include <cstring>#define N

2017-01-26 19:21:39 480

原创 [Codeforces goodbye2016] D. New Year and Fireworks

注意到棋盘大小很小,可以开棋盘大小*8的数组来记录所有的状态,重复的可以只记一个,每次扫一遍即可比赛的时候想到解法一阵乱敲一次就过了,真是狗屎运 比赛时写的代码,没想那么多也没有注重代码的美观#include <iostream>#include <cstdio>#include <cstring>using namespace std;int map[2][310][310][8];int

2017-01-26 18:10:50 411

原创 [Codeforces goodbye2016] E.New Year and Old Subsequence 线段树

诶这题卡了我大半天,换了一万种写法,重新定义了好多个数组 诶这篇题解写的相当垃圾,如果是想看做法请绕路其实主要恶心的是数字6,这玩意儿好多地方能放,也有好多地方不能放,重点对它讨论的思路是没错的。 总体上来说,这个东西不能放在”201”的后面,不管是在”7”的前面还是7的后面做法是线段树节点维护一堆值,分别表示匹配2017的第i-j位且不包含2016的至少删除的字符个数,还有接在左边第i位后面的

2017-01-26 18:07:27 660

原创 [BZOJ3721]PA2014 Final Bazarek 单调性

这题想起来挺简单的,两三分钟就出结论了,写起来也快,结果前几发提交用了I64d,卡了好久对于答案x,最后的决策一定是取奇数个奇数和任意个偶数组成的,为了使答案最大,当奇数的个数和偶数的个数确定时,我们取最大的若干个。将奇数取出来降序排序,将偶数取出来降序排序,倘若我们此时选择了p1的奇数,p2的偶数 若要增加奇数的个数,减少偶数的个数,就将p1+=2,p2-=2(维护总数奇数的性质),反复操作时候

2017-01-25 22:11:38 385 2

原创 [BZOJ4700]适者 CDQ分治

看到题目以后并没有第一时间想到cdq分治,看了很多篇题解都没有明白,后来自己yy出来了一个解法,应该是对的反正过了首先考虑若一个炮塔都没有被秒杀,那么怎么安排攻击顺序最好 对于两个炮塔u,v,若u在前那么v将多产生d[u]×a[v] d[u] \times a[v]的伤害,v在u前那么u将多产生d[v]×a[u] d[v] \timesa[u] ,显然我们要使伤害最小,即当u在v前时,满足d[u]

2017-01-25 15:29:55 924

原创 [BZOJ4710][Jsoi2011]分特产 容斥原理

直接容斥一发即可/************************************************************** Problem: 4710 User: di4CoveRy Language: C++ Result: Accepted Time:632 ms Memory:34144 kb****************

2017-01-24 23:18:55 475

原创 [51nod 1362]搬箱子 组合数公式

天呐51nod是不是特别喜欢卡常啊这题一直推公式推到复杂度足够低就可以了,感谢班上的数竞大爷毛公给我的指点 枚举一下斜向下的操作有多少次,令它为aa,令竖着走为bb,a+b=na+b=n总共有n+m-a次操作,其中有三种操作,可以很简单的得到答案 ans=∑mi=0∑na=0Can+m−aCbn+m−2a ans = \sum_{i=0}^m \sum_{a=0}^n C_{n+m-a}^aC_

2017-01-24 23:16:09 830

原创 [BZOJ4710][Jsoi2011]分特产 容斥原理

容斥一发即可#include <iostream>#include <cstdio>#define mod 1000000007#define N 2050using namespace std;typedef long long LL;LL C[N][N],F[N],ans;int n,m;int a[N];int main() { scanf("%d%d",&n,&m);

2017-01-24 09:31:58 303

原创 [BZOJ4551][Tjoi2016&Heoi2016]树 dfs序+线段树

维护一棵只有标记的线段树 标记为二元组(x,v)表示节点和深度 定义标记加法为取v较大的那个标记#include <iostream>#include <cstdio>#include <vector>#define mid ( (l + r) >> 1 )#define ls l,mid,t<<1#define rs mid+1,r,t<<1^1 #define N 100050usi

2017-01-23 21:54:35 289

原创 [Codeforces734E]Anton and Tree 树的直径

好神的题 做法:对于每一条边E(u,v),若两点颜色相同那么边权为0,否则为1,输出树的直径/2上取整 证明: 边权为0相当于将两个点并成一个点,那么树上的点相当于已经进行了黑白染色,对于树的直径,至少需要树的直径/2,上取整,才能染成同一颜色,做法即对直径的中点染色即可#include <iostream>#include <cstdio>#include <cstring>#

2017-01-23 18:34:29 278

原创 [Codeforces343D] Water Tree 树链剖分

既然讲了这题,就写一写吧 直接剖,没啥好想的#include <iostream>#include <cstdio>#include <vector>#define mid ( (l + r) >> 1 )#define ls l,mid,t<<1#define rs mid+1,r,t<<1^1#define N 500050using namespace std;int son[N]

2017-01-23 18:16:53 372

原创 [Bestcoder Round#91][HDU6012] Lotus and Horticulture 排序

诶还是fst了 这题虽然简单但是坑点挺多的 把温度当成一条扫描线扫过去,把每个植物的两种温度分开来,权值是a-b 排个序扫过去Notice: 1、注意处理温度相同的情况(我居然把温度相同的双关键字排序!) 2、注意边界,温度是任意实数,所以将左边界改成2*l,右边界改成2*r+1#include <iostream>#include <cstdio>#include <algorith

2017-01-23 13:39:07 275

原创 [BZOJ2657][Zjoi2012]旅游(journey) 树的直径

太神啦翻popoqqq博客才知道了解法 构图找直径即可/************************************************************** Problem: 2657 User: di4CoveRy Language: C++ Result: Accepted Time:2724 ms Memory:2130

2017-01-23 13:30:25 315

原创 [BZOJ4653][Noi2016]区间 线段树

将所有区间按li-ri排序,那么答案一定是一段连续的区间 有单调性,两个指针扫 一段区间是合法的当且仅当这个区间中存在一个点被超过m个区间覆盖 线段树维护区间最大值,支持区间加法操作即可 notice:l,r达到了1e9,需要离散化/************************************************************** Problem: 4653

2017-01-23 13:28:44 351

原创 [BZOJ4443][Scoi2015]小凸玩矩阵 二分法+二分图匹配

二分答案,把小于等于该答案的边加入二分图,判断匹配数是否大于等于n-k+1。#include <iostream>#include <cstdio>#include <queue>#include <cstring>#include <vector>#define INF 2147483647#define N 200500#define M 400050using namespace

2017-01-22 18:26:42 340

原创 [BZOJ2588]Spoj 10628. Count on a tree 可持久化线段树

离散化 对每个节点,用线段树表示该节点到根的路径上的值域 然后可持久化询问的时候查询u,v,LCA(u,v),fa[ LCA(u,v)]结点上的四棵线段树 做一做减法就好notice: 1、初始的权值已经超过了int,需要long long 2、最后一组询问的换行符不要输出!(我已经邮件了一发管理员希望他改题面)写起来很好写#include <iostream>#include <cst

2017-01-21 18:26:41 295

原创 [BZOJ3894]文理分科 最小割

诶兄弟我正在B站直播写博客建立网络流模型 对于每个学生, 原点连向他,容量为他选择文科的收益 他连向汇点,容量问他选择理科的收益 对于每个学生,再多创建两个附加点p1,p2, p1连向他周围的学生容量为INF,周围的学生连向他容量为INF答案=正权值和-最小割#include <iostream>#include <cstdio>#include <queue>#include <c

2017-01-21 16:24:28 354

原创 [BZOJ3997][TJOI2016]组合数学 平面图

平面图相关 从左下扫到右上即可#include <iostream>#include <cstdio>#include <cstring>#define N 1050using namespace std;typedef long long LL;int v[N][N],n,m;LL F[N][N];void ut(LL &x,LL y) { x = max(x,y); }int m

2017-01-20 21:29:55 382

原创 [POJ3177]Redundant Paths Tarjan求双连通分量

双连通分量缩点后重新构图,答案为叶子节点个数除以二,向上取整证明: 显然每个叶子节点至少至少需要连一条边出去,否则该节点被孤立,答案>=叶子节点个数/2,向上取整; 对于每一个叶子节点,寻找与他距离最远的一个叶子节点连边,反复操作直到没有孤立的叶子节点,这显然是一组合法解,故等号成立 证毕#include <iostream>#include <cstdio>#in

2017-01-20 20:46:38 316

空空如也

空空如也

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

TA关注的人

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