<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[yhf_2015]]></title><description><![CDATA[Holle World.]]></description><link>https://blog.youkuaiyun.com/yhf_2015</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; yhf_2015]]></copyright><item><title><![CDATA[【BZOJ 3711】[PA2014] Druzyny]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/62037254</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/62037254</guid><author>yhf_2015</author><pubDate>Thu, 25 Jul 2019 12:44:18 +0800</pubDate><description><![CDATA[题目：



Description


  体育课上，nn个小朋友排成一行（从11到nn编号），老师想把他们分成若干组，每一组都包含编号连续的一段小朋友，每个小朋友属于且仅属于一个组。 
  第ii个小朋友希望它所在的组的人数不多于d[i]d[i]，不少于c[i]c[i]，否则他就会不满意。 
  在所有小朋友都满意的前提下，求可以分成的组的数目的最大值，以及有多少种分组方案能达到最大值。]]></description><category></category></item><item><title><![CDATA[【BZOJ 1926】[Sdoi2010]粟粟的书架]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/53653214</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/53653214</guid><author>yhf_2015</author><pubDate>Thu, 25 Jul 2019 12:40:55 +0800</pubDate><description><![CDATA[题目来源：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]]]></description><category></category></item><item><title><![CDATA[【BZOJ 3343】教主的魔法]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/53818467</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/53818467</guid><author>yhf_2015</author><pubDate>Thu, 25 Jul 2019 12:37:36 +0800</pubDate><description><![CDATA[题目来源：BZOJ 3343

思路：



代码：]]></description><category></category></item><item><title><![CDATA[个人网站地址，欢迎访问，交流。]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/88827645</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/88827645</guid><author>yhf_2015</author><pubDate>Tue, 26 Mar 2019 19:10:24 +0800</pubDate><description><![CDATA[yhf2000.cn

]]></description><category></category></item><item><title><![CDATA[【学习】线段树的动态开点]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/53675376</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/53675376</guid><author>yhf_2015</author><pubDate>Sat, 23 Mar 2019 23:42:23 +0800</pubDate><description><![CDATA[就是用哪里开哪里，每次访问之前看看是否为空，为空就新建一个节点。 
代码量小，非常好用。

题目来源：BZOJ 1012



代码：



#include 
#include 
#define mid ((l+r)>>1)
typedef long long ll;
const int maxn = 200010;
struct Tree{
    ll mx;
    Tree* ch[2]]]></description><category></category></item><item><title><![CDATA[【学习】线段树和并]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/53725789</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/53725789</guid><author>yhf_2015</author><pubDate>Sat, 23 Mar 2019 23:41:48 +0800</pubDate><description><![CDATA[（摘自 黄嘉泰 的课件）



合并：

由线段树的定义我们不难写出下面的过程，来合并两棵代表范围相同的线段树

merge(a,b):
    如果a,b中有一个不含任何元素，就返回另一个
    如果a,b都是叶子，返回merge_leaf(a,b)
    返回merge(a->l,b->l)与merge(a->r,b->r)连接成的树

由于a,b两棵树结构相同，上面的过程的正确性是显然的]]></description><category></category></item><item><title><![CDATA[网络流学习笔记]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/84173347</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/84173347</guid><author>yhf_2015</author><pubDate>Sat, 24 Nov 2018 18:45:16 +0800</pubDate><description><![CDATA[
图论的证明太复杂了，就只说一下算法流程理解一下好了。


一. 相关定义

容量网络:设G(V,E)G(V,E)G(V,E)，是一个有向网络，在VVV中指定了一个顶点,称为源点(记为VsV_sVs​)，以及另一个顶点，称为汇点(记为VtV_tVt​)；对于每一条弧(u,v)(u,v)(u,v)属于EEE，对应有一个权值c(u,v)&amp;amp;amp;amp;gt;0c(u,v)&amp;amp;amp;amp;gt;0c(u,v)&amp;amp;amp;gt...]]></description><category></category></item><item><title><![CDATA[快速傅里叶变换与快速数论变换（FFT&NTT）学习笔记]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/83859757</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/83859757</guid><author>yhf_2015</author><pubDate>Sat, 24 Nov 2018 16:51:49 +0800</pubDate><description><![CDATA[快速傅里叶变换与快速数论变换（FFT&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;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...]]></description><category></category></item><item><title><![CDATA[【学习】 区间消除类dp]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/70941453</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/70941453</guid><author>yhf_2015</author><pubDate>Fri, 28 Apr 2017 21:50:38 +0800</pubDate><description><![CDATA[经典的就是poj 1390 Blocks。 
这一类的问题总结起来就是可以消除掉一段区间，之后原来的区间的两边会合起来，产生一种新的结果。]]></description><category></category></item><item><title><![CDATA[【BZOJ 4034】 [HAOI2015]树上操作]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/70770194</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/70770194</guid><author>yhf_2015</author><pubDate>Wed, 26 Apr 2017 17:09:30 +0800</pubDate><description><![CDATA[思路：

考虑维护深度，那么子树加的时候相当于加一个与深度相关的等差数列，所以我们每个节点记录一个二元组(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]]></description><category></category></item><item><title><![CDATA[【BZOJ 3589】 动态树]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/70808350</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/70808350</guid><author>yhf_2015</author><pubDate>Wed, 26 Apr 2017 17:07:07 +0800</pubDate><description><![CDATA[思路

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

代码]]></description><category></category></item><item><title><![CDATA[NOIP专题复习——专题八：数论基础]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/53010471</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/53010471</guid><author>yhf_2015</author><pubDate>Wed, 26 Apr 2017 08:34:07 +0800</pubDate><description><![CDATA[拓展欧几里得



定理：

对于不完全为 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)=]]></description><category></category></item><item><title><![CDATA[【BZOJ 3932】[CQOI2015]任务查询系统]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/53674643</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/53674643</guid><author>yhf_2015</author><pubDate>Wed, 26 Apr 2017 08:32:38 +0800</pubDate><description><![CDATA[题目来源：BZOJ 3932

思路：

类似于在区间上标记线段的操作，把所有的区间变成两个点，边操作边进行前缀和就好了，需要用用主席树维护的信息有权值的出现次数，权值的和。

过不了。

代码：



#include 
#include 
#include 
#define mid ((l+r)>>1)
using namespace std;
const int maxn = 100010;]]></description><category></category></item><item><title><![CDATA[【CF 86D】Powerful array]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/53827555</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/53827555</guid><author>yhf_2015</author><pubDate>Wed, 26 Apr 2017 08:28:19 +0800</pubDate><description><![CDATA[题目来源：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为序列中含]]></description><category></category></item><item><title><![CDATA[【学习】树链剖分]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/53792042</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/53792042</guid><author>yhf_2015</author><pubDate>Wed, 26 Apr 2017 08:24:52 +0800</pubDate><description><![CDATA[学习资料：starszys的博客 树链剖分

以下为学习笔记，部分摘自starszys的博客。



解决的问题：

把对树的操作转换到序列上，以便于用数据结构来维护。

基本概念：


树链：就是树上的路径。
剖分，就是把路径分类为重链和轻链。
重儿子：siz[u]为v的子节点中siz值最大的，那么u就是v的重儿子。
轻儿子：v的其它子节点。
重边：点v与其重儿子的连边。
轻边：点v与其轻儿子的]]></description><category></category></item><item><title><![CDATA[【BZOJ 1010】玩具装箱]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/53968770</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/53968770</guid><author>yhf_2015</author><pubDate>Wed, 26 Apr 2017 08:23:53 +0800</pubDate><description><![CDATA[思路：

设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−]]></description><category></category></item><item><title><![CDATA[【BZOJ 2243】[SDOI2011]染色]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/53761839</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/53761839</guid><author>yhf_2015</author><pubDate>Wed, 26 Apr 2017 08:23:03 +0800</pubDate><description><![CDATA[题目来源：BZOJ 2243

思路：]]></description><category></category></item><item><title><![CDATA[【BZOJ 3052】糖果公园]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/53818031</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/53818031</guid><author>yhf_2015</author><pubDate>Wed, 26 Apr 2017 08:21:38 +0800</pubDate><description><![CDATA[题目来源：UOJ #58

思路：

树上莫队。

代码：]]></description><category></category></item><item><title><![CDATA[【BZOJ 1036】 [ZJOI2008]树的统计]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/53794369</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/53794369</guid><author>yhf_2015</author><pubDate>Wed, 26 Apr 2017 08:20:31 +0800</pubDate><description><![CDATA[题目来源：BZOJ 1036

思路：

练习树链剖分的例题，注意修改操作，所给的信息是树上的点的编号，不是线段树里的编号。

代码：



#include 
#include 
#include 
#define mid ((l+r)>>1)
#define lch (now
#define rch ((now
const int maxn = 30010;
const int inf = 2]]></description><category></category></item><item><title><![CDATA[【BZOJ 2038】小Z的袜子]]></title><link>https://blog.youkuaiyun.com/yhf_2015/article/details/53817965</link><guid>https://blog.youkuaiyun.com/yhf_2015/article/details/53817965</guid><author>yhf_2015</author><pubDate>Wed, 26 Apr 2017 08:19:37 +0800</pubDate><description><![CDATA[题目来源：BZOJ 2038

思路：

莫队算法。

代码：]]></description><category></category></item></channel></rss>