自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yhf_2015

Holle World.

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

原创 【BZOJ 3711】[PA2014] Druzyny

题目:Description 体育课上,nn个小朋友排成一行(从11到nn编号),老师想把他们分成若干组,每一组都包含编号连续的一段小朋友,每个小朋友属于且仅属于一个组。 第ii个小朋友希望它所在的组的人数不多于d[i]d[i],不少于c[i]c[i],否则他就会不满意。 在所有小朋友都满意的前提下,求可以分成的组的数目的最大值,以及有多少种分组方案能达到最大值。

2019-07-25 12:44:18 239

原创 【BZOJ 1926】[Sdoi2010]粟粟的书架

题目来源:BZOJ 1926思路:考虑分成两个部分做,R=1是可以考虑用主席树维护,R,C是200的时候考虑用三维前缀和暴力。 具体的,主席树的做法与区间求第K个数类似,当时维护的权值出现的次数,现在维护的是二元组(数字出现的次数,所有数字之和);暴力的做法是预处理f[i][j][k]f[i][j][k]表示前i行,前j列,权值小于k的元素和,g[i][j][k]g[i][j][k]

2019-07-25 12:40:55 147

原创 【BZOJ 3343】教主的魔法

题目来源:BZOJ 3343思路:代码:

2019-07-25 12:37:36 158

原创 个人网站地址,欢迎访问,交流。

yhf2000.cn

2019-03-26 19:10:24 256

原创 【学习】线段树的动态开点

就是用哪里开哪里,每次访问之前看看是否为空,为空就新建一个节点。 代码量小,非常好用。题目来源:BZOJ 1012代码:#include #include #define mid ((l+r)>>1)typedef long long ll;const int maxn = 200010;struct Tree{ ll mx; Tree* ch[2]

2019-03-23 23:42:23 857

原创 【学习】线段树和并

(摘自 黄嘉泰 的课件)合并:由线段树的定义我们不难写出下面的过程,来合并两棵代表范围相同的线段树merge(a,b): 如果a,b中有一个不含任何元素,就返回另一个 如果a,b都是叶子,返回merge_leaf(a,b) 返回merge(a->l,b->l)与merge(a->r,b->r)连接成的树由于a,b两棵树结构相同,上面的过程的正确性是显然的

2019-03-23 23:41:48 148

原创 网络流学习笔记

图论的证明太复杂了,就只说一下算法流程理解一下好了。一. 相关定义容量网络:设G(V,E)G(V,E)G(V,E),是一个有向网络,在VVV中指定了一个顶点,称为源点(记为VsV_sVs​),以及另一个顶点,称为汇点(记为VtV_tVt​);对于每一条弧(u,v)(u,v)(u,v)属于EEE,对应有一个权值c(u,v)>0c(u,v)>0c(u,v)&gt...

2018-11-24 18:45:16 276

原创 快速傅里叶变换与快速数论变换(FFT&NTT)学习笔记

快速傅里叶变换与快速数论变换(FFT&NTT)学习笔记一.前置知识1.复数(1)定义式我们定义i2=−1i^2=-1i2=−1,a∈R,b∈Ra\in \R,b\in \Ra∈R,b∈R,则复数zzz可表示为:z=a+biz=a+biz=a+bi(2)运算法则设存在两个复数z1=a1+b1i,z2=a2+b2iz_1=a_1+b_1i,z_2=a_2+b_2iz1​=a1​+b...

2018-11-24 16:51:49 727

原创 【学习】 区间消除类dp

经典的就是poj 1390 Blocks。 这一类的问题总结起来就是可以消除掉一段区间,之后原来的区间的两边会合起来,产生一种新的结果。

2017-04-28 21:50:38 361

原创 【BZOJ 4034】 [HAOI2015]树上操作

思路:考虑维护深度,那么子树加的时候相当于加一个与深度相关的等差数列,所以我们每个节点记录一个二元组(a,b)(a,b),表示a×dep+ba\times dep+b,这样每次修改的系数就是相同的a,ba,b了。 总的时间复杂度是:O(qlogn)O(q\log n)代码:#include #include #include #include using namespace

2017-04-26 17:09:30 379

原创 【BZOJ 3589】 动态树

