自定义博客皮肤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)
  • 收藏
  • 关注

原创 bzoj2962: 序列操作

这是一道区间修改的线段树,其中区间加比较难,但手推一下也可以推出来,然而我慢的飞起。。。#include#include#include#define P 19940417#define N 160005#define ll long long#define MO(x) ((x)%P)using namespace std;int n,q,a[N],x,y,z,b[21],tg

2016-05-31 08:19:29 912

原创 bzoj2960: 跨平面

题意:给定平面图,球队呕吐的最小树形图。平面转对偶可以将每条边分成两条,然后暴力找一圈。最小树形图使用朱刘算法,然而我也不太懂。。#include#include#include#include#include#define N 3005#define M 30005#define ll long longusing namespace std;int n,m,st[

2016-05-30 12:44:42 776 2

原创 bzoj2959: 长跑

又看了一下LCT,复杂度还是不懂,怎么样均摊O(longn)???感觉一写残就退化了。。。于是回顾了一下板子,总算是过了。。原树上的父亲大概是没有记吧。。不知道为什么find改成这样会T。。TATint find(int x){ acc(x);splay(x); while(c[x][0])x=c[x][0]; return x;}#include#include#i

2016-05-27 15:50:35 841

原创 bzoj2958: 序列染色

一眼想到是DP,然而不会。用DP[i][j][k]表示第i位为k,状态为j的方案数,O(1)转移即可。Orz lych#include#include#define N 1000005#define P 1000000007using namespace std;int n,k,dp[N][3][2],W[N],B[N],t;char c[N];int Mo(int x,int

2016-05-26 15:52:43 828

原创 bzoj2957: 楼房重建

容易想到把楼房高度转化为斜率,然后就是求x1,x2,x3...使x1#include#include#define N 100005using namespace std;int n,m,x,y,see[N*4];double Max[N*4];int Get(int k,int l,int r,double x){ if (l==r) return Max[k]>x; in

2016-05-26 15:49:09 600

原创 bzoj2956: 模积和

显然分块搞搞。。原式=(Σn%i)*(Σm%i)-Σ(n%i)*(m%i)其中Σ(n%i)*(m%i)=Σn*m-i*(n/i*m+m/i*n)+i*i*(n/i)*(m/i),分块搞搞即可,时间复杂度O(sqrt(n))。#include#include#define ll long long#define MO 19940417#define si 3323403usin

2016-05-26 15:45:45 765

原创 bzoj4569: [Scoi2016]萌萌哒

一个简单的想法是对每一位用并查集,但是显然会TLE,因为同样的位可以被合并多次。考虑ST表的思路,维护logn个并查集,暴力修改。如果上一层已合并,就不用到下层了,这样最多合并nlogn次,时间复杂度正常。#include#include#include#define N 100005#define MO 1000000007using namespace std;int

2016-05-25 09:57:09 601

原创 bzoj4568: [Scoi2016]幸运数字

一句话题意:树上两点间路径子集最大异或和。看了一下线性基发现好强,但我也不太会,先贴代码吧。。#include#include#include#define N 20005#define M 200005#define Mlg 6000005#define ll long longusing namespace std;bool ok[N<<1];int n,m,x,y,

2016-05-24 15:09:43 1175

原创 bzoj4567: [Scoi2016]背单词

题目意思有点难懂,给定n个单词,找到一种排列使代价最小。在x处的一个单词的代价为:1.有一个单词是它的后缀且在它后面n*n,2. 没有单词是它的后缀且在它后面x-前一个是它的后缀的单词的位置(如没有即为零)。很显然可以倒着暴力构造一棵tire,由于1的代价太大,考虑不存在1。即每个后缀填完后才能填自己,同时填完一个单词的子树的最小代价是固定的,只要合理安排儿子的遍历顺序即可。显然应dfs先遍历

2016-05-24 06:59:59 1107

原创 bzoj3462: DZY Loves Math II

