<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Avalon_cc的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Avalon_cc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Avalon_cc]]></copyright><item><title><![CDATA[CodeForces - 1051D  Bicolorings（dp）]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/82887133</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/82887133</guid><author>Avalon_cc</author><pubDate>Fri, 28 Sep 2018 17:13:18 +0800</pubDate><description><![CDATA[题意：给定一个2*n的矩形，有黑白两种颜色，定义两个小方格相邻如果他们的边界挨着并且颜色相同。求分成k个部分的方案数对

998244353取模。

思路：dp[i][j][2]代表第i列分成了j块，此时第i列的状态为0或1.

0代表第i列颜色相同

1代表第i列颜色不同

这样先确定j=1时的情况。

j=1时,dp[i][j][0] = 2;

后面的状态转移方程就比较好推出来了

j&amp;gt...]]></description><category></category></item><item><title><![CDATA[hdu 6390 (欧拉函数+莫比乌斯反演)]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/81663214</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/81663214</guid><author>Avalon_cc</author><pubDate>Tue, 14 Aug 2018 11:11:58 +0800</pubDate><description><![CDATA[给出一个表达式

 

求解

首先，设p为a，b共同的质因数

phi(n) = p^α = (p-1)*p^(α-1)

phi(ab) = (p-1)*p^(α1+α2-1)

phi(a) = (p-1)*p^(α1-1)

phi(b) = (p-1)*p^(α2-1)

phi(ab)/(phi(a)*phi(b)) = p-1/p;

这样原式子就能转化为

若p只为a或b的质因子，...]]></description><category></category></item><item><title><![CDATA[Subsequences CodeForces - 597C (树状数组+dp)]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/81624900</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/81624900</guid><author>Avalon_cc</author><pubDate>Mon, 13 Aug 2018 10:05:47 +0800</pubDate><description><![CDATA[题意：给定一个长度为n的序列，给定一个k，求上升序列长度为k+1的序列数

思路：dp[i][j]表示到第i个数位置，上升序列长度为j的个数。

dp[i][j] = sum(dp[k][j-1])   (k&amp;lt;i)

直接三重循环复杂度肯定不够

所以考虑用树状数组来优化



#include&amp;lt;cstdio&amp;gt;
#include&amp;lt;cstring&amp;gt;
#include&amp;l...]]></description><category></category></item><item><title><![CDATA[hdu 2256(矩阵快速幂)]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/81557955</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/81557955</guid><author>Avalon_cc</author><pubDate>Fri, 10 Aug 2018 10:01:51 +0800</pubDate><description><![CDATA[

思路：

用double来计算显然精度是不够的，先把2放进去就变成了（5+sqrt(6)）^n。展开之后可以发现是an+bn*sqrt（6）的形式。同样的，我们有(5-sqrt(6))^n = an - bn*sqrt(6).

(5+sqrt(6))^n + (5-sqrt(6))^n = 2*an,

又因为0 &amp;lt; (5-sqrt(6))^n &amp;lt; 1,

所以(5+sqrt(6...]]></description><category></category></item><item><title><![CDATA[hdu 6315(多校第二场)]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/81227911</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/81227911</guid><author>Avalon_cc</author><pubDate>Thu, 26 Jul 2018 21:22:33 +0800</pubDate><description><![CDATA[题意：给出一个b序列，还有一个a序列初始全为0。对a有两种操作，一种是add操作，对【l,r】区间所有数加1.一种是查询，对【l,r】区间求sum ( floor(ai/bi)）.

思路：用线段树来维护一个区间最小值，维护一个sum。首先将序列b插入到线段树中，每次add时对区间进行减1操作，当区间最小值减到0时，跟新sum，0重新变为b[i]。


#include &amp;lt;iostream&amp;...]]></description><category></category></item><item><title><![CDATA[hdu  6305(多校第一场)]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/81215809</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/81215809</guid><author>Avalon_cc</author><pubDate>Thu, 26 Jul 2018 10:48:19 +0800</pubDate><description><![CDATA[题意：定义RMQ（A，l，r）为序列A满足A[i] = max(A[l],A[l+1],......,A[r])中最小的i。如果RMQ（A，l，r）= RMQ（B，l，r），则称他们相似。给出A序列，B序列中元素为0-1的实数，求出满足RMQ（A，l，r）= RMQ（B，l，r）的B序列所有元素和的期望。

思路：找出所有与A同构的笛卡尔树。对于每一个节点，与A同构的概率为这个节点子树的大小（包括...]]></description><category></category></item><item><title><![CDATA[hdu 6299 (多校第一场)]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/81180778</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/81180778</guid><author>Avalon_cc</author><pubDate>Tue, 24 Jul 2018 11:01:53 +0800</pubDate><description><![CDATA[题意：给出一些字符串，重新组合，使括号的匹配数量最多

这道题场上没能出，当时看了一眼，关于括号的，以为是个dp，就没有再去做这道题。

这道题事实上是个贪心，先把已经匹配好的括号数量统计出来。剩下的括号往两边堆，右括号往左边堆，左括号往右边堆。然后就是排序。

左括号比右括号多的这种情况肯定要排在右括号比左括号多的前面。

左括号都比右括号多时，就按照右括号少的在前面

右括号都比左括号多时，就...]]></description><category></category></item><item><title><![CDATA[Lightoj 1124 (容斥+lucas)]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/80100970</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/80100970</guid><author>Avalon_cc</author><pubDate>Thu, 26 Apr 2018 22:31:34 +0800</pubDate><description><![CDATA[题意：有k个区间【l,r】，从每个区间选一个数使他们和为n，问有多少种方法。思路：这个问题可以转化为k个【0，r-l】的区间 ，每个区间选一个数使他们和为n-sum（l）。令n = n-sum(l).这样通过隔板法，就能得到方案数位C（k+n-1,k-1）。但因为会有超出的情况，所以通过容斥去判断超出的情况。超出0个时候加，超出1个的时候减，超出2个的时候加，超出3个的时候减……最后二进制枚举子集...]]></description><category></category></item><item><title><![CDATA[POJ 1284  (原根)]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/79970484</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/79970484</guid><author>Avalon_cc</author><pubDate>Tue, 17 Apr 2018 10:19:24 +0800</pubDate><description><![CDATA[题意：给一个奇素数，求它原根的数目。定理：如果p有原根，则他有phi(phi(p))个原根，p为素数是，phi(p) = p-1，原根数量就为phi(p-1)；下面给出原根的求法：对于数m，先求ϕ(m) 的素幂分解式，即                φ(m) = p1^e1*p2^e2*……*pk^ek;然后枚举g，若g满足g^(φ(m)/pi )!= 1 (mod m) ,i = 1,2,3…...]]></description><category></category></item><item><title><![CDATA[POJ 1150 (数论)]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/79967855</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/79967855</guid><author>Avalon_cc</author><pubDate>Mon, 16 Apr 2018 22:52:20 +0800</pubDate><description><![CDATA[题意，求n！/(n-m)!末尾第一个非零的数是什么。思路：这题折腾了我一晚上，终于搞明白了。以10！为例，首先，要去除末尾的0，要把因子10去除，但10不是质数，所以就考虑2*5；去除所有的2，5；例如：1 2 3 4 5 6 7 8 9 10，去除了因子2和5之后，就变为了1 1 3 1 1 1 7 1 9 1；那么这就相当于一个子问题了，我们可以用递归来求解。这样，整个序列就只剩下1 3 7 ...]]></description><category></category></item><item><title><![CDATA[poj 1077 (康托展开+bfs)]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/79935681</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/79935681</guid><author>Avalon_cc</author><pubDate>Fri, 13 Apr 2018 23:07:56 +0800</pubDate><description><![CDATA[这是一个八数码问题，正好学习了康托展开，就做了这题，和hdu1043很像。康托展开并不难理解，其实就是一种hash。先上模板方便以后自己看。康托展开：int Contor(int str[],int n)
{
    int ans = 0;
    for(int i = 0; i &amp;lt; n; i++)
    {
        int cnt = 0;
        for(int j...]]></description><category></category></item><item><title><![CDATA[Fzu 2282 (错排 组合)]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/79879263</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/79879263</guid><author>Avalon_cc</author><pubDate>Tue, 10 Apr 2018 12:09:54 +0800</pubDate><description><![CDATA[题意：给n个数字，求至少k个数字位置不变的排列数量。思路：求至少k个人位置不变只要用全排列的数量减掉0-k错排的数量即可错排公式：Dn = (n-1)*(Dn-2+Dn-1);错排的数量为C(n,i)*Dn;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;algorithm&amp;gt;
#include &amp;lt;cstrin...]]></description><category></category></item><item><title><![CDATA[Light OJ 1079 (概率 01背包)]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/79873279</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/79873279</guid><author>Avalon_cc</author><pubDate>Mon, 09 Apr 2018 21:46:19 +0800</pubDate><description><![CDATA[题意：harry要去抢银行，他要在被捕率低于p的情况下抢到最多的钱给出n个银行的钱和被捕的概率。思路：看出了是个01背包，不过概率的01背包还是第一次遇到。dp[j]为抢j的钱时不会被捕的概率dp[j] = max(dp[j],dp[j-m[i]]*(1-p[i]));#include &amp;lt;iostream&amp;gt;
#include &amp;lt;algorithm&amp;gt;
#include &amp;lt...]]></description><category></category></item><item><title><![CDATA[Poj 3734（矩阵快速幂）]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/79871495</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/79871495</guid><author>Avalon_cc</author><pubDate>Mon, 09 Apr 2018 19:52:08 +0800</pubDate><description><![CDATA[题意：给定N个方块排成一列，现在要用红，蓝，绿，黄，四种颜色的油漆给这些方块染色。求染成红色的方块数和染成绿色的方块数同时为偶数的染色方案的个数。输出对10007取膜；思路：我们试着从左往右染色，设染到第i块为止，红绿色都为偶数的方案数位ai，红绿色恰有一个为偶数的方案数为bi，红绿色全为奇数的方案数位ci；这样染到第i+1块，红绿色都为偶数的有如下两种方案：1.到第i为止红绿都是偶数，第i+1个...]]></description><category></category></item><item><title><![CDATA[Gym 101606F Flipping Coins(概率dp)]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/79869948</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/79869948</guid><author>Avalon_cc</author><pubDate>Mon, 09 Apr 2018 17:44:40 +0800</pubDate><description><![CDATA[题意：给n枚硬币，初始全部反面向上，有k次机会挑选一枚硬币抛，求正面向上的最大数学期望。思路：求的是最大数学期望，所以只有两种情况。1.i&amp;lt;n时，挑选反面向上的硬币抛，朝上朝下的概率都为0.5；2.i==n时，这时全部都是反面朝上，挑选一枚硬币抛，朝上朝下的概率都为0.5；这样就可以得出dp方程；dp[i][j]表示第i次抛，有j枚硬币朝上。i&amp;lt;n时，dp[i+1][j] += dp[...]]></description><category></category></item><item><title><![CDATA[Gym 100623J Just To Lucky(数位dp)]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/79868760</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/79868760</guid><author>Avalon_cc</author><pubDate>Mon, 09 Apr 2018 16:46:10 +0800</pubDate><description><![CDATA[题意：1-n中有多少个数满足本身能被各个数位的和整除；思路：n是10的12次方，很快就能想到是数位dp，当时没板子，忘了数位dp怎么敲了，后来看了下题解，还是挺裸的数位dp。dp[pos][sum][remain][mod];pos:代表当前数位sum:各数位之和remain:当前枚举的数mod:枚举的膜9*12=108，所以只要枚举1-108即可；#include &amp;lt;iostream&amp;gt...]]></description><category></category></item><item><title><![CDATA[Zoj 3344 （第一类斯特林数）附第二类斯特林数和Bell数的总结]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/79786323</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/79786323</guid><author>Avalon_cc</author><pubDate>Mon, 02 Apr 2018 11:30:25 +0800</pubDate><description><![CDATA[题意：有个游戏，两个人玩。有n个卡片，洗牌后放入编号为1到n的盒子里，然后两个人轮流做如下操作，拿出盒子中编号最小的卡片k，然后再去编号为k的盒子中拿出卡片，依次类推，直到没有卡片可拿为止。拿走最后一张卡片的玩家获胜。求先手能够在K次操作以内获胜的概率，（以分数形式输出）思路：就是一个第一类斯特林数，然而并不会斯特林数，学习了一波，先上代码，下面是对第一第二类斯特林数，还有Bell数的总结。这题要...]]></description><category></category></item><item><title><![CDATA[UVa 1218 (树形dp)]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/79785339</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/79785339</guid><author>Avalon_cc</author><pubDate>Mon, 02 Apr 2018 10:28:54 +0800</pubDate><description><![CDATA[很久之前做的题，今天又做到了，顺手来补一下题解。。。题意：有n台电脑，互相以无根树的方式连接。现在将其中一些电脑作为服务器，且要求每台电脑有且必须连接一台服务器。（不包括本身是服务器的电脑），问需要多少台电脑作为服务器。思路：设u是父亲，v是u的孩子。d(u,0):u本身是服务器；d(u,1):u不是服务器，u的父亲是服务器。d(u,2):u不是服务器，u的父亲不是服务器，u的孩子必须有且只有一个...]]></description><category></category></item><item><title><![CDATA[hdu 4370（最短路）]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/79661307</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/79661307</guid><author>Avalon_cc</author><pubDate>Thu, 22 Mar 2018 23:11:17 +0800</pubDate><description><![CDATA[题意：给了一个n*n的矩阵，我们需要构造另一个矩阵满足以下要求1.X 12+X 13+...X 1n=1 2.X 1n+X 2n+...X n-1n=1 3.for each i (1&amp;lt;i&amp;lt;n), satisfies ∑X ki (1&amp;lt;=k&amp;lt;=n)=∑X ij (1&amp;lt;=j&amp;lt;=n). For example, if n=4,we can get the follo...]]></description><category></category></item><item><title><![CDATA[poj 1502 (最短路)]]></title><link>https://blog.youkuaiyun.com/Avalon_cc/article/details/79660860</link><guid>https://blog.youkuaiyun.com/Avalon_cc/article/details/79660860</guid><author>Avalon_cc</author><pubDate>Thu, 22 Mar 2018 22:16:35 +0800</pubDate><description><![CDATA[题意：给n个点，边的关系呈一下下三角的形状给出，求第一个处理器到其他处理器最短的时间思路：裸的最短路，直接用Dijkstra即可#include &amp;lt;iostream&amp;gt;
#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;algorithm&amp;gt;
#include &amp;lt;cstring&amp;gt;
#include &amp;lt;queue&amp;gt;

using name...]]></description><category></category></item></channel></rss>