<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Wolf_Reiser的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Wolf_Reiser</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Wolf_Reiser]]></copyright><item><title><![CDATA[CF1285D Dr. Evil Underscores 01Trie+贪心]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/103935306</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/103935306</guid><author>Wolf_Reiser</author><pubDate>Sat, 11 Jan 2020 13:58:36 +0800</pubDate><description><![CDATA[给出nnn个整数a1,a2,…,ana_1,a_2,\ldots,a_na1​,a2​,…,an​，要求选出一个整数XXX，最小化max⁡1≤i≤n(ai⊕X)\underset{1 \leq i \leq n}{\max} (a_i \oplus X)1≤i≤nmax​(ai​⊕X)，输出这个最小值.1≤n≤105,0≤ai≤230−11\leq n\leq 10^5,0\leq a_i\leq...]]></description><category></category></item><item><title><![CDATA[HDU5536 Chip Factory 01Trie处理xor]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/103150800</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/103150800</guid><author>Wolf_Reiser</author><pubDate>Tue, 19 Nov 2019 20:51:42 +0800</pubDate><description><![CDATA[2015ICPC长春站J题
给出一个长度为NNN的数组sss，求max⁡(si+sj)⨁sk\max (s_i+s_j) \bigoplus s_kmax(si​+sj​)⨁sk​，其中i,j,ki,j,ki,j,k互不相同，有多组数据
N≤1000N \leq 1000N≤1000
辣鸡数据裸O(n3)O(n^3)O(n3)能过
正解应该是把NNN个数插入01Trie中，询问时n2n^2n2枚举...]]></description><category></category></item><item><title><![CDATA[ARC058F 文字列大好きいろはちゃん / Iroha Loves Strings dp+贪心]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/80565267</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/80565267</guid><author>Wolf_Reiser</author><pubDate>Mon, 04 Jun 2018 11:41:23 +0800</pubDate><description><![CDATA[给出NNN个字符串，要求选出其中一些串按顺序拼接成一个长度为KKK的串，并且要求拼接串的字典序最小。N≤2000,K≤10000,N≤2000,K≤10000,N\leq2000,K\leq10000, 每个串长度不超过KKK，总长度不超过10610610^6. 
设ok[i][j]ok[i][j]ok[i][j]表示最后iii个串，能否组成长度为jjj的字符串. 
背包转移即可，可以用bitse...]]></description><category></category></item><item><title><![CDATA[BZOJ4568 [Scoi2016]幸运数字 树上倍增+线性基]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/80473247</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/80473247</guid><author>Wolf_Reiser</author><pubDate>Sun, 27 May 2018 21:58:36 +0800</pubDate><description><![CDATA[有一棵NNN个节点的树，QQQ个询问，每次询问树上从uuu到vvv的路径中能xorxorxor出的最大值。N≤20000,Q≤200000,N≤20000,Q≤200000,N\leq20000,Q\leq 200000,时限666s. 
询问一个数集的xorxorxor最大值显然线性基模板。 
预处理树上每个点到它第2k−12k−12^k-1个父亲的线性基，合并时暴力将一个线性基插入另一个，每次...]]></description><category></category></item><item><title><![CDATA[BZOJ1001 [BJOI2006]狼抓兔子 最小割模板]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/79989089</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/79989089</guid><author>Wolf_Reiser</author><pubDate>Wed, 18 Apr 2018 14:07:52 +0800</pubDate><description><![CDATA[直接dinic跑最大流可过更新一下模板#include&amp;lt;cstdio&amp;gt;
#include&amp;lt;cstring&amp;gt;
#include&amp;lt;algorithm&amp;gt;
#include&amp;lt;queue&amp;gt;
#define LL long long
#define clr(x,i) memset(x,i,sizeof(x))
using namespace std;
const...]]></description><category></category></item><item><title><![CDATA[BZOJ2588: Count on a tree 树上主席树]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/79468217</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/79468217</guid><author>Wolf_Reiser</author><pubDate>Wed, 07 Mar 2018 11:02:26 +0800</pubDate><description><![CDATA[给定一棵N个节点的树，每个点有一个权值，对于M个询问(u,v,k)，你需要回答u和v这两个节点间第K小的点权，强制在线。N,M<=100000 
边DFS边建出主席树，这样每次建出的树存储的都是该节点到根的sizesize前缀和 
这样每次在rt[u]+rt[v]−rt[lca]−rt[fa[lca]]rt[u]+rt[v]-rt[lca]-rt[fa[lca]]四棵树上查询即可]]></description><category></category></item><item><title><![CDATA[BZOJ1901 Dynamic Rankings 带修改主席树(模板)]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/79467900</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/79467900</guid><author>Wolf_Reiser</author><pubDate>Wed, 07 Mar 2018 10:47:14 +0800</pubDate><description><![CDATA[给出一个数列，要求支持区间查询第K小和单点修改。 
因为不强制在线，先将修改操作和原数列一起离散化 
建树方式更改为使用树状数组维护前缀和，主席树只记录这一个位置的sizesize. 
修改时要在logn\log n个节点上同时修改 
查询时同时累加logn\log n个节点的sizesize，每一层记录一下logn\log n个节点的左右节点对应位置 
最后在树上二分计算答案]]></description><category></category></item><item><title><![CDATA[BZOJ3932 [CQOI2015]任务查询系统 主席树+差分]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/79467394</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/79467394</guid><author>Wolf_Reiser</author><pubDate>Wed, 07 Mar 2018 10:21:15 +0800</pubDate><description><![CDATA[给出M个任务，Q个查询，第ii个任务从第sis_i秒开始，到第tit_i秒结束，优先级为pip_i.时间范围是N.要求支持查询[sj,tj][s_j,t_j]时间段内优先级最小的K个任务，查询强制在线。 
M,N,Q<=100000. 
注意到时间范围不大，因此对每个任务在时间上进行差分 
主席树上每个节点存储当前时间的这一段的sizesize和离散前的权值和sumsum，每次在第X颗主席树上查询前]]></description><category></category></item><item><title><![CDATA[BZOJ3524 [Poi2014]Couriers 主席树(模板)]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/79466810</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/79466810</guid><author>Wolf_Reiser</author><pubDate>Wed, 07 Mar 2018 09:47:39 +0800</pubDate><description><![CDATA[给一个长度为n的序列a。1≤a[i]≤n。 
m组询问，每次询问一个区间[l,r]，是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2。 
显然出现次数超过一半的数最多只有1个 
建出主席树，在树上二分查找即可



/**************************************************************
    Problem: 3524
    ...]]></description><category></category></item><item><title><![CDATA[BZOJ1058 [ZJOI2007]报表统计 STL]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/79018553</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/79018553</guid><author>Wolf_Reiser</author><pubDate>Tue, 09 Jan 2018 23:02:44 +0800</pubDate><description><![CDATA[给定一个数列 需要实现三种操作：
①在某个数后面加入一个数，如果曾经加入过则加在之前加的数之后
②查询所有相邻两个数的差的最小值
③查询全局差的最小值
用一个set和一个map维护相邻两数的差值
每次插入就删除原来的差值，再插入新的差值
因为全局差值只降不增
所以再开一个set存出现过的数，每次二分查找后更新差值再插入
因为BZOJ评测不分点所以卡过了
#include
#inc]]></description><category></category></item><item><title><![CDATA[BZOJ3687 简单题 dp+bitset]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/79018488</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/79018488</guid><author>Wolf_Reiser</author><pubDate>Tue, 09 Jan 2018 22:52:44 +0800</pubDate><description><![CDATA[给出n个数，求所有子集和的异或和。n
正常情况下就是一个01背包，但是范围过大会TLE
于是用bitset优化一下这个bool dp
bitset的第i位表示和为i出现次数的奇偶性
这个东西可以像位运算一样操作，比较方便但是好像用的不多。。
#include
#define LL long long
#define clr(x,i) memset(x,i,sizeof(x))
using]]></description><category></category></item><item><title><![CDATA[BZOJ1566 [NOI2009]管道取珠 dp]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78965570</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78965570</guid><author>Wolf_Reiser</author><pubDate>Wed, 03 Jan 2018 21:11:11 +0800</pubDate><description><![CDATA[有两个栈，每个栈从底向上有一些颜色为A或B的球，现将这些球全部取出，假设能得到kk个不同的颜色序列，得到每个序列的方案数为aia_i. 
求∑ki=1a2i\sum_{i=1}^ka_i^2. 
这里需要巧妙转化 
a2ia_i^2可以看做两个人每人取一次，取得的序列相同的方案数。 
那么设f[i][j][k]f[i][j][k]为第一个人在上面取ii个，下面取jj个，第二个人在上面取kk个，下面取]]></description><category></category></item><item><title><![CDATA[BZOJ3671 NOI2014随机数生成器 贪心+暴力]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78965084</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78965084</guid><author>Wolf_Reiser</author><pubDate>Wed, 03 Jan 2018 20:31:26 +0800</pubDate><description><![CDATA[14年NOI的题
通过一系列操作生成了n*n个随机数，将这些数按顺序填入一个n*n的方格，求从左上角走到右下角，能得到的字典序最小的路径。
前面直接模拟
求路径序列的时候，考虑贪心取当前能走到的最小的数一定是最优的
于是直接从1~n*n判断每个数能不能取
能则输出并删除这个数的左下角和右上角所有格子
256M只能开2个5000*5000的int和一个boolean
所以记录每个数位置]]></description><category></category></item><item><title><![CDATA[BZOJ2464 中山市选2009小明的游戏 SPFA]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78943765</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78943765</guid><author>Wolf_Reiser</author><pubDate>Sun, 31 Dec 2017 23:00:58 +0800</pubDate><description><![CDATA[给定一个n * m的棋盘，上面有两种格子#和@。给定一个起始位置和一个目标位置，每一步能向上，下，左，右四个方向移动一格。如果移动到同一类型的格子，则费用是0，否则费用是1。计算从起始位置移动到目标位置的最小花费。
最短路无误
忘判边界WA两发也是醉了
#include
#include
#include
#define LL long long
#define clr(x,i) memse]]></description><category></category></item><item><title><![CDATA[BZOJ1202 [HNOI2005]狡猾的商人 并查集+前缀和]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78942605</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78942605</guid><author>Wolf_Reiser</author><pubDate>Sun, 31 Dec 2017 17:59:54 +0800</pubDate><description><![CDATA[有一个长为n的数列，给出m个子段和信息，问是否一定存在冲突。数列可以为负。 
这个题用并查集做感觉很玄学 
按照题解打了一遍还是不太清晰 
https://www.cnblogs.com/FallDream/p/bzoj1202.html 
这篇题解思路比较好 
建图，并且插入反边，bfs判断一个点的距离是否不唯一#include<cstdio>
#include<cstring>
#include]]></description><category></category></item><item><title><![CDATA[bzoj1090: [SCOI2003]字符串折叠 区间dp+hash]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78941549</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78941549</guid><author>Wolf_Reiser</author><pubDate>Sun, 31 Dec 2017 13:27:00 +0800</pubDate><description><![CDATA[题目大意：一个重复k次的子串x可以折叠替换成k(x)的形式，问原串经折叠后的最短长度.n≤100n\leq100. 
k(x)的长度为 k的位数+x的长度+2. 
区间dp，转移方程为f[i][j]=min(j−i+1,f[i][k]+f[k+1][j])f[i][j]=min(j-i+1,f[i][k]+f[k+1][j]) 
如果i~j的子串可以由i~i+k-1的子串重复得来 
就要再转移f[i]]></description><category></category></item><item><title><![CDATA[BZOJ4028 [HEOI2015]公约数数列 分块]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78941351</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78941351</guid><author>Wolf_Reiser</author><pubDate>Sun, 31 Dec 2017 12:32:22 +0800</pubDate><description><![CDATA[给定一个数列，要求资磁以下两种操作: 
1.单点修改. 
2.求数列中最前的位置p，使前缀最大公约数gcd*前缀异或和xor==一个输入的数x.考虑分块+暴力. 
按照n√\sqrt n分块，求出每一块的前缀gcd和前缀xor. 
单点修改时对所在块暴力更新gcd与xor 
每次更新的复杂度是n√logn\sqrt n \log n.查询时分两种情况①如果GCD(gcd_now,gcd_pre)==]]></description><category></category></item><item><title><![CDATA[BZOJ2946 [Poi2000]公共串 二分+hash]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78939805</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78939805</guid><author>Wolf_Reiser</author><pubDate>Sat, 30 Dec 2017 22:09:14 +0800</pubDate><description><![CDATA[给出几个由小写字母构成的单词，求它们最长的公共子串的长度。n
预处理出每个串的哈希值
二分答案，]]></description><category></category></item><item><title><![CDATA[bzoj2393/bzoj1853 Cirno的完美算数教室/[Scoi2010]幸运数字 搜索+容斥]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78881469</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78881469</guid><author>Wolf_Reiser</author><pubDate>Sat, 23 Dec 2017 18:32:36 +0800</pubDate><description><![CDATA[这两个题是完全一样的，但1853会爆long long，中间要用long double估计一下。
popo大神的题解：http://blog.youkuaiyun.com/popoqqq/article/details/41807333
题目大意：求在[L,R]中能被“baka数”整除的数的个数.baka数是数位组成只含2和9(⑨)的数.范围1e10-1e11.
先预处理出所有baka数，再把是另一个的]]></description><category></category></item><item><title><![CDATA[BZOJ1821 [JSOI2010]Group 部落划分 贪心+并查集]]></title><link>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78881180</link><guid>https://blog.youkuaiyun.com/Wolf_Reiser/article/details/78881180</guid><author>Wolf_Reiser</author><pubDate>Sat, 23 Dec 2017 17:36:57 +0800</pubDate><description><![CDATA[平面上有N个部落，使划分成K个居住点后，最近的两个居住点之间的距离最远。两个部落的距离，定义为部落中距离最近的那两个居住点的距离。求这个距离。
将完全图的边按照距离从小到大排序，选中边的两端用并查集并起来，第N-K+1条边的长度即为答案.
这个题目不需要二分，贪心比较巧妙]]></description><category></category></item></channel></rss>