自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

雯舞

Love three things int he world -- Manchery

  • 博客(978)
  • 资源 (2)
  • 收藏
  • 关注

原创 [莫比乌斯反演] CCPC 2016 Hangzhou J & HDU 5942 Just a Math Problem

记f(k)f(k)表示kk的素因子个数,g(k)=2f(k)g(k)=2^{f(k)}。 求g(1)+…+g(n)g(1)+…+g(n)。 n≤1012n\leq 10^{12}g(k)g(k)的组合意义为满足(i,j)=1(i,j)=1且ij=kij=k的对数。 所以变成求(i,j)=1(i,j)=1且ij≤nij\leq n的对数。 ∑ij≤n[(i,j)=1]===∑ij≤n∑d|i

2017-03-30 07:59:57 1178

原创 [DP] CCPC 2016 Hangzhou I & HDU 5941 Inequality

有n−1n-1个限制,为xi∗xi+1≥aix_i*x_{i+1}\geq a_i,这里要求xix_i都是正实数。 要求∑xi\sum x_i n≤2000n\leq2000 解肯定是分成若干不短于2的段 每段内部取等号且和最小 那么我们用fi,jf_{i,j} 表示[i,j][i,j]是最后一段取等号的 如果[i,j][i,j]和[i+1,k][i+1,k]取等号时的xixi和xi+1x

2017-03-30 07:49:33 916

原创 [快速幂 NTT + 最短路] ICPC 2016 China Final I. Cherry Pick

你有mm种面值的硬币,分别为c1,…,cmc_1,…,c_m,每种有无限张。 你去摘nn个樱桃,每个樱桃都有pp的概率摘下来。 你要要用你的硬币把你摘了的樱桃给买下来,每个樱桃需要11元钱,但是不能找钱。 问最好的情况下你期望要多花多少钱。 答案对10^9+7取模。 n<=1e9,m<=100,ci<=1e4n<=1e9, m<=100, ci<=1e4, 且若i≠ji≠j,有ci∗cj<

2017-03-29 08:18:51 716

原创 [任意模数NTT 三模数NTT] COGS 2294 [HZOI 2015] 释迦

膜拜大佬可能不敢食用myy的论文啊 只会无脑三模数NTT 拆系数FFT什么的好大啊 于是我们找三个费马质数 使得他们的乘积超过 nP2nP^2 然后就可以用CRT合并了 但是正常的合并需要写高精 实际上我们可以tricky点#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>using names

2017-03-29 08:13:41 2801

原创 [费用流] ICPC 2016 China Final J. Mr.Panda and TubeMaster

传送门dls实在是太强啦 可能是我姿势不够高 自己瞎弄弄出个 带下界带正环最大费用循环流 先加超级源汇SS和TT 去下界 转成 带正环最大费用最大流 然后再加超超级源汇S和T 跑一边最大费用最大流 消掉正环 正环没了后 再在SS和TT上跑最大费用最大流 嗯 费用流练习题#include<cstdio>#include<cstdlib>#include<algorithm>using

2017-03-29 08:04:11 1316

原创 [离散对数 FFT FastIO] ICPC 2016 Shenyang K & HDU 5958 New Signal Decomposition

特判0 然后将所有下标取对数 那么就是 bk′=∑ah′∗ch′+k′b_{k'}=\sum a_{h'}*c_{h'+k'} 使用FFT解决本来好好的一道题 卡常数+卡空间+卡精度?!#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>using namespace std;typedef doubl

2017-03-29 07:52:48 871 2

原创 [搜索] ICPC 2016 Qingdao J & HDU 5991 Cliques

给你一个图,你可以执行删边或者加边这样的操作,然后将这个图变成若干个团,问最小的步数。 如果答案超过10,输出-1。dls orzz 想偷懒用set 结果T了#include<cstdio>#include<cstdlib>#include<algorithm>#include<set>#define read(x) scanf("%d",&(x))using namespace st

2017-03-29 07:47:42 887

原创 [环套树 bfs序] ICPC 2016 Shenyang J & HDU5957 Query on a graph

按层建线段树,或者说是bfs序。 然后修改的一定是不超过5层里面的连续的段,可以在线段树上直接修改。 对于环+树,把环抠出来之后按树的方法做。代码丑#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;inline char nc(){ static c

2017-03-29 07:44:35 678

原创 [DP] Codeforces 150D #107 (Div. 1) D. Mission Impassable

题目大意 删长度为xx的回文串 会有得分axa_x 删完拼在一起 问最大得分 关键是设计状态 fi,j,kf_{i,j,k} 表示把[i,j][i,j]这段 删除掉还剩长为kk的回文串的最大代价 顺便gi,jg_{i,j}表示删完的代价 然后转移就不难看懂了#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstr

