自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 智障错误大全

1. for(int i=1,j;i<=top;i++) { j=i; while(st[j]==st[i]&&j<=top)j++;j--; tmp=(ll)tmp*njc[j-i+1]%p; i=j; }st这个栈多次使用,一开始没写j<=topj<=top 然后就gg了。。。。

2016-09-06 09:21:38 449

原创 POI2013

bzoj 3144先二分答案,然后就是求一些条件是否都可行。 首先一个人一定在第一次记录到最后一次记录的这段区间内出现。 然后每段区间可以两边扩展,如果一个人没有记录过那么他的区间是任意的。 那么可以把当前工作的人分成三类:在区间内的人,区间未开始的人,区间已经结束的人。 没记录过的人属于第二种。 首先如果一个时间有两个人记录的不一样,那么一定无解。 如果某个时刻必选的人数大于要求的人数

2016-09-28 17:23:13 496

原创 bzoj 3833 [Poi2014]Solar lamps 树套树 splay

首先由于所有灯的角度都是一样的,所以可以用坐标转换把一个点和点的覆盖区域转成平面直角坐标系里的点和一个点右上的区域。 然后这个问题可以转化为平面上一坨点,设一个点的答案为ans,求一个点左下的点中ans第k小的值。 树套树+二分? 这题nlog2nlog^2 都卡得要死你TM跟我讲这个?由于求的东西天生离线所以我们可以排序消掉一维坐标。 然后就是带修求前缀第k大。 树状数组套主席树? 这

2016-09-27 17:23:28 441

原创 POI 2014

bzoj 3522&&4543这题好神。。。 一开始我还在想启发式合并,然后写了一个发现gg了,然后看题解发现这题正解竟然TM是O(n)O(n) 的!是O(n)O(n) 的!!是O(n)O(n) 的!!!树形dp。设f[i][j]f[i][j] 表示在点i,向下长度为j的路径条数。 设g[i][j]g[i][j] 表示i的子树中和与i距离为j的点可以拼成一个三元组的点对数。就是这样: 其中z与

2016-09-23 20:51:35 359

原创 POI 2015

bzoj 4386 Wycieczki把一个点拆成三个点跑矩乘快速幂,因为要求一个前缀和所以新建一个点,连一个自环,把所有点的第三个点连过去。 因为可能暴long long,所以我用的long double,然后很慢。。。#include <bits/stdc++.h> using namespace std; #define ll long long #define ld long doubl

2016-09-21 14:16:37 937

原创 codeforces #720 720A 720B

720A贪心,把从(0,0)开始的人按距离从小到大排序,然后按顺序枚举所有人,尽量往下,在保证这个的前提下尽量往左。 这样可以将从(0,0)开始的人都填进去,然后把空位置按到(0,m+1)的距离排序,验证一下(0,m+1)的人是否都能填进去。#include <bits/stdc++.h> using namespace std; int n,m,k,l; int v1[11000],v2[110

2016-09-19 13:15:00 973

原创 bzoj 4245 [ONTAK2015]OR-XOR 贪心

题意:给定一个长度为n的序列a1,a2,…,an,将它划分为m段连续的区间,设第i段的费用ci为该段内所有数字的异或和,则总费用为c1 or c2 or … or cm。求总费用的最小值。从高到低枚举每一位,我要把这个序列分成m块,使每块中只有偶数个数该位为1。那么如果我把它分成尽可能多的块使每块中该位有偶数个1,那么任意两块合并之后仍然满足每块中该位有偶数个1。分块过程满足贪心性质,可以从前往后贪

2016-09-18 16:47:02 350

原创 bzoj 4174 tty的求助 数论 莫比乌斯反演

题意:求∑Nn=1∑Mm=1∑m−1k=0⌊nk+xm⌋\sum_{n=1}^N \sum_{m=1}^M \sum_{k=0}^{m-1}\lfloor \frac{nk+x}{m}\rfloor先膜PoPoQQQ大爷。∑Nn=1∑Mm=1∑m−1k=0⌊nk+xm⌋\sum_{n=1}^N \sum_{m=1}^M \sum_{k=0}^{m-1}\lfloor \frac{nk+x}{m}\r

2016-09-18 15:40:45 400

原创 bzoj 4116 [Wf2015]Tours tarjan

这题结论好神。 答案是gcd(删掉一条非桥边后新产生的桥边数量+1)gcd(删掉一条非桥边后新产生的桥边数量+1)#include <bits/stdc++.h> using namespace std; #define N 2100 int head[N],nex[N<<1],to[N<<1]; int bridge[N],ib[N],vis[N],dfn[N],low[N],del[N]; i

2016-09-18 10:47:43 392

原创 bzoj 3899 仙人掌树的同构 仙人掌 树hash

题意:给你一个仙人掌,然后把所有节点置换一下,求一共有多少置换满足置换后边不变。Q:如何让代码变长? A:将所有tab换成4个空格。 看到bz上我5k的代码我是懵逼的。。。把一个环变成一个红点连环上的其他边。这步用一个栈维护一下dfs到当前点的所有祖先就行了。 然后变成了一棵树,那么用正常树hash就行了。一个普通点,考虑他每种儿子的个数(hash值相同的算一种儿子),假设一种儿子有xx个,那

2016-09-13 20:14:16 410

原创 bzoj 2927 博弈论