第一眼看题没看懂。。后来发现pi可以等于pi+1。。。题目可化为给定S=p1+p2+...+pk,求p1*x1+p2*x2+..+pk*xk=n的方案数(x1,x2,x3,...>0)。因为S不妨把xi分为ai=xi/S,bi=xi%S。枚举m,p1*b1+p2*b2+...+pk*bk=n-m*S。这个可以用多重背包的方式预处理,剩下的可用插板法得到,时间复杂度O(sqrt(S)+S

2016-05-23 08:16:28 1575

原创 bzoj3309: DZY Loves Math

这显然要用莫比乌斯反演:∑i=1a∑j=1bf(gcd(i,j))\sum_{i=1}^{a}\sum_{j=1}^{b}f(gcd(i,j)) =∑df(d)∑i=1⌊ad⌋∑j=1⌊bd⌋[gcd(i,j)=1]=\sum_{d}f(d)\sum_{i=1}^{\left \lfloor \frac{a}{d} \right \rfloor}\sum_{j=1}^{\left \lfloor

2016-05-20 14:37:38 690

原创 bzoj4592: [Shoi2015]脑洞治疗仪

由于脑洞的序列不会改变,考虑用线段树维护区间内sum,左边0的个数,右边0的个数,区间内最大脑洞。对于查询l~r最大脑洞可以将l~r分成logn个区间,总复杂度O(nlogn)。#include#include#include#define N 800005using namespace std;int n,m,p,x,y,l,r;int sum[N],L[N],R[N],tg[N

2016-05-18 20:13:47 771

原创 bzoj3575: [Hnoi2014]道路堵塞

一开始看错题啦!某一条边不走的最短路相当于1--沿最短路-->x-->……-->y--沿最短路-->n,于是定义T{l,r},表示从起点到最短路上序号r有一条长度为l的非最短路。然后用堆维护即可。(慎用memset。。)TLE。。。#include#include#include#include#include#define N 100005using namespace st

2016-05-17 20:07:16 1253

原创 bzoj3573: [Hnoi2014]米特运输

看懂了题目就A了一半。。。大意是这样的,给一棵以1为根的树,求最少修改几个点的容量后,使得除根节点外所有节点为父亲容量/父亲的儿子个数。因为1个节点确定,所有节点都确定了,不妨对每个点求出它不修改时根节点的容量,Hash一下就可以了。(貌似自然溢出会WA,可能我写炸了吧)#include#include#include#define ll long long#define N

2016-05-17 07:33:29 694

原创 bzoj3572: [Hnoi2014]世界树

这道题是叫做虚树的东西,可以发现每次的关键点个数较少,每次用O(n)的DP显然TLE。可以将所有关键点及关键点lca间连上虚边,对这O(m)个点DP,链上的点可以分成两段,分别计算贡献即可,细节蛮多,树链剖分比倍增快。#include#include#include#include#define N 300005#define inf 1000000000using namespa

2016-05-16 19:25:24 490

原创 bzoj3571: [Hnoi2014]画框

这道题可以类似最小乘积生成树的最小乘积二分图完美匹配。本题中二分图完美匹配的个数可以达到n^n,将每个匹配看成点(ΣA,ΣB),易得Ans在左下角的凸壳上。使用分治,先求出最左的和最下的点L,R,寻找mid使mid为直线LR下方最靠近原点的点,然后分治L~mid,mid~R,直到L,mid,R共线。至于如何求mid,将边权改变即可(窝还不太懂。。)SPFA比KM慢好多。。#in

2016-05-16 19:19:37 576

原创 bzoj4584: [Apio2016]赛艇

根据题意可想到离散化后dp:dp[i][j][k]表示前i个数在区间j内放k个的方案数,开滚动复杂度O(n^3)。然而被bzoj卡常。。。(约1.8s)优化之后变得更慢了。。看了AC代码,发现可以换种思路:#include#include#include#include#define N 505#define ll long long#define MO 1000000007

2016-05-13 18:28:01 1408

原创 bzoj4520: [Cqoi2016]K远点对

KD-tree裸题切切,人生有什么希望找最远点对只要记录最大值,同样,找k远点对只要维护当前前k大值,每次和第k大比较即可。//听说加const会变快?@lych_cys#include#include#include#include#define ll long long#define N 100005#define inf 1000000000using namesp

2016-05-13 06:56:41 869

原创 bzoj4066: 简单题

这是一道KD-tree裸题,空间20M。KD-tree插入点可能会导致树不平衡,使层数过高TLE,因此可以使用替罪羊树暴力重构的思想,同时由于查询较慢,平衡因子可适当减小,具体见代码。另外还有一种每插入若干点暴力重构全树的方法,但好像有点慢?#include#include#include#define N 200005#define B 0.63using namespace

2016-05-12 19:57:17 587

原创 bzoj1941: [Sdoi2010]Hide and Seek

KD-tree!!!终于开始写KD-tree了。。(太弱了。。)KD-tree支持建树、插入一个点均摊O(logn)(替罪羊树实现)、查询距某点k近点O(sqrt(n))。本题只要建树后对每个点求最近点和最远点即可,O(n sqrt(n)+n logn)。(两个qry占了大部分行数。。)#include#include#include#define inf 1000000000

2016-05-12 15:30:53 783

空空如也

空空如也

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

TA关注的人

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