2017-03-29 07:40:50 476

原创 [我可能是个ZZ啊] UOJ #291 【ZJOI2017】树状数组

再次怀疑自己的智商 这个东西 不难发现求成了后缀和 当l>1l >1 时就是询问al−1=ara_{l-1}=a_r 的概率 当l=1l=1 特判下 然后就是一个修改会对几个矩阵范围内的询问点造成影响 具体就是两个概率pp和qq 变成p∗(1−q)+q∗(1−p)p*(1-q)+q*(1-p) 然后这个东西 分治啊 树套树啊 都行吧 我懒就随手打了个KDTREE 竟然跑过了

2017-03-27 09:11:00 858

原创 [我可能是个SB啊] UOJ #290 【ZJOI2017】仙人掌

这好像不难啊 考场上智商掉线了吧 可能是脑袋被吃掉了吧先说正经的 这个题 要是不是棵仙人掌 那么就无解 要是是棵树 直接树形DP 那仙人掌呢 把所有环上的边拆掉 对剩下的森林中的每棵树DP 然后乘法原理就好了 然后 做完了…还是不知道考场上在干什么我可能忍不住分享下自己的悲惨经历啊 考场上想出了树形DP 然后就没有然后了? 尼玛仙人掌这么好想 就被我弃了?! 行吧 考挂不如狗 下午切这

2017-03-24 20:15:54 844

原创 [TravelNotes] ZJOI 2017 DAY1 滚粗记

考一场少一场啊03/20 早上水水水 水过了大森林 然后就上车了 上高中以来第一次坐大巴去比赛啊 都怪一坨初三初二的 做了四个小时的车从qz赶到wz 一路上意识模糊 我似乎想过 要是一直这么坐车坐坐坐停不下来多好啊 晚上教练要求去学校吃饭熟悉环境啊 不是很想去 然后带的一群初三高一一起赖在寝室里 据说车上人都在等我们几个啊 然后被教练裱了 虽然确实是我不对 但我也很绝望啊 心情再次低到谷底

2017-03-23 20:42:29 1244

原创 [线段树 均摊复杂度] BZOJ 2130 魔塔

不会做QAQ 还是转身向Claris的题解吧#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,1

2017-03-21 23:49:58 681

原创 [贪心 模拟 + 二分答案 DP] BZOJ 1181 [CROATIAN2009]IZBROI选举

听说这是种有理有据的席位分配方法? 求最大值 可以直接把剩下的票全给他 模拟一发就好了 求最小值 就需要二分答案加DP检验了 我们用fi,jf_{i,j}表示不包括当前党派的前ii个党派总共占据jj个席位最少还要多少选票 只要检验 f20,m−mid≤V−totf_{20,m-mid} \leq V-tot 就行了 2020是因为最多有2020个党派有席位 因为5%5\%的限制#inclu

2017-03-21 23:47:44 575

原创 [DP] BZOJ 4574 [Zjoi2016]线段树

实在是不会食用 题解戳这里#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;#define read(x) scanf("%d",&(x))const int N=405;const int P=1e9+7;int n,q,a[N],rnk[N],b[N

2017-03-21 23:41:57 569

原创 [分治 最短路] BZOJ 4456 [Zjoi2016]旅行者

所有询问离线 把平面分成两块 如果询问两点在同一边 可以不穿过中线 也可以穿过 如果询问两点在不同边 必须穿过 那么我们就可以用中线上所有点更新下 然后递归 卡常数?#include<cstdio>#include<cstdlib>#include<algorithm>#include<vector>#include<queue>using namespace std;ty

2017-03-21 23:40:21 546

原创 [LCT || splay维护括号序列] BZOJ 4573 [Zjoi2016]大森林

题解爸爸戳这里splay维护括号序实在不敢尝试 建虚点LCT 还是很资瓷的哇 正如dls所说的 小清新数据结构 注意的是求两点距离 不能直接拉出那条链 而是要求LCA 然后我发现我不会求LCA了#include<cstdio>#include<cstdlib>#include<algorithm>#include<stack>using namespace std;inline ch

2017-03-21 23:37:50 717

原创 [压位 手写bitset] BZOJ 2628 JZPSTR

Hillan说 怎么暴力怎么写 然后我们就每个数码用个bitset存一下就好了 因为bitset太难操作 自己手写一个 详见代码#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef unsigned long long ull;inline char nc(){ static

2017-03-19 20:27:26 2075

原创 [第二类斯特林数 组合计数] 省选模拟赛 2 B. 两弹一星 missile