题意: 将n个点的多边形连n-3条不相交的对角线分成n-2个三角形,指定一个黑色的三角形,两个人轮流沿画好的对角线切下来一个三角形,切下来黑色的三角形赢,问先手是否必胜。将相临的三角形连一条边,然后把黑三角形拎出来,这就是一个树了。 如果黑三角形只有一个儿子,那么先手必胜。 打个表可以发现别的情况只和n奇偶性有关。#include <stdio.h> int n,a,b,c,t; int mai

2016-09-12 13:28:01 327

原创 bzoj 3864 dp套dp

题意:给一个长度为n(n<=15)n (n<=15) 的DNA串ss,对于[0,n][0,n] 之间的每一个整数xx 求有多少长度为mm 的DNA串与 ss 的lcs长度为 xx 。考虑dp求lcs的转移分两种: 1.f[i][j]=max(f[i−1][j],f[i][j−1])(S1[i]!=S2[j])1. f[i][j]=max(f[i-1][j],f[i][j-1]) (S1[i]!=

2016-09-12 10:22:21 974

原创 bzoj 1513 树套树

题意:每次把坐标系上的一个矩形内的权值修改成矩形内最大权值+w。求最后最大权值。二维线段树,但外层数据结构既不能pushup(总不能重构内层树吧?),也不能pushdown(两个标记不能相加)。我草,那怎么办?标记永久化,打两种标记,第一种标记对经过的每一个点一路打下来,查询时精确查找。第二种标记恰好相反。那么对于查找的区间在标记区间之上的情况会查到第一种标记,在标记之下的情况会查到第二种标记。话说

2016-09-10 15:23:49 381

原创 codeforces 687D Dividing Kingdom II 并查集

题意:n个点m条边的图,q次询问只保留 l,rl,r 之间的边,再去掉一些边使这个图变成二分图,求去掉的边权最大值最小是多少。只是想吐槽一下,这题10^9乘并查集log竟然能过!竟然能过!!竟然能过!!!枚举每个询问,从大到小加入所有l,rl,r 之间的边,然后搞一个维护到父亲距离的并查集,如果加入边的两个端点连通且距离为偶数就输出这条边的边权。因为二分图两点间的任意路径长度奇偶性一定相同。#inc

2016-09-08 15:12:53 378

原创 topcoder乱作系列2 srm503 srm504

srm 503 250pts注意到答案只能是-1或1或2,判一下就行了。#include <bits/stdc++.h> using namespace std; class ToastXToast { public: int bake(vector<int>a1,vector<int>a2) { sort(a1.begin(),a1.end());

2016-09-07 09:53:28 1047

原创 codeforces 690 F3 Tree of Life (hard) 树hash

题意:一棵树,给出两个分别去掉两个不同点之后形成的图,求这棵树原来长什么样。n<=1000n<=1000我从未见过如此恶心的树hash树大概长这样,u,v分别是去掉的两个点。两个图分别长这样: 和这样: 把u,v都去掉就变成这样: 可以看到这个图被分成了3部分: 连接u,v的部分 包含u的子树去掉u,再去掉u,v之间部分剩下的一堆子树 包含v的子树去掉v,再去掉u,v之间部分剩下的一堆子

2016-09-06 19:03:55 562

原创 codeforces 690F2 Tree of Life (medium) 树hash

题意:一棵树,分别给出去掉第i个点之后剩下的图,点的顺序打乱,图的顺序打乱,求这棵树原来长什么样。n<=100n<=100一定有一个图是去掉一个叶子节点之后的,找到这个图,枚举叶子加到哪,然后对于加完叶子的树枚举删掉一个点,把删完点的图hash出来扔到multiset里,再看其他图hash出来的值和这个multiset里的东西一不一样就行了。无根树hash需要先找到重心,从重心hash,如果有两个重

2016-09-05 18:57:03 601

原创 poj 1486 网络流+tarjan

题意:给一堆矩形和一些点,每个矩形必须对应一个点,求对应的点唯一的矩形个数。如果点在矩形内部那么从点向矩形连流量1的边,从S向点连流量1的边,从矩形向T连流量1的边。跑网络流。跑出来的东西是一种方案。将这种方案变成另一种方案只需要找到所有边剩余流量都为1的环,这样的环一定是偶环且正向边和反向边交替排列。那么把正向边流量流掉,把反向边流量退回就是一种新方案。那么只需要跑一遍tarjan,如果矩形和在网

2016-09-04 15:07:35 399

原创 codeforces 710f String Set Queries ac自动机 二进制分组

题意:维护一个字符串集合,支持插入一个串,删除一个串,询问集合中的串在给出的串中出现多少次,一个串出现多次算多次。并且不会有两次插入的串相同。强制在线。考虑没有删除的情况,将插入串的个数二进制拆分,对于每2k2^k 个串维护一个ac自动机。 这样共有loglog个ac自动机 。插入时如果当前ac自动机中串的个数和上一个个数相同,那么合并两个自动机。每个字符串只会被合并loglog 次。有删除时同

2016-09-02 19:05:06 1295

原创 1998: Fsk物品调度 并查集

题意:给出一个数组c[i]c[i],求一个数组pos[i]=d∗xi+yi+c[i]pos[i]=d*x_i+y_i+c[i] 满足对于任意j<ij<i,pos[i]!=pos[j]pos[i]!=pos[j]。并且满足最小化 yiy_i 的前提下最小化 xix_i 后面的不说了。从前到后枚举,如果当前点没有被访问过,从当前点 ii 开始枚举(i+d)%n(i+d)\%n ,这样会有一个环。当yi+

2016-09-01 15:22:14 295

空空如也

空空如也

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

TA关注的人

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