<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ACVevtor的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ACVector</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ACVector]]></copyright><item><title><![CDATA[hdu5730   Shell Necklace]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78268635</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78268635</guid><author>ACVector</author><pubDate>Wed, 18 Oct 2017 00:48:21 +0800</pubDate><description><![CDATA[题目：一段长为i的项链有a[i]种表达爱意的装饰方法，问长度为n的项链有多少种用上述方式组成的方法。
思路：dp[i]=∑dp[j]*a[i-j],(1
要用fft+CDQ分治
代码：
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#include
#include
#include
#i]]></description><category></category></item><item><title><![CDATA[ACdream - 1157   Segments]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78268470</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78268470</guid><author>ACVector</author><pubDate>Tue, 17 Oct 2017 23:55:13 +0800</pubDate><description><![CDATA[题目：
由3钟类型操作：
1）D L R(1 
2）C i (1-base) 删除第i条增加的线段，保证每条插入线段最多插入一次，且这次删除操作一定合法
3) Q L R(1 
给出N，接下来N行，每行是3种类型之一

思路：时间为第一位分治，然后用左区间去更新右区间
代码：
#pragma comment(linker, "/STACK:1024000000,102400000]]></description><category></category></item><item><title><![CDATA[bzoj2726 任务安排]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78263360</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78263360</guid><author>ACVector</author><pubDate>Tue, 17 Oct 2017 17:50:41 +0800</pubDate><description><![CDATA[题目：
机器上有N个需要处理的任务，它们构成了一个序列。这些任务被标号为1到N，因此序列的排列为1,2,3...N。这N个任务被分成若干批，每批包含相邻的若干任务。从时刻0开始，这些任务被分批加工，第i个任务单独完成所需的时间是Ti。在每批任务开始前，机器需要启动时间S，而完成这批任务所需的时间是各个任务需要时间的总和。注意，同一批任务将在同一时刻完成。每个任务的费用是它的完成时刻乘以一个费用系]]></description><category></category></item><item><title><![CDATA[hdu5977  Garden of Eden]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78254633</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78254633</guid><author>ACVector</author><pubDate>Mon, 16 Oct 2017 21:25:47 +0800</pubDate><description><![CDATA[题目：点击打开链接
给你一棵n个节点的树，一共有k种颜色，每个节点有一种颜色，求a到b的路径中经过了所有颜色的路径的对数，(a,b)和(b,a)都要算
思路：树分治+状态压缩+枚举子集
代码：
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#include
#include
#includ]]></description><category></category></item><item><title><![CDATA[bzoj1492  货币兑换Cash]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78254558</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78254558</guid><author>ACVector</author><pubDate>Mon, 16 Oct 2017 21:19:41 +0800</pubDate><description><![CDATA[题目：点击打开链接
思路：
令f[i]表示第i天的最大获利，fx[i]表示在第i天最多拥有几张A券，fy[i]表示对应的B券，那么
f[i]=max{fx[j]*a[i]+fy[j]*b[i]}。另外，有fy[i]=f[i]/(a[i]*rate[i]+b[i]) fx[i]=fy[i]*rate[i]。
令fx[j]
 fx[j]*a[i]+fy[j]*b[i]-a[i]/b[i]。令]]></description><category></category></item><item><title><![CDATA[bzoj3110 K大数查询]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78209882</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78209882</guid><author>ACVector</author><pubDate>Wed, 11 Oct 2017 23:46:32 +0800</pubDate><description><![CDATA[题目：有N个位置，M个操作。操作有两种，每次操作如果是1 a b c的形式表示在第a个位置到第b个位置，每个位置加入一个数c
如果是2 a b c形式，表示询问从第a个位置到第b个位置，第C大的数是多少。
N
M
思路：二分答案，要用到树状数组区间更新
代码：
#pragma comment(linker, "/STACK:1024000000,1024000000")
#includ]]></description><category></category></item><item><title><![CDATA[HDU - 5618  Jam's problem again]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78187903</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78187903</guid><author>ACVector</author><pubDate>Mon, 09 Oct 2017 23:19:10 +0800</pubDate><description><![CDATA[题目：给你n个点(x,y,z)，让你输出对于每个点(xi,yi,zi)满足xj
思路：先按照x排序，然后做分治的时候针对y排序，这样会漏掉相等的点对其左边的点的影响，做一下预处理即可
代码：
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#include
#include
#include
]]></description><category></category></item><item><title><![CDATA[bzoj3295  动态逆序对]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78178428</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78178428</guid><author>ACVector</author><pubDate>Sun, 08 Oct 2017 23:11:47 +0800</pubDate><description><![CDATA[题目：对于序列A，它的逆序对数定义为满足iAj的数对(i,j)的个数。给1到n的一个排列，按照某种顺序依次删除m个元素，你的任务是在每次删除一个元素之前统计整个序列的逆序对数。
思路：如果倒着看的话，就变成了插入操作，第一个删除的数使最后一个插入的数，我们用来表示每个插入操作，x表示插入位置，y表示插入的数，t表示插入的时间，对时间进行二分操作，每次保证左边区间的时间都小于右边区间的时间，并且每]]></description><category></category></item><item><title><![CDATA[POJ - 2104   K-th Number]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78175527</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78175527</guid><author>ACVector</author><pubDate>Sun, 08 Oct 2017 16:10:10 +0800</pubDate><description><![CDATA[题目：给你一个n个数的序列，m个询问，每次询问为i,j,k，问区间[i,j]中的数按升序排序后，第k个数是什么
思路：CDQ分治，整体二分答案
代码：
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#include
#include
#include
#include
#include
#i]]></description><category></category></item><item><title><![CDATA[HDU - 2829 Lawrence]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78167859</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78167859</guid><author>ACVector</author><pubDate>Sat, 07 Oct 2017 00:28:18 +0800</pubDate><description><![CDATA[题目：将一个序列分成m+1段，每段的价值定义为任意两个数的乘积之和，求总的最小价值
思路：
cost[i][j]表示i到j成为一段的价值
设dp[i][j]表示前j个数分成i段的最小价值
dp[i][j]=min{dp[i-1][k]+cost[k+1][j]}
cost[1][i]=cost[1][k]+cost[k+1][i]+sum[k]*(sum[i]-sum[k])
将cos]]></description><category></category></item><item><title><![CDATA[HDU - 3480  Division]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78166299</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78166299</guid><author>ACVector</author><pubDate>Fri, 06 Oct 2017 17:57:15 +0800</pubDate><description><![CDATA[题目：给你n个数，将其分为m组，每组的价值定义为最大值与最小值的差值的平方，求总价值最小
思路：
首先将n个数从小到大排序。
然后设 dp[i][j]表示前j个数分成i组的最小花费。
则 dp[i][j]=min{dp[i-1][k]+(a[j]-a[k+1])^2}  0
利用斜率优化DP，整理下就可以出来了。

代码：
#pragma comment(linker, "/STA]]></description><category></category></item><item><title><![CDATA[HDU - 3045  Picnic Cows]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78163229</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78163229</guid><author>ACVector</author><pubDate>Thu, 05 Oct 2017 22:24:40 +0800</pubDate><description><![CDATA[题目：有n个数，要分成若干组，每组至少L个数，每组的价值定义为每个数减去该组数的最小值的和，求各组数的价值和的最小值
思路：
先对序列arr按从小到大排序，求出前缀和
设dp[i]表示前i个数的合法分组的最小值
dp[i]=min{dp[j]+sum[i]-sum[j]-arr[j+1]*(i-j)}，j
然后就是斜率优化了
代码：
#pragma comment(linker, "]]></description><category></category></item><item><title><![CDATA[HDU - 3507   Print Article]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78161787</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78161787</guid><author>ACVector</author><pubDate>Thu, 05 Oct 2017 16:37:17 +0800</pubDate><description><![CDATA[题目：要输出序列a[n]，每连续输出一段连续子序列的费用是连续输出的数字和的平方加上常数M，让我们求总 费用的最小值。
思路：
参考：http://www.cnblogs.com/kuangbin/archive/2012/08/26/2657650.html
设dp[i]表示输出前i个的最小费用，那么有如下的DP方程：
dp[i]= min{ dp[j]+(sum[i]-sum[j])^]]></description><category></category></item><item><title><![CDATA[HDU - 1538  A Puzzle for Pirates   海盗分金]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78154666</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78154666</guid><author>ACVector</author><pubDate>Tue, 03 Oct 2017 14:23:25 +0800</pubDate><description><![CDATA[题目：有n个海盗，分m块金子，其中他们会按一定的顺序提出自己的分配方案，如果50%以上的人赞成，则方案通过，开始分金子，如果不通过，则把提出方案的扔到海里，下一个人继续。从第n个人开始决策，问第p个人能分多少金子，或是被扔到海里
思路：
参考http://blog.youkuaiyun.com/acm_cxlove/article/details/7853916  的博客做出来的，写的很详细
代码：
]]></description><category></category></item><item><title><![CDATA[POJ - 3317  Stake Your Claim  极大极小搜索+alpha-beta剪枝+记忆化搜索]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78153061</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78153061</guid><author>ACVector</author><pubDate>Mon, 02 Oct 2017 22:47:45 +0800</pubDate><description><![CDATA[题目：给出一个n*n包含0或1或.的矩阵，两个依次找一个空格子，放入0和1，最终看连通0多还是连通的1多，得分是一个选手的最大连通数减去另一个选手的。问当前局面的操作者能够得的最大的分数，及最大分数下最小字典序的操作。
思路：有的说alpha-beta剪枝和记忆化搜索不能一起使用，有的说只要把参数记下来就可以一起用  
代码：
#pragma comment(linker, "/STACK:]]></description><category></category></item><item><title><![CDATA[POJ - 1568  Find the Winning Move   极小极大搜索+alpha-beta剪枝]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78151287</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78151287</guid><author>ACVector</author><pubDate>Mon, 02 Oct 2017 15:44:58 +0800</pubDate><description><![CDATA[题目：在一个4*4的格子里面，x和o两个人玩游戏，x画'x'，o画'o'，x先手，给定x和o都已经画了一定步数的局面，问x是不是必胜的，如果是，输出他应该画在哪个位置
思路：极小极大搜索+alpha-beta剪枝
代码：
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#include
#in]]></description><category></category></item><item><title><![CDATA[POJ - 1085  Triangle War   极小极大搜索+alpha-beta剪枝]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78149364</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78149364</guid><author>ACVector</author><pubDate>Sun, 01 Oct 2017 23:10:23 +0800</pubDate><description><![CDATA[题目：有一个这样的图形


一共10个顶点，有A，B两个玩家，A先手，每次每个玩家可以选择连接2个相邻但是没连接的顶点，构成的三角形属于当前操作者，并且可以额外再操作一次，谁拥有的三角形数目多谁胜。给出前面的一些操作，问你是A胜还是B胜
思路：极小极大搜索+alpha-beta剪枝
给两个相邻顶点的边编个号，一共有18条边分别编号为0~17，9个三角形，可以用三角形的三条边的二进制和表示]]></description><category></category></item><item><title><![CDATA[ZOJ - 1039   Number Game   状态压缩]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78145830</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78145830</guid><author>ACVector</author><pubDate>Sat, 30 Sep 2017 23:14:47 +0800</pubDate><description><![CDATA[题目：2-20这19个数字的游戏。每取走一个数之后，这个数的倍数便不能再取，而且某两个取过的数的倍数的和，也不能再取。给出当前可取数字的状态，问当前状态是不是先手必胜状态。如果是，输出取法
思路：利用NP状态定理和状态压缩做。
代码：
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#incl]]></description><category></category></item><item><title><![CDATA[ZOJ - 3057  Beans Game   NP状态定理]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78143654</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78143654</guid><author>ACVector</author><pubDate>Sat, 30 Sep 2017 16:15:02 +0800</pubDate><description><![CDATA[题目：有3堆石子，分别有a,b,c个石子，两个游戏者轮流操作，每次可以选择取走某一堆x个石子，或选择某2堆石子在2堆石子中取走相同数目的石子。问先手必胜（输出1），还是先手必败（输出0）。
思路：利用NP状态定理，把所有状态预处理出来
代码：
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include
#include
#]]></description><category></category></item><item><title><![CDATA[ZOJ - 3591  Nim]]></title><link>https://blog.youkuaiyun.com/ACVector/article/details/78142443</link><guid>https://blog.youkuaiyun.com/ACVector/article/details/78142443</guid><author>ACVector</author><pubDate>Sat, 30 Sep 2017 14:30:54 +0800</pubDate><description><![CDATA[题目：给你N,S,W，让你按照以下代码造出序列arr[i]，
int g=S;
        for(int i=0;i
            arr[i]=g;
            if(arr[i]==0)
                arr[i]=g=W;
            if(g%2==0)
                g=g/2;
        ]]></description><category></category></item></channel></rss>