题目大意 一张无向图的权值定义为 xkx^k,其中 xx 是图中结构为树的连通块个数。给定 nn, kk, 求出所有 nn 个点带标号的的简单无向图的权值和,对 998244353998244353 取模。令 xix_i 表示树联通块 i 是否存在 , 图的权值为 (∑xi)m(\sum x_i)^m。对于某 kk 个联通块,如果同时出现,那么贡献为 S(m,k)∗k!S(m, k) * k!

2017-03-18 21:01:59 1074

原创 [大力容斥] 省选模拟赛 4 B. 买买买 buy

题目大意 n 种物品,价格 ci 元, k 个人每人有m元 每人会购买若干种物品,可以为空,每种最多一个,总价格不能超过m 总共有多少种不同的购买方案使得每种物品至少被购买了两次大力容斥一波 我们先枚举哪些是次数小于2的 然后再枚举子集表示哪些是买了一个的 然后把这些个分给某些人 就是个集合的拆分 复杂度是bell数 卡卡常 剪剪枝 就A了…#include<cstdio>#

2017-03-18 20:54:55 444

原创 [Boruvka算法 曼哈顿距离最大生成树] 省选模拟赛 4 C. 树树树 mst

题目大意 求曼哈顿距离最大生成树 n≤100000n\leq 100000Boruvka算法是什么呢 也就是说 我们只要每次求一个连通块连出去的最远的边 把这些边都加入 只要这样 O(logn)O(\log n)就能得到一棵最大生成树每次求两个连通块之间最大边的时候,就是求 |xi−xj|+|yi−yj||x_i − x_j| + |y_i − y_j| 的最大值,分情况用set维护即可。但是神

2017-03-18 20:49:12 3060 2

原创 [杂题] Codeforces 407B #239 (Div. 1) B. Long Path

我们可以发现当我们走到第一次ii时 ii之前所有格子其实都是偶数遍 就不难得出fi+1=fi+1+fi−fpi+1f_{i+1}=f_i+1+f_i-f_{p_i}+1 #include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;const int P=1e9+7

2017-03-18 20:38:17 580

原创 [DP] Codeforces 687C #360 (Div. 1) C. The Values You Can Make

其实是个水题 自己竟然想半天 Let dpi, j, kdp_{i, j, k} be true if and only if there exists a subset of the first i coins with sum j, that has a subset with sum k. So dpi, j, kdp_{i, j, k} is equal to dpi − 1, j

2017-03-18 20:34:36 239

原创 [DP] Tsin A1315 积木

#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,1

2017-03-18 20:30:54 346

原创 [DP] BZOJ 3810 [Coci2015]Stanovi

首先有个结论就是 如果每个矩形都要挨着边界 那么必然可以把整块切成两部分 然后无脑DP就好了 就是卡卡常 后四维分别表示四边是不是邻着边界#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>using namespace std;typedef long long ll;const int N=30

2017-03-18 20:15:28 529

原创 [杂题 模拟] BZOJ 1182 [Croatian2009]PLAHTE

直接把所有矩形对应的加速度累加就好了#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=

2017-03-18 20:13:38 382

原创 [类欧几里得算法 线段树] BZOJ 1938 [CROATIAN2010] ALADIN

直接在线段树上区间覆盖咯 怎么求和? ∑x=lr(A∗x) mod B=∑x=lrA∗x−B∗∑x=lr⌊A∗xB⌋\sum_{x=l}^r (A*x)\ mod\ B=\sum_{x=l}^r A*x-B*\sum_{x=l}^r\lfloor {A*x \over B}\rfloor后半部分直接用类欧求就好了 类似 [类欧几里得算法 数论] BZOJ 2987 Earthquake 但是更

2017-03-18 20:12:17 1292

原创 [DP] BZOJ 1939 [Croatian2010] Zuma

理性愉悦终于完结了 接下来不能再颓了 先把做的题补一下题意 就是祖玛~ 还是直接上官方题解吧 对于这种状态设计玄妙的DP真是一窍不通啊 #include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>using namespace std;const int N=105;int f[N][N][5];int n,

2017-03-18 20:07:26 763 3

原创 [构造 数学推导] HDU 5847 Different Sums

一道可怕的构造题 题解及推导#include<cstdio>#include<cstdlib>#include<algorithm>const int maxn=10000;const int N=2005;int vst[maxn+5]={1,1,0}; int s[N];int main(){ int Q,n; freopen("t.in","r",stdin); fre

2017-03-17 21:02:34 462

原创 [最短路 主席树 Hash] Codeforces 464E #265 (Div. 1) E. The Classic Problem

很棒的数据结构练习题 因为边权太大了 我们不能直接储存 我们用主席树! 比较直接从高位到低位找第一个不同的位 可以Hash下 每次加法 我们找到这一位之后第一个0 那么0变为1 0之前一连串1都变成0 这里有个小trick可以不用打标记 我们先建一棵全0的线段树 清0直接找到对应节点接上去就好了#include<cstdio>#include<cstdlib>#include<algo

