自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

gjghfd

今日はまた新しい一日でした

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

原创 HDU4507 -- 数位DP

令 f[i][j][k][p]f[i][j][k][p] 表示考虑前 ii 位,数位值之和模 77 的值为 jj ,数值模 77 的值为 kk , 前 ii 位是否取满时的平方和。(a+b)2=a2+2ab+b2(a+b)^2=a^2+2ab+b^2记一下方案数、和、平方和就可以转移了。时间复杂度 O(T∗18∗7∗7∗9)O(T*18*7*7*9) 。代码#include<cstdio>#inc

2017-08-29 21:27:08 220

原创 Codechef Aug2017 #Walks on the binary tree -- 主席树+Hash

传送门每次答案增加的值就是 nn - 之前出现的数与 XX 的 LCPLCP 最大值。 而与 XX 的 LCPLCP 最大的点在 dfsdfs 序上与 XX 的距离最近。而在满二叉树上 XX 在 dfsdfs 上的位置就等于 XX 。 于是可以用 setset 维护所有出现过的点,加入 XX 时找 XX 两边最近的点更新答案。 每个点用主席树+hash维护。代码#include<set>#i

2017-08-29 16:51:53 370

原创 codeforces843C Upgrading Tree -- 构造

传送门题目大意:给你一棵 nn 个点的树,你可以对这个树进行修改,每次修改可以表示成一个三元组 (x,y,y′)(x,y,y'),表示将边 (x,y)(x,y) 删去并增加一条边 (x,y′)(x,y') 。一个修改是合法的当且仅当满足删去边 (x,y)(x,y) 后 xx 所在连通块大小严格大于 yy 所在连通块大小。 要求对原树修改不超过 2n2n 次,使树上每个点对距离的平方和最小。显然每个

2017-08-26 14:46:21 652

原创 codeforces843D Dynamic Shortest Path -- 最短路

先对原图求出每个点到 11 的最短路 did_i,然后对于原权值为 xx 的边 (u,v)(u,v) ,将它的权值改为 du+x−dvd_u+x-d_v 。这样,如果 (u,v)(u,v) 在 11 到 vv 的最短路上,它的边权为 00 。 每次询问时在新图中将对应边权加上后,边权超过 cc 的边就不用考虑了。于是可以直接 O(n)O(n) 求出新图单源最短路并更新答案。 时间复杂度 O(q×

2017-08-25 21:44:04 872

原创 codeforces840C On the Bench -- DP

%%%Vectorxj代码#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#define N 310#define M 1000000007int i,j,k,n,m,p,v[N],l,a[N],x,y,t,f[2][N],s;int c[N][N];

2017-08-22 20:40:18 563

原创 bzoj4977 -- 线段树模拟费用流

神题题解代码#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;#define N 100010struct Node{ int w,f;}g[N<<1],d[N];long long Ans;int i,j,k,n,m,a[N],x,y,h,w[

2017-08-22 18:50:39 953

原创 codeforces840D Destiny -- 可持久化线段树

%%%Vectorxj 对于询问(l,r,k)(l,r,k),令p=l+rkp={l+r\over k}。假如将这个区间排序,那么对于这个区间所有出现次数大于 pp 的数,它一定在 p,2p⋯kpp,2p\cdots kp 出现过。于是只要用主席树求出区间第 p,2p⋯kpp,2p\cdots kp 大,再判断一下出现次数是否大于 pp 就可以了。代码#include <cstdio>#incl

2017-08-20 17:19:38 754 1

原创 codeforces548E Mike and Foam -- 容斥

先对所有数质因数分解。显然相同的质因数可以看成一个。这样一个数最多只有 66 个质因数。 维护 sis_i 表示 ii 当前是多少个数的因数。加入数 xx 时枚举它的所有因数,容斥一下就可以了。 时间复杂度O(26×q)O(2^6\times q)。代码#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#i

2017-08-20 14:43:48 247

原创 bzoj3675 [ APIO2014 ] -- 斜率优化DP

令fi,jf_{i,j}表示前 jj 个数分割 ii 次的答案,sis_i表示前缀和。可以得到DPDP方程: fi,j=max(fi−1,k+sk×(si−sk)),k<jf_{i,j}=max(f_{i-1,k}+s_k\times (s_i-s_k)),k<j 然后考虑斜率优化。 j<kj<k且 jj 比 kk 优的条件是: fi−1,j+sj×(si−sj)>fi−1,k+sk×(si

2017-08-19 22:03:08 272

原创 codeforces838B Diverging Directions -- 树链剖分 + 线段树

令 aia_i 表示从 ii 到根的边的长度。对于每个点维护 distidist_i 表示从根到 ii 的路径, mindistimindist_i 表示 ii 的子树中 distj+ajdist_j+a_j 的最小值。 然后对于询问 (u,v)(u,v) 分类: 如果 uu 是 vv 的祖先,由于权值都是正整数,答案为distv−distudist_v-dist_u。 否则答案为mindis

2017-08-18 21:13:41 540

原创 codeforces838D IndiaHacks 2nd Elimination 2017 #Airplane Arrangements -- 组合数学

先考虑 nn 张椅子排成一个环的情况。那么所有方案都是合法的。 考虑一个椅子空着的方案数。共有(2n)m(2n)^m种方案,每种方案都会有n−mn-m张椅子空着,所以方案数就是(2n)m×(n−1m)(nm)=(2n)m×n−mn(2n)^m\times {{n-1\choose m}\over {n\choose m}}=(2n)^m\times {n-m\over n}。 如果 nn 张椅子

2017-08-17 21:34:55 368 1

原创 Codechef June Challenge 2014 #Sereja and Arcs -- 容斥 + 阈值 + 树状数组

传送门题目大意数轴上有 nn 个点,给你每个点的坐标和颜色。相同颜色的每对点A(x,0),B(y,0)A(x,0),B(y,0)会产生一个直径为ABAB的圆。求有多少对颜色不同的圆相交。容斥。将问题转化为求有多少对颜色不同的圆不相交。 将相同颜色的点用同一个字母表示,那么只有AABBAABB和ABBAABBA是满足条件的。考虑AABBAABB的情况: 从左到右枚举每个点作为右端点。O(n)O(n

2017-08-15 15:27:15 567

原创 SnackDown 2017 Online Elimination Round #Prefix Xor -- 主席树

传送门题目大意:给你 nn 个数,每个数的值是 aia_i ,定义数对 (i,j)(i,j) 是上升的当且仅当 ai≤ai xor ai+1≤ai xor ai+1 xor ai+2≤⋯≤ai xor ai+1 xor ai+2⋯xor aja_i\leq a_i ~\text{xor}~a_{i+1}\leq a_i ~\text{xor}~a_{i+1}~\text{xor}~a_{i+2}

2017-08-01 19:10:01 343

空空如也

空空如也

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

TA关注的人

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