思路维护点到跟的路径的权值和,记录二元组(a,b)(a,b)来处理子树加的情况,多条路径的信息合并时,把点按照dfsdfs序排序,每次计算答案的时候只需要减去与上一个点的LCALCA即可。 时间复杂度:O(k×qlogn)O(k\times q \log n)代码

2017-04-26 17:07:07 396

原创 NOIP专题复习——专题八:数论基础

拓展欧几里得定理:对于不完全为 0 的非负整数 a,ba,b,gcd(a,b)gcd(a,b)表示a,ba,b的最大公约数,必然存在整数对x,yx,y,使得gcd(a,b)=ax+bygcd(a,b)=ax+by。证明:不妨设a>b,A>Ba>b,A>B 因为ax+by=gcd(a,b)ax+by=gcd(a,b),gcd(a,b)=gcd(b,a%b)gcd(a,b)=

2017-04-26 08:34:07 1311

原创 【BZOJ 3932】[CQOI2015]任务查询系统

题目来源:BZOJ 3932思路:类似于在区间上标记线段的操作,把所有的区间变成两个点,边操作边进行前缀和就好了,需要用用主席树维护的信息有权值的出现次数,权值的和。过不了。代码:#include #include #include #define mid ((l+r)>>1)using namespace std;const int maxn = 100010;

2017-04-26 08:32:38 269

原创 【CF 86D】Powerful array

题目来源:Codeforces 86D翻译:描述给出一个正整数序列 a1, a2, ..., ana_1, a_2, ..., a_n。 我们考虑它的子序列 al, al+1..., ara_l, a_{l+1}..., a_r,其中 1≤l≤r≤n1≤l≤r≤n。KsK_s表示数字ss在序列中出现的次数。我们把一个序列的权值记作:∑K2s∗s\sum K_s^2*s其中,s为序列中含

2017-04-26 08:28:19 393

原创 【学习】树链剖分

学习资料:starszys的博客 树链剖分以下为学习笔记,部分摘自starszys的博客。解决的问题:把对树的操作转换到序列上,以便于用数据结构来维护。基本概念:树链:就是树上的路径。剖分,就是把路径分类为重链和轻链。重儿子:siz[u]为v的子节点中siz值最大的,那么u就是v的重儿子。轻儿子:v的其它子节点。重边:点v与其重儿子的连边。轻边:点v与其轻儿子的

2017-04-26 08:24:52 297

原创 【BZOJ 1010】玩具装箱