2017-03-17 20:53:14 837

原创 [几何 two-pointers] BZOJ 1278 向量vector

有一个结论就是组成答案的向量一定都在某一直线的一侧 证明:以答案向量作一个圆 这条直线就是过终点的切线#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>using namespace std;typedef long long ld;struct PP{ ld x,y; double ang; P

2017-03-17 20:43:05 801

原创 [矩阵 点分治] BZOJ 4623 Styx

首先我们可以发现g=(x∗ϕ)∗1=(ϕ∗1)∗x=x∗xg=(x*\phi)*1=(\phi*1)*x=x*x 所以 g(n)=n∗d0(n)g(n)=n*d_0(n) 其中 d0(n)d_0(n) 表示nn的约数个数 然后就是树上的问题了 我们知道叉乘不满足结合律 打完之后才知道 汗 但是满足反交换律 然后我们就可以把叉乘表示成矩阵的形式 这是有结合律的 然后就是卡常历程 最后几乎就是照

2017-03-17 20:37:13 438

原创 [几何 模拟退火 || 随机增量法] Codeforces 442E #253 (Div. 1) E. Gena and Second Distance

怎么都在理性愉悦啊 总算做到一道有点思路的题了官方题解 题解里说的是什么呢 我们先二分答案AnsAns 然后我们考虑AnsAns合法的条件是存在一个圆OO 他只包含其中一个特殊点 我们肯定可以挪动这个圆 使得有至少一个点在边界上 枚举点pp在边界上 那么圆心OO就在以pp为圆心的圆CC上 圆心OO合法的条件是不存在其他点到他的距离 ≤Ans\leq Ans 实际上就是C的圆周上的不被任

2017-03-14 11:20:08 1353

原创 [矩阵乘法转图论 强连通] Codeforces 403C #236 (Div. 1) C. Strictly Positive Matrix

考虑矩阵乘法在图论下的意义 Aki,j>0A^k_{i,j}>0意味着ii到jj存在长度为kk的路径 我们考虑两两之间都有路径 那么必定是一整个强连通分量 这是必要性 因为至少有子环 当kk足够大时 肯定能够成立 这是充分性#include<cstdio>#include<cstdlib>#include<algorithm>#define read(x) scanf("%d",&(x

2017-03-14 10:58:54 599

原创 [DP] Codeforces 403D #236 (Div. 1) D. Beautiful Pairs of Numbers

考虑dp 令f_{i,j} 表示i个长度不同区间总长为j的方案数 转移有区间全部长度加1 f_{i,j+i}区间全部长度加1再加一个长度为1的区间 f_{i+1,j+i+1}预处理完之后就可以乘个组合数搞一搞了 复杂度O(n2n√)O(n^2\sqrt n)#include<cstdio>#include<cstdlib>#include<algorithm>using namesp

2017-03-14 10:55:03 559

原创 [思路题] Codeforces 354C #206 (Div. 1) C. Vasya and Beautiful Arrays

枚举gcd为gg 然后再枚举gg的所有倍数g∗ig*i 统计下 在 [g∗i,g∗i+K][g*i,g*i+K]范围内共有几个数 总数为nn即合法#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*

2017-03-14 10:50:55 415

原创 [Hash] Codeforces 452F MemSQL Start[c]UP 2.0 - Round 1 F. Permutation

从左往右扫 对于当前的某个aia_i 我们只判断ai+ka_i+k和ai−ka_i-k是不是都出现过或都没出现过 要是只有一个出现 那么肯定另一个在后面 不合法 对于出现情况我们hash下 可以用线段树或树状数组维护 为什么我这么长#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typede

2017-03-14 10:45:16 696

原创 [思路题] Codeforces 377A #222 (Div. 1) A. Maze

直接dfs出n-K大小的生成树#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==p2&&(p2=(p1=buf)+fread(buf,1,100000,s

2017-03-14 10:42:09 269

原创 [几何] BZOJ 1132 [POI2008]Tro

裸的做是 O(n3)O(n^3) 按极角排序后 用分配律 就可以 O(n2logn)O(n^2 \log n)#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const int N=3005;struct PP{ in

2017-03-13 13:55:52 306

原创 [树状数组套权值线段树 || 分块] BZOJ 2120 数颜色 & BZOJ 2453 维护队列

这个么 直接询问 [l,r][l,r]中 pre<lpre<l 的数就好了#include<cstdio>#include<cstdlib>#include<algorithm>#include<set>using namespace std;inline char nc(){ static char buf[100000],*p1=buf,*p2=buf; return p1==

2017-03-13 13:54:01 391

空空如也

空空如也

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

TA关注的人

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