自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

咸鱼

咸鱼

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

原创 LIS反链

链接直线上有n座山峰,第i座的高度为hi。从某座山峰上放飞一架纸飞机,它可以从左往右依次经过一系列高度严格递减的山头。假设五座山峰的高度依次是3,4,3,2,1。从第一座山峰上放飞的纸飞机可以依次经过第一、四、五座山峰,但不能经过第二、三座山峰。对于每座山峰,求出要经过除这座山峰外的每座山峰,至少需要放飞多少纸飞机。(每架纸飞机的起点可以不同)输入描述:第一行包括一个正整数n。第二行包...

2020-01-19 13:46:34 225

原创 CF-E. Messenger Simulator

CF-E. Messenger SimulatorPolycarp is a frequent user of the very popular messenger. He’s chatting with his friends all the time. He has n friends, numbered from 1 to n.Recall that a permutation of s...

2020-01-17 10:10:49 343

原创 虚树

将树压缩成若干个有用的点for(int i=0;i<k;++i){ int f=lca(stk[r],h[i]); while(r&&id[f]<id[stk[r-1]]){ g1.add(stk[r-1],stk[r],get(stk[r],stk[r-1])); --r; } if(f^stk[r])...

2020-01-07 14:21:17 178

原创 cf.D.Domino for Young

D. Domino for YoungYou are given a Young diagram.Given diagram is a histogram with n columns of lengths a1,a2,…,an(a1≥a2≥…≥an≥1).a_1,a_2,…,a_n (a_1≥a_2≥…≥a_n≥1).a1​,a2​,…,an​(a1​≥a2​≥…≥an​≥1).Young...

2019-12-23 13:30:50 369

原创 星球大战

星球大战有一棵树。每次可以攻击树上的某棵子树,然后这棵子树上的每条边有12\frac{1}{2}21​的概率消失。定义 若攻击以x为根的子树,深度ht(x)为x子树剩余点(与x连通)的最大深度。共q次操作,两种: 1 x.新建一个节点,其父节点为x。2 x.询问若攻击以x为根的子树,x子树的期望深度。 q≤5×105q\leq 5\times10^5q≤5×105设dp[i][j]为以i为根的...

2019-12-20 22:20:20 113

原创 Cards

Team Work计算ans=∑r=1nCnrrkans=\sum_{r=1}^nC_n^rr^kans=∑r=1n​Cnr​rk首先,有(1+x)n=∑r=0nCnrxr(1+x)^n=\sum_{r=0}^nC_n^rx^r(1+x)n=∑r=0n​Cnr​xrop1:微分再乘以x.nx(1+x)n−1=∑r=1nCnrrxrnx(1+x)^{n-1}=\sum_{r=1}^nC_n^...

2019-12-20 22:18:49 160

原创 cf-Berry Jam

C. Berry JamKarlsson has recently discovered a huge stock of berry jam jars in the basement of the house. More specifically, there were 2n jars of strawberry and blueberry jam.All the 2n jars are ar...

2019-12-20 22:14:23 215

原创 费用流

#include<bits/stdc++.h>using namespace std;char buf[1<<20],*_=buf,*__=buf;#define gc() (_==__&&(__=(_=buf)+fread(buf,1,1<<20,stdin),_==__)?EOF:*_++)#define TT template&lt...

2019-12-13 17:51:33 169

原创 cf-1257-f-Make Them Similar

cf-1257-f-Make Them Similar给定数组a,f(x)为二进制下1的个数,求ans使得f(a[i]^ans)均相等.ai≤231−1a_i\le 2^{31}-1ai​≤231−1数字非常大,考虑分成两部分,高15位和低15位l1+h1=l2+h2=⋯=ln+hnl_1+h_1=l_2+h_2=\dotsb =l_n+h_nl1​+h1​=l2​+h2​=⋯=ln​+hn...

2019-12-12 15:56:50 169

原创 Tarjan

Tarjan割点low[x]:x能到达的cnt最小的节点(包括x自身节点)对于x节点,存在dfs树上x的子节点y,low[y]>=low[x],即y能到达的最小编号节点是以x为根节点的子树,删除x之后,y与x的父节点不连通(特判根节点)void tarjan(int x){ low[x]=dfn[x]=++tarcnt; int flag=0; for(int...

2019-12-12 14:57:08 113

原创 非旋treap模板

非旋treap模板struct Treap{ int ls[MAXN],rs[MAXN],siz[MAXN],rd[MAXN]; int val[MAXN]; bool flag[MAXN]; int root,cnt,ltr,mtr,rtr; Treap(){cnt=0;srand(996);} int random(){return rand(...

2019-11-27 20:05:15 123

原创 树剖top数组

好像很少有关于top数组性质的博客。for(int i=top[x];fa[i];i=top[fa[i]])可以遍历所有子树中含有x节点的重链链头节点(或叶子节点),由于重链不超过log(n)个,所以这个循环复杂度是O(logN)的。设i是重链链头节点,f是i的父节点,则i是f的轻儿子。所以,如果有操作:对于x节点,他的所有儿子均加上不同的值,且这个值只与儿子节点自身和提供的值有关,那么...

2019-11-22 11:44:44 147

原创 cf 601 E2. Send Boxes to Alice (Hard Version)

Send Boxes to Alice (Hard Version)给定a1,a2,…,ana_1,a_2,\dots,a_na1​,a2​,…,an​,求使ax1=ax2=⋯=axt=k,t=sumka_{x_1}=a_{x_2}=\dots=a_{x_t}=k,t=\frac{sum}{k}ax1​​=ax2​​=⋯=axt​​=k,t=ksum​ 的最小花费,其中,k是sum的因子。显然...

2019-11-20 16:27:27 705 5

原创 dsu on tree 启发式树上合并

解决树上关于子树信息的静态问题,如某节点子树中符合某条件的个数。cf-600E给定一棵树,每个节点有一个颜色,求节点x的子树中出现次数最多的颜色,如果有相同次数的,颜色id相加。考虑暴力,遍历x的每个节点,统计,若只用一个数组,那么两个子节点之间必须要清空数组。优化,对于清空操作,选择x的轻儿子进行清空,重儿子最后遍历,不需要清空,然后将信息合并给x。#include<bits/s...

2019-11-19 14:20:06 91

原创 cf-ronnd-600-F-Cheap Robot

Cheap RobotYou’re given a simple, undirected, connected, weighted graph with n nodes and m edges.Nodes are numbered from 1 to n. There are exactly k centrals (recharge points), which are nodes 1,2,…...

2019-11-18 19:30:03 163

原创 cf Round 600 Antenna Coverage dp

Antenna Coverage给定若n个区间,每次操作可以使一个区间左右拓宽1,求最小操作次数使得区间[1,m]均被覆盖.考虑dp:dp[i]=区间[i,m]均被覆盖的最小花费转移:dp[i]=dp[i+1]dp[i]=dp[i+1]dp[i]=dp[i+1],如果[1,i][1,i][1,i]被原始区间覆盖.否则,p=l−i,dp[i]=min(p+dp[r+p+1]),(l&gt...

2019-11-17 23:07:35 155

原创 平面最近点对 cdq分治

cdq分治可以很好地处理平面点对间具有某种性质的值或数量,最近点对也不例外。参考OI Wiki先对x排序,cdq返回点集内部最近点对的距离记为mindis。考虑如何合并左右区间,对于处于点集A的点a和B的点b,显然∣a.x−b.x∣<=mindis|a.x-b.x|<=mindis∣a.x−b.x∣<=mindis设a,b属于C,找到C后,对于点p,k属于C,显然也要满...

2019-11-15 15:57:28 724

原创 纸牌均分问题

首先,如果有某序列aia_iai​,则∑i=1n∣ai−k∣\sum_{i=1}^n|a_i-k|∑i=1n​∣ai​−k∣取最小值时,k为aia_iai​的中位数。(因为如果是pos,则pos向靠近中位数的位置移动能更小),这个性质也能dp有n个人站成一排,每个人有aia_iai​张纸牌,求最小移动次数使得每个人纸牌数一样,一张纸牌交给旁边的人记为一次移动。如果tot是n的倍数,则有解,设t...

2019-11-12 13:50:23 176

原创 cdq分治(模板)

可求解多维偏序问题三维偏序(陌上花开)有 nn 个元素,第 ii 个元素有 aia_iai​、bib_ibi​ 、cic_ici​ 三个属性,设 f(i)f(i)f(i)表示满足aj≤aia_j \leq a_iaj​≤ai​且 bj≤bib_j \leq b_ibj​≤bi​ 且 cj≤cic_j \leq c_icj​≤ci​的 j 的数量。对于 d∈[0,n)d \in [0, n)...

2019-11-11 17:14:10 205

原创 差分

给定一个长度为 n(n≤105)n(n \leq 10^5 )n(n≤105) 的数列a1,a2,…,an{a_1,a_2,…,a_n}a1​,a2​,…,an​ ,每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一。求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种。先差分,d1=a1,dn+1=−an+1d_1=a...

2019-11-03 19:27:26 589

原创 费解的开关 高斯消元

费解的开关你玩过“拉灯”游戏吗?25盏灯排成一个5x5的方形。每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。我们用数字“1”表示一盏开着的灯,用数字“0”表示关着的灯。下面这种状态1011101101101111000011011在改变了最左上角的灯的状态后将变...

2019-11-03 19:15:07 250

原创 斐波那契性质和排列组合

斐波那契f1+f2+⋯+fn=fn+2−1f_1+f_2+\dots+f_n=f_{n+2}−1f1​+f2​+⋯+fn​=fn+2​−1f12+f22+⋯+fn2=fn⋅fn+1f_1^2+f_2^2+\dots+f_n^2=f_{n}⋅f_{n+1}f12​+f22​+⋯+fn2​=fn​⋅fn+1​f1+f3+f5+⋯+f2n−1=f2nf_1+f_3+f_5+\dots+f_{2n...

2019-11-03 18:58:28 1157

原创 快读

快读char buf[1<<20],*P1=buf,*P2=buf;#define gc() (P1==P2&&(P2=(P1=buf)+fread(buf,1,1<<20,stdin),P1==P2)?EOF:*P1++)#define gc() getchar()#define TT template<class T>inlineT...

2019-11-03 18:53:59 224

原创 主席树

静态主席树#include<bits/stdc++.h>using namespace std;#define mid ((l+r)>>1)const int MAXN=10;int n,m,a[MAXN],b[MAXN],N;//a为原数组,b为离散后的数组,N为离散后的个数int root[MAXN],sum[MAXN<<5],node_num...

2019-11-03 18:48:03 55

原创 splay树(修订版)

伸展树#include<bits/stdc++.h>using namespace std;template<class T> inline bool read(T &x){ x=0;register char c=getchar();register bool f=0; while(!isdigit(c)){if(c==EOF)return ...

2019-11-03 18:46:57 97

原创 树链剖分(边)

树链剖分(边)将边权下放至两端点中深度大的点中,当做点权维护。#include<iostream>#include<algorithm>using namespace std;#define gc getchartemplate<typename T>inline void read(T&x) { int flag=x=0; ...

2019-11-03 18:45:35 121

原创 树剖版lca

树剖版lca树剖自带lca#include<bits/stdc++.h>using namespace std;template<class T>inline bool read(T &x){ x=0;register char c=getchar(); while(!isdigit(c)){if(c==EOF)return false;c=...

2019-11-03 18:44:43 113

原创 树链剖分

树链剖分(点)解决:将两个节点之间的简单路径上的点的权值加上v求两个节点之间的简单路径上的点的权值之和以某一节点为根节点的子树内所有的点的权值加上v求某一节点为根节点的子树内所有的点的权值之和思想:将数划分成若干链,用线段树或者树状数组对这些链进行操作重儿子:对于非叶子节点x,以x的子节点的为根的子树中节点数最多的节点。轻儿子:对于非叶子节点x,除重儿子外其余子节点都是轻儿子...

2019-11-03 18:43:37 111

原创 kruskal重构树

解决图中:任意两节点(可以不连通)找到x<->y路径中边权的最小值最大,反之亦然(也可以用树剖写)给定起点,经过的路径边权有某限制下的(如小于等于某值)点权第k小(大),需要主席树。对于1:看着像二分。。对原图边权排序,生成树是直接并查集merge x,y两个节点,重构树的话会新生成一个节点,并把原来的x与y的边断开,用边权当做新节点的点权。//ff[]是并查集for...

2019-11-01 16:03:36 88

原创 单调队列dp

P3084 [USACO13OPEN]照片Photo农夫约翰决定给站在一条线上的N(1 <= N <= 200,000)头奶牛制作一张全家福照片,N头奶牛编号1到N。于是约翰拍摄了M(1 <= M <= 100,000)张照片,每张照片都覆盖了连续一段奶牛:第i张照片中包含了编号a_i 到 b_i的奶牛。但是这些照片不一定把每一只奶牛都拍了进去。在拍完照片后,约翰发现...

2019-10-24 22:27:38 161

原创 波动序列 dp

P2467 [SDOI2010]地精部落题目描述传说很久以前,大地上居住着一种神秘的生物:地精。地精喜欢住在连绵不绝的山脉中。具体地说,一座长度为N的山脉H可分为从左到右的N段,每段有一个独一无二的高度Hi,其中Hi是1到N之间的正整数。如果一段山脉比所有与它相邻的山脉都高,则这段山脉是一个山峰。位于边缘的山脉只有一段相邻的山脉,其他都有两段(即左边和右边)。类似地,如果一段山脉比所有它...

2019-10-24 14:35:59 165

原创 概率dp Lights inside 3D Grid

Lights inside 3D Grid You are given a 3D grid, which has dimensions X, Y and Z. Each of the X x Y x Z cells contains a light. Initially all lights are off. You will have K turns. In each of the K tur...

2019-10-22 18:48:28 116

原创 概率dp Discovering Gold

Discovering GoldYou are in a cave, a long cave! The cave can be represented by a 1 x N grid. Each cell of the cave can contain any amount of gold.Initially you are in position 1. Now each turn you t...

2019-10-22 15:33:26 74

原创 期望dp A Dangerous Maze

A Dangerous MazeYou are in a maze; seeing n doors in front of you in beginning. You can choose any door you like. The probability for choosing a door is equal for all doors.If you choose the ith doo...

2019-10-22 14:21:43 72

原创 区间dp String painter

String painterProblem DescriptionThere are two strings A and B with equal length. Both strings are made up of lower case letters. Now you have a powerful string painter. With the help of the painter...

2019-10-22 12:52:15 103

原创 多重背包的二进制优化

P4544 [USACO10NOV]购买饲料Buying Feed约翰开车来到镇上,他要带KK吨饲料回家。运送饲料是需要花钱的,如果他的车上有XX吨饲料,每公里就要花费X2X^2X2 元,开车D公里就需要D×X2D\times X^2D×X2 元。约翰可以从N家商店购买饲料,所有商店都在一个坐标轴上,第ii家店的位置是XiX_iXi​​ ,饲料的售价为每吨CiC_iCi​ 元,库存为FiF_...

2019-10-19 23:43:43 146

原创 斜率dp(模板)

HUD-3507Zero has an old printer that doesn’t work well sometimes. As it is antique, he still like to use it to print articles. But it is too old to work for a long time and it will certainly wear and...

2019-10-18 11:53:53 103

原创 topo序 最短路 线段树

Delete题目描述给定一张n个点,m条边的带权有向无环图,同时给定起点S和终点T,一共有q个询问,每次询问删掉某个点和所有与它相连的边之后S到T的最短路,询问之间互相独立(即删除操作在询问结束之后会立即撤销),如果删了那个点后不存在S到T的最短路,则输出-1。输入描述:第一行四个正整数表示n,m,S,T,意义如题所述;接下来m行每行三个正整数x[i],y[i],z[i],表示有一条x[...

2019-10-11 14:22:22 216

原创 POJ 3249 DAG图最短路 toposort+dp

Test for JobMr.Dog was fired by his company. In order to support his family, he must find a new job as soon as possible. Nowadays, It’s hard to have a job, since there are swelling numbers of the une...

2019-10-10 15:43:46 194

原创 点集直径

MMSet2给定一棵n个节点的树,点编号为1…n。Q次询问,每次询问给定一个点集S,令,f(u)=max⁡v∈Sdist(u,v)f(u)=\max_{v\in S}dist(u,v)f(u)=maxv∈S​dist(u,v)你需要求出min⁡u=1…nf(u)\min_{u=1\dots n}f(u)minu=1…n​f(u)其中dist(u,v)表示树上路径(u,v)的边数。输入描述...

2019-10-08 22:24:10 756

空空如也

空空如也

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

TA关注的人

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