思路:设f[i]f[i]表示11到ii号物品的最小代价,s[i]s[i]为c[i]c[i]的前缀和。 状态转移方程:f[i]=min{f[j]+(s[i]−s[j]+i−j+1−L)2}f[i]=min\{f[j]+(s[i]-s[j]+i-j+1-L)^2\} 考虑对方程进行优化。 令t[i]=s[i]+it[i]=s[i]+i,则f[i]=min{f[j]+(t[i]−t[j]+1−

2017-04-26 08:23:53 256

原创 【BZOJ 2243】[SDOI2011]染色

题目来源:BZOJ 2243思路:

2017-04-26 08:23:03 231

原创 【BZOJ 3052】糖果公园

题目来源:UOJ #58思路:树上莫队。代码:

2017-04-26 08:21:38 320

原创 【BZOJ 1036】 [ZJOI2008]树的统计

题目来源:BZOJ 1036思路:练习树链剖分的例题,注意修改操作,所给的信息是树上的点的编号,不是线段树里的编号。代码:#include #include #include #define mid ((l+r)>>1)#define lch (now#define rch ((nowconst int maxn = 30010;const int inf = 2

2017-04-26 08:20:31 228

原创 【BZOJ 2038】小Z的袜子

题目来源:BZOJ 2038思路:莫队算法。代码:

2017-04-26 08:19:37 242

原创 【BZOJ 2733】 [HNOI2012]永无乡

思路并查集+线段树合并 时间复杂度O(nlog2n+qlogn)O(n\log^2n+q\log n)代码#include #include #include #define mid ((l+r)>>1)using namespace std;const int maxn = 100010;struct node{ int val; node *ch[

2017-04-26 08:15:52 236

原创 【BZOJ 3527】 [Zjoi2014]力

思路:我们把所有的值从0开始读入。 题目要求的式子是: Ei=∑j=0i−1pj(i−j)2−∑j=i+1n−1pj(j−i)2E_i=\sum_{j=0}^{i-1}\frac{p_j}{(i-j)^2}-\sum_{j=i+1}^{n-1}\frac{p_j}{(j-i)^2}我们令f(x)=pxf(x)=p_x,g(x)=1i2g(x)=\frac{1}{i^2},然后等式中右边

2017-04-25 17:44:05 261

原创 【BZOJ 2194】 快速傅立叶之二

思路:这个题引入了卷积的知识,下面的式子是一种常用的卷积: F(x)=f∗g=∑i=0xf(i)g(x−i)F(x)=f*g=\sum_{i=0}^{x}f(i)g(x-i)形象的理解: 如果00与nn的对应位相乘,所得到的项的位置坐标和相等,这就等价于多项式当中的一个xx的幂,累加起来的是xx的系数。 那么就模拟多项式的过程,如果RR是FFT\text{FFT}的答案数组,那F

2017-04-25 16:42:45 292

原创 【BZOJ 2179】 FFT快速傅立叶

思路:FFT\text{FFT}的模板题,也是重要的用途之一,那就是O(nlogn)O(n\log n)的高精度乘法。 可以吧一个十进制数写成一个高精度的形式: x=∑i=0lenai×10ix=\sum_{i=0}^{len}a_i\times 10^i所以可以直接用系数做FFT\text{FFT}。代码:#include #include #include #in

2017-04-25 15:50:57 208

原创 【学习】快速傅里叶变化(FFT)

知识点一下内容来自于goodqt的课件\text{一下内容来自于goodqt的课件}复数形如 a+bia + bi,其中 a∈Ra∈R, b∈Rb ∈ R, i2=−1i^2 = −1 的数称为复数,记作z=a+bi∈Cz = a + bi ∈ C。 (a+bi)+(c+di)=(a+c)+(b+d)i(a + bi) + (c + di) = (a + c) + (b +

2017-04-24 19:18:57 390

原创 【BNUOJ】Disdain Chain

第十五届北京师范大学程序设计竞赛决赛D. Disdain ChainBNU ACM校队现在有n名队员,对于任意两名队员i和j,要么i鄙视j,要么j鄙视i,需要注意的是鄙视关系并不满足传递性,即使i鄙视j、j鄙视k,也并不意味着一定有i鄙视k。小Q同学认为,如果有t名不同的队员满足a1a_1鄙视a2,a2a_2,a_2鄙视a3,...,at−1a_3,...,a_{t-1}鄙视ata_t,那么这就是一

2017-04-22 19:48:14 670 2

原创 【BNUOJ】Captcha Cracker

第十五届北京师范大学程序设计竞赛决赛C. Captcha Crackerwww.02469.com(本网页纯属虚构,如有雷同,纯属巧合),是一个资源丰富的教学资源网站,好学的SK同学经常访问这个网站。通常来说,网站为了安全考虑,登录的时候都需要用户输入验证码,这就让SK同学非常不爽了。SK同学希望你能帮他写一个程序来自动识别验证码的内容,验证码由小写字母和阿拉伯数字组成,你需要识别出其中所有的0,2

2017-04-22 19:32:29 428

原创 【BNUOJ】Borrow Classroom

第十五届北京师范大学程序设计竞赛决赛B. Borrow Classroom每年的BNU校赛都会有两次赛前培训,为此就需要去借教室,由于SK同学忙于出题,这个事情就由小Q同学来跑腿。SK同学准备从宿舍出发,把借教室的单子交给小Q同学让他拿去教务处盖章,但是何老师突然发现SK同学好像借错教室了,想抢在借教室的单子被送到教务处之前拦截下来。现在把校园抽象成一棵n个节点的树,每条边的长度都是一个单位长度,从

2017-04-22 19:28:39 542

原创 【BNUOJ】Another Server

...

2017-04-22 19:06:02 431

原创 【BZOJ 2325】[ZJOI2011]道馆之战

思路:代码:#include #include #include #include using namespace std;const int maxn = 30010;int n, m;int head[maxn], to[maxn1], nxt[maxn1], cnt;int top[maxn], dep[maxn], son[maxn], sz[maxn],

2017-04-20 08:17:34 184

原创 【BZOJ 1009】GT考试

思路动态规划我们可以先考虑当nn的范围较小时的做法,设f[i][j]f[i][j]表示现在处理到第ii位,与不吉利数字已经成功匹配jj位的方案数。 很显然的是,需要枚举ii位出现的数字是哪一个,枚举完数字以后,如果与不幸运数字匹配成功,那么匹配位数+1+1,否则我们就需要知道失配之后的匹配位数,即需要用KMP算法预处理失配位。通过以上的处理可以得到trans[i][j]trans[i

2017-04-15 14:19:13 287

原创 【BZOJ 3295】[Cqoi2011]动态逆序对

思路:考虑到倒着插入,原问题就变成了一个三维偏序问题,我们首先对插入时间tt进行排序,然后对tt进行CDQ\text{CDQ}分治,对xx一维进行排序,用树状数组维护左边的贡献对右边的影响,对于右边的每一个元素,考虑他前面比他大的数对答案的贡献和后面比他小的数对答案的贡献,这样就可以统计答案了。代码:#include #include #include #include us

2017-04-14 19:09:46 193

原创 SDOI 2017 Round1 题解

sdoi 2017 Round1

2017-04-12 18:49:41 394 1

原创 【BZOJ 1076】[SCOI2008]奖励关

思路:二进制状压所有的状态,设f[i][j]f[i][j]表示当前已经从1→i−11\to i-1当中得到状态jj,后面进行选择的最大收益。 转移就是枚举之前的状态,枚举当前出现哪一个元素。 ORZ hzwer代码:#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespac

2017-03-31 09:46:21 322

原创 【BZOJ 2002】[Hnoi2010] 弹飞绵羊

分块。 记录每个点到下一块区间需要走的步数,和到达下个区间的哪个点。 时间复杂度:O(qn√)O(q\sqrt n)#include #include #include using namespace std;const int maxn = 200010;int n, m, Size;int k[maxn], bl[maxn], sp[maxn], pt[maxn];int

2017-03-31 09:34:28 161

原创 【BZOJ 1257】[CQOI2007]余数之和sum

题意给出正整数nn和kk,计算j(n,k)=kmod1+kmod2+kmod3+…+kmodnj(n, k)=k \mod 1 + k \mod 2 + k \mod 3 + … + k \mod n的值,其中kmodik mod i表示kk除以ii的余数。 1≤n,k≤1091\le n ,k\le 10^9思路ans=∑i=1nk%i=∑i=1nk−⌊ki⌋×i=nk−∑i=1n

2017-03-30 14:49:54 287

原创 【BZOJ 1833】数字计数

思路:数位dp,先预处理dp数组,然后统计答案。 先计算位数小于当前位的,再枚举第一位,从11到最大值−1-1,后面的每一位,从从00到最大值−1-1。代码:#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;typedef long long ll;

2017-03-27 10:15:42 281

原创 【学习】动态树 link cut tree

介绍LCT是动态的树链剖分,他用SplaySplay维护重链的信息,并且动态维护重链。 可以支持合并分割操作,并且动态维护树链的信息。 原树中的重链对应的是SplaySplay中的实边,轻链对应轻边,这样一棵树被划分成了若干个SplaySplay。 SplaySplay的中序遍历是从浅到深的顺序。基本的操作Splay-is_root()bool is_root(){retur

2017-03-23 09:24:01 259

原创 【学习】博弈游戏

博弈问题所讨论的博弈问题满足以下条件:玩家只有两个人,轮流做出决策,且操作公平。游戏的状态集有限,保证游戏在有限步后结束.博弈双方都使用最优决策。一个游戏有两个状态,我们称为必胜态和必败态,他们的关系:必胜态表示,从当前状态可以转移到一个必败态。必败态表示,从当前状态无法转移到一个必败态。也就是说,一个状态不是必胜态,就是必败态。Nim取石子游戏问题描

2017-03-22 17:06:59 415

原创 【模板】对拍器

gen#include <bits/stdc++.h>using namespace std;int n, m, T;int main(){ srand(time(NULL)); return 0;}check#include <bits/stdc++.h>using namespace std;int n;int main(){ while(n <= 200){

2017-02-18 18:15:29 1402

sdoi2017R1D2

sdoi2017R1D2

2017-04-16

sdoi2017R1D1

sdoi2017R1D1

2017-04-16

空空如也

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

TA关注的人

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