<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sSay]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sssSSSay</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sssSSSay]]></copyright><item><title><![CDATA[网络流二十四题整理]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/98213771</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/98213771</guid><author>sssSSSay</author><pubDate>Sun, 04 Aug 2019 16:05:29 +0800</pubDate><description><![CDATA[仅整理了一些不是很熟悉的建模方法

太空计划问题
题意：可以花钱买mmm种实验器材，这里有nnn种实验，每种实验需要不同的实验器材，做了实验有奖金，求最多可以获得的钱。
解法：最大权闭合图
建模：所有实验放左边，所有器材放右边。源点向实验连权值为奖金的边。器材向汇点连权值为花费的边，实验向所有需要的器材连权值为INF的边，若最小割跑出来是xxx，最后答案就是tot−xtot - xtot−x（to...]]></description><category></category></item><item><title><![CDATA[线性基]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/97615912</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/97615912</guid><author>sssSSSay</author><pubDate>Mon, 29 Jul 2019 10:32:04 +0800</pubDate><description><![CDATA[线性基
什么是线性基
高级：对于一个数字集合，基于异或运算的最大线性无关组。
人话：给一个数组aaa，线性基是另一个数组bbb，且数组bbb中的元素任意组合异或起来可以表示出数组aaa中的任何元素组合异或。(数组bbb元素很少，log级别)
有什么用
对于给出的数组，求出其中任意元素组合异或的最大值，最小值，k大值。
怎么搞
依次遍历数组aaa中每一个元素xxx，看看它能不能放进线性基里（初始时线...]]></description><category></category></item><item><title><![CDATA[CF - 1156E - Special Segments of Permutation]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/89931012</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/89931012</guid><author>sssSSSay</author><pubDate>Tue, 07 May 2019 22:23:42 +0800</pubDate><description><![CDATA[https://codeforces.com/problemset/problem/1156/E
合理分析复杂度
想到正解但是不敢做系列
预处理以每个点（若为iii）为区间最大的最长段，在该段统计答案。枚举该段左半段（或右半段）的元素（若大小为ppp），判断在另半段有没有a[i]−pa[i] - pa[i]−p存在（储存某个数在aaa数列中出现的位置即可O(1)O(1)O(1)判断），若存在即统计...]]></description><category></category></item><item><title><![CDATA[CF - 1156D - 0-1-Tree]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/89928436</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/89928436</guid><author>sssSSSay</author><pubDate>Tue, 07 May 2019 20:09:19 +0800</pubDate><description><![CDATA[https://codeforces.com/contest/1156/problem/D
乱搞
只连接0边搞成一个图，只连接1边搞成一个图。
两个图中的联通块内每个点和别的点可以统计答案，贡献为cnt∗(cnt−1)cnt * (cnt - 1)cnt∗(cnt−1)（cntcntcnt是联通块内结点数量）
然后先0再1的情况去枚举0到1的那个中间点vvv，用qqq 表示  vvv 所在0块的节...]]></description><category></category></item><item><title><![CDATA[中国剩余定理]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/86478445</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/86478445</guid><author>sssSSSay</author><pubDate>Mon, 14 Jan 2019 15:41:04 +0800</pubDate><description><![CDATA[别看了，我没学会
暂时先搞一个板子过来嘿嘿嘿
int CRT(int a[], int m[], int n) {
    int M = 1;
    int ans = 0;
    for(int i = 1; i &amp;amp;lt;= n; i++) M *= m[i];
    for(int i = 1; i &amp;amp;lt;= n; i++) {
        int x, y;
        i...]]></description><category></category></item><item><title><![CDATA[[BZOJ]1010 玩具装箱]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/70216381</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/70216381</guid><author>sssSSSay</author><pubDate>Mon, 17 Apr 2017 21:34:07 +0800</pubDate><description><![CDATA[[BZOJ]1010题意：P教授要去看奥运，但是他舍不下他的玩具，于是他决定把所有的玩具运到北京。他使用自己的压缩器进行压 
缩，其可以将任意物品变成一堆，再放到一种特殊的一维容器中。P教授有编号为1...N1...N的NN件玩具，第i件玩具经过 
压缩后变成一维长度为CiCi.为了方便整理，P教授要求在一个一维容器中的玩具编号是连续的。同时如果一个一维容 
器中有多个玩具，那么两件玩具之间要加入一]]></description><category></category></item><item><title><![CDATA[[BZOJ]1072 排列]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/70193555</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/70193555</guid><author>sssSSSay</author><pubDate>Sun, 16 Apr 2017 07:41:51 +0800</pubDate><description><![CDATA[[BZOJ]1072题意：给一个数字串ss和正整数dd, 统计ss有多少种不同的排列能被dd整除（可以有前导0）。题解：除了有一个地方没想过去这基本上是道裸题。。 
因为ss的范围很小所以可以状压用过的数字。 
整除这种东西不好转移所以用余数为0来表示，dp[s][i]dp[s][i]表示用过的数字状态为ss，除以dd余数为ii的方案数是多少。 
转移的时候考虑在ss的基础上添加一个数，即dp[s|]]></description><category></category></item><item><title><![CDATA[[BZOJ]1070 修车]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/69815531</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/69815531</guid><author>sssSSSay</author><pubDate>Sun, 09 Apr 2017 14:33:30 +0800</pubDate><description><![CDATA[[BZOJ]1070题意：nn辆车和mm个修车师傅，每个修车师傅修每辆车的时间以矩阵形式给出，求所用的最小平均时间。题解：最小费用最大流。 
所用的总时间除以nn就是最后的平均时间，那么就是求最后的总时间。 
可以考虑给师傅们分配若干修车任务，那么先后次序一定会影响最后的时间(在后面的要等着前面的修好了才能被修)，倒数第kk个被修的对答案的贡献为k∗time[i][j]k * time[i][j]，]]></description><category></category></item><item><title><![CDATA[[BZOJ]1069 最大土地面积]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/69815374</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/69815374</guid><author>sssSSSay</author><pubDate>Sun, 09 Apr 2017 14:32:07 +0800</pubDate><description><![CDATA[[BZOJ]1069]]></description><category></category></item><item><title><![CDATA[整体二分]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/69802402</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/69802402</guid><author>sssSSSay</author><pubDate>Sun, 09 Apr 2017 10:03:00 +0800</pubDate><description><![CDATA[整体二分笔记]]></description><category></category></item><item><title><![CDATA[[BZOJ]1030 文本生成器]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/69802381</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/69802381</guid><author>sssSSSay</author><pubDate>Sun, 09 Apr 2017 09:58:48 +0800</pubDate><description><![CDATA[[BZOJ]1030题意：　　给出一个MM，表示有MM个字母是随机给出的，有很多种可能。再给出NN个字符串，求NN在MM中出现的可能个数。题解：　　类似于[BZOJ]1009。未知字符求个数一般都是字符串Dp，解决方法类似。不过这个题要先转化为不出现的可能个数再拿总数减去。 
　　这个题是多个串匹配，所以是AC自动机AC自动机，用dp[i][j]dp[i][j]表示到了第ii个字符(MM中)，匹配到]]></description><category></category></item><item><title><![CDATA[[BZOJ]1027 合金]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/69802374</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/69802374</guid><author>sssSSSay</author><pubDate>Sun, 09 Apr 2017 09:57:49 +0800</pubDate><description><![CDATA[[BZOJ]1027题意：　　给出一些材料，由三部分组成，给出一些目标材料，要求选择最少种的当前材料能够融合为所有的目标材料。题解：　　做这个题的前提是要知道三种材料可以用两种来表示，这样每种材料就可以抽象成平面上的点。接着因为它没有限制材料的多少，所以两种材料可以组成它们连线之间的所有材料。简单再想一想可以知道一堆点组合成的闭包是它们可以组成的所有材料，所以问题就是求一个最小环使得包含所有的目标点]]></description><category></category></item><item><title><![CDATA[[BZOJ]1026 Windy数]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/69802362</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/69802362</guid><author>sssSSSay</author><pubDate>Sun, 09 Apr 2017 09:56:22 +0800</pubDate><description><![CDATA[[BZOJ]1026题意：　　给出[L,R][L,R]，求区间内的数有多少满足相邻位数之间差的绝对值超出了2。题解：　　一眼数位Dp一眼不了的建议学一下数位Dp，然后转化成前缀和的形式来计算。 
　　数位Dp多以位数为阶段，考虑每一位填什么来转移。为了方便枚举到所有的情况，状态设为dp[i][j][k][l]dp[i][j][k][l]表示填到了第ii个数，前一位是jj，kk是0/10/1表示是否贴]]></description><category></category></item><item><title><![CDATA[[BZOJ]1025 游戏]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/69802355</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/69802355</guid><author>sssSSSay</author><pubDate>Sun, 09 Apr 2017 09:55:12 +0800</pubDate><description><![CDATA[[BZOJ]1025题意：　　给出nn的最大值，求在nn的所有置换中经过不停置换最后重新变成有序的列表不同的排有几种。题解：　　首先要知道一个知识：任何一个置换都可以由一些循环的乘积得来。这样的话不同的循环有各自的循环节，长度为nn的循环其循环节是nn，那么问题转换为将nn分解成若干个数这些数有多少种不同的lcmlcm。 
 　　1是不影响lcmlcm的，所以合数的情况都可以用质数来表示，而不同的质]]></description><category></category></item><item><title><![CDATA[树链剖分]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/65437470</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/65437470</guid><author>sssSSSay</author><pubDate>Thu, 23 Mar 2017 10:14:17 +0800</pubDate><description><![CDATA[树链剖分]]></description><category></category></item><item><title><![CDATA[[BZOJ]1023 仙人掌图]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/62897505</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/62897505</guid><author>sssSSSay</author><pubDate>Fri, 17 Mar 2017 20:09:06 +0800</pubDate><description><![CDATA[[BZOJ]1023题意：　　给出一颗仙人掌，求仙人掌上两点间最短距离的最大值(即仙人掌的直径)。题解：　　树的直径可以用Dp来搞一搞，这个仙人掌其实也类似。 
　　如果用f[i]f[i]表示从ii向下扩展的最大距离，而且这颗仙人掌上没有环，我们就可以用这样的方法去更新答案：ans=max(ans,f[u]+f[v]+2)ans = max(ans,f[u] + f[v] + 2) 
　　其中uu和]]></description><category></category></item><item><title><![CDATA[[BZOJ]1033 杀蚂蚁]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/62416867</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/62416867</guid><author>sssSSSay</author><pubDate>Thu, 16 Mar 2017 09:30:58 +0800</pubDate><description><![CDATA[模拟]]></description><category></category></item><item><title><![CDATA[[BZOJ]1022 小约翰的游戏]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/61424050</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/61424050</guid><author>sssSSSay</author><pubDate>Sat, 11 Mar 2017 19:07:43 +0800</pubDate><description><![CDATA[[BZOJ]1022题意：　　有一堆什么东西，A先手取，B后手，每次可以取走一整堆或者是一部分(至少取走一个)，谁拿了最后一个谁赢，给出每堆的数量，求A必胜还是B必胜。题解：　　反Nim游戏故作高深，实际上并不知道啥叫Nim游戏，反正这个东西就是反Nim。 
　　对于这个东西来说，如果所有的堆数量都为1的话，SG函数值为0的话A赢，否则B赢。 
　　如果所有的堆数量不一定都为1，SG函数值不为0的话]]></description><category></category></item><item><title><![CDATA[[BZOJ]1021 循环的债务]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/61421996</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/61421996</guid><author>sssSSSay</author><pubDate>Sat, 11 Mar 2017 17:50:16 +0800</pubDate><description><![CDATA[[BZOJ]1021题意：　　给出三个人之间的欠钱关系和他们各自持有的钱币种类和个数，求能不能各自把钱还清，如果不能输出”Impossible”，如果能输出最小的给钱张数。题解：　　Dp太神了！(弱菜自带遇Dp必跪flag)总之就是Dp。　　 
　　可以按钱币种类划分阶段，那么方程可以为dp[i][j][k]dp[i][j][k]表示用上了前i种钱币，达到了让第一个人有j块钱，第二个人有k块钱(因为]]></description><category></category></item><item><title><![CDATA[[BZOJ]1020安全的航线]]></title><link>https://blog.youkuaiyun.com/sssSSSay/article/details/61392340</link><guid>https://blog.youkuaiyun.com/sssSSSay/article/details/61392340</guid><author>sssSSSay</author><pubDate>Sat, 11 Mar 2017 06:22:36 +0800</pubDate><description><![CDATA[[BZOJ]1020题意：　　给出一条折线和很多个多边形，求折线上的点到多边形距离最小值的最大值。题解：　　①二分答案加检验：二分一个最大值，扩展所有多边形的边，如果覆盖了折线上所有的点说明可以满足，接着二分即可。 
　　②迭代思想的应用：将所有可能的答案加入队列，即把给出的所有线段加入一个队列里，每次取出队头线段，找到端点aa距离多边形最近的点xx，端点bb距离多边形最近的点yy，在这条线段上二分]]></description><category></category></item></channel></rss>