<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[喵 喵 喵~]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jay__bryant</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jay__bryant]]></copyright><item><title><![CDATA[POJ2954 Triangle pick定理]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/83721893</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/83721893</guid><author>jay__bryant</author><pubDate>Sun, 04 Nov 2018 22:59:39 +0800</pubDate><description><![CDATA[题意：
在平面直角坐标系中给定三角形的三个点的坐标(整数)，求该三角形内部的整点的数量
pick定理：
在平面直角坐标系中，以整点为顶点的简单多边形，其中内部整点数为a，边上（包括顶点）的整点数为b，则面积为S = a+b/2-1
point
一条端点为整点的线段上的整点的个数求法
代码
#include &amp;amp;amp;lt;cstdio&amp;amp;amp;gt;
#include &amp;amp;amp;lt;cmath&amp;amp;amp;gt;

using]]></description><category></category></item><item><title><![CDATA[201712-4 CCF 行车路线 堆优化dijkstra]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/82709850</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/82709850</guid><author>jay__bryant</author><pubDate>Fri, 14 Sep 2018 23:07:52 +0800</pubDate><description><![CDATA[维护一个sum[]：最短路径中以i结尾的连续小路的长度和

#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;queue&amp;gt;
#include &amp;lt;cstring&amp;gt;

using namespace std;
typedef long long ll;
const ll INF = 1e18;
const int N = 510;
const int M = ...]]></description><category></category></item><item><title><![CDATA[2018 徐州网络赛 H.Ryuji doesn't want to study 线段树]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/82563391</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/82563391</guid><author>jay__bryant</author><pubDate>Sun, 09 Sep 2018 22:34:24 +0800</pubDate><description><![CDATA[题意：有n本书和q次询问(n,q&amp;lt;=1e5)，给定n本书的知识值ai。询问1：i，j，区间[i, j]的价值。询问2：a, b，将第a本书的知识值改为b。PS：[i, j]的价值计算，a[i]xL+a[i+1]x(L-1)+…+a[j-1]x2+a[j]，L==j-i+1。

线段树维护三个东西 
sum[]：单纯的知识值的和 
ans[]：价值 
len[]：区间长度



#includ...]]></description><category></category></item><item><title><![CDATA[CCF 201803-4 棋局评估 极大极小搜索]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/82502119</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/82502119</guid><author>jay__bryant</author><pubDate>Fri, 07 Sep 2018 20:20:21 +0800</pubDate><description><![CDATA[题意：3X3的井字棋，1先走，2后走，给定一个状态。当前轮到1走，1，2都按照最优策略行棋，求最后的分数。

#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;algorithm&amp;gt;

using namespace std;
const int INF = 100;
int a[10];

int check()
{
    int cnt = 0;
    for(...]]></description><category></category></item><item><title><![CDATA[hdu5693 区间dp]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/82430732</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/82430732</guid><author>jay__bryant</author><pubDate>Wed, 05 Sep 2018 21:03:09 +0800</pubDate><description><![CDATA[题意：给定n个数ai，再给定m个公差di。每次从ai中选择连续的x个数(x&amp;gt;=2)，若这x个数构成等差数列且公差在bi中存在，则可以删去这x个数。求最多可以删去多少数

dp[i][j]：i~j最多可以删去多少数 
初始化j-i==1和j-i==2的情况。 
判断端点转移即可

#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;map&amp;gt;
#include &amp;lt...]]></description><category></category></item><item><title><![CDATA[HDU - 5115 经典区间dp]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/82427082</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/82427082</guid><author>jay__bryant</author><pubDate>Wed, 05 Sep 2018 17:05:34 +0800</pubDate><description><![CDATA[题意：给定n个狼的攻击值ai和附加攻击值bi，每杀死一匹狼i，受到的伤害等于i的攻击值和与i相邻的狼的附加攻击值。求杀死所有的狼受到的伤害的最小值。

dp[i][j]：杀死区间i~j的狼受到伤害的最小值。 
初始化： 
a[0]=a[n+1]=b[0]=b[n+1]=0; 
for(int i = 1; i &amp;lt;= n; ++i) 
    dp[i][i] = a[i]+b[i-1]+b[...]]></description><category></category></item><item><title><![CDATA[POJ - 3042 区间dp 左端点右端点01]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/82356319</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/82356319</guid><author>jay__bryant</author><pubDate>Mon, 03 Sep 2018 22:49:43 +0800</pubDate><description><![CDATA[题意：在一维坐标系下，给定n个草坪的坐标(1&amp;lt;=n&amp;lt;=1000)，再给定起点L(1&amp;lt;=L&amp;lt;=1e6)。每个草坪有一个staleness值，初始化为0。每次走一格，所有的staleness值+1，并且要从起点遍历每一个草坪，求staleness值的最小值。

离散化处理n个点 
dp[i][j][0]:区间[i, j]已经遍历完，目前在i点时，staleness的最小值。 
...]]></description><category></category></item><item><title><![CDATA[poj2492 带权并查集 三种解法]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/82314013</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/82314013</guid><author>jay__bryant</author><pubDate>Sun, 02 Sep 2018 11:27:52 +0800</pubDate><description><![CDATA[题意：给定n个昆虫和m个判断x, y，表示x和y是异性。求判断是否错误。

法一：带权并查集



#include &amp;lt;cstdio&amp;gt;

using namespace std;
const int N = 2010;
int fa[N],relation[N];//0:相同，1不同
int n, m;

int findf(int x)
{
    if(x != fa[x])
  ...]]></description><category></category></item><item><title><![CDATA[poj2226 二分图经典建图求最小点覆盖]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/82263252</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/82263252</guid><author>jay__bryant</author><pubDate>Fri, 31 Aug 2018 23:15:59 +0800</pubDate><description><![CDATA[题意：：给出一个N行M列的图，’*’代表稀泥，’.’代表草地，现在要用一些木板把所有的稀泥盖住，但是不能盖住草地。一张木板只能盖住一行或者一列中的一部分，求至少要用多少木板把所有的稀泥盖住。

把横向连续的点压在一起作为L，把列向连续的点压在一起作为R，如果两者有交集，就从L到R连一条边。求最小点覆盖(==最大匹配数)

#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;c...]]></description><category></category></item><item><title><![CDATA[hdu1054 二分匹配求树的最小点覆盖(无向图)]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/82262880</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/82262880</guid><author>jay__bryant</author><pubDate>Fri, 31 Aug 2018 22:29:31 +0800</pubDate><description><![CDATA[题意：给定一颗无向树，求最小点覆盖。

连通的有向图的情况，将点集copy到L和R集合，建一个二分图，由L集合的点向R集合连一条有向边，这该二分图的最大匹配数就等于最小点覆盖数。连边如(0, 1)，则只连L0-&amp;gt;R1

本题无向图的连边如(0, 1)，则要连L0-&amp;gt;R1和L1-&amp;gt;R0，最小点覆盖数==最大匹配数/2



#include &amp;lt;cstdio&amp;gt;
#incl...]]></description><category></category></item><item><title><![CDATA[hdu1083 二分图最大匹配模板]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/82262094</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/82262094</guid><author>jay__bryant</author><pubDate>Fri, 31 Aug 2018 21:16:03 +0800</pubDate><description><![CDATA[增广路的性质 
转自https://blog.youkuaiyun.com/ACdreamers/article/details/8621130

(1)有奇数条边。 
(2)起点在二分图的左半边，终点在右半边。 
(3)路径上的点一定是一个在左半边，一个在右半边，交替出现。 
(4)整条路径上没有重复的点。 
(5)起点和终点都是目前还没有配对的点，而其它所有点都是已经配好对的。 
(6)路径上的所有第奇数...]]></description><category></category></item><item><title><![CDATA[UVALive8138 - Number Generator 概率dp]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/82154591</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/82154591</guid><author>jay__bryant</author><pubDate>Tue, 28 Aug 2018 21:09:17 +0800</pubDate><description><![CDATA[题意：数字生成器随机生成n种数(1~n),(1&amp;lt;=n&amp;lt;=3000)，已经成了k个数，再给出已经生成的k个数。求使得1~n都至少出现2次，还需要生成次数的期望。有t组数据(1&amp;lt;=t&amp;lt;=1e5)

朴素做法，dp[i][j]：已经由i个数出现了1次，j个数出现了2次，达到目标状态需要的期望。 
复杂度O(n*n*t)，tle。 
船新思路，将状态设置为与n无关，则只需要一遍n*...]]></description><category></category></item><item><title><![CDATA[2017-2018 Northwestern European Regional Contest (NWERC 2017) G Glyph Recognition]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/82120656</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/82120656</guid><author>jay__bryant</author><pubDate>Mon, 27 Aug 2018 23:13:42 +0800</pubDate><description><![CDATA[题意：有6种正多边形(边数为3~8)。给出n个点，求选择哪种正多边形(中心在原点，在x正半轴有一个点)，n个点全部在out多边形的外部，全部在in多边形的内部，使得area(out)/area(in)最大。

枚举多边形的种类，二分半径更新答案 
平面几何，版子多才是王道

#include &amp;amp;lt;cstdio&amp;amp;gt;
#include &amp;amp;lt;cmath&amp;amp;gt;

using namespac...]]></description><category></category></item><item><title><![CDATA[2017-2018 ACM-ICPC Southeastern European(SEERC 2017) A concerts]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/82083286</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/82083286</guid><author>jay__bryant</author><pubDate>Sun, 26 Aug 2018 19:07:19 +0800</pubDate><description><![CDATA[题目大意：字符串只由A~Z组成，给定s字符串长度k(k&amp;amp;lt;=300)，p字符串长度是n(&amp;amp;lt;=1e5)，再给定字母A~Z匹配成功后需要间隔的次数a[27]，再给出字符串s, p。求s匹配p的方案数

dp[i][j]:匹配到i位置时已经匹配了j个的方案数。 
(1) s[j]==p[i]：dp[i][j] = dp[i-1][j] + dp[i-a[id]-1][j-1]; 
(2) s[...]]></description><category></category></item><item><title><![CDATA[poj1015 01背包+输出路径]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/82023753</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/82023753</guid><author>jay__bryant</author><pubDate>Fri, 24 Aug 2018 18:22:28 +0800</pubDate><description><![CDATA[题意：给定人数n(1&amp;lt;=n&amp;lt;=200)，每个人有一个a, b。(0&amp;lt;=a&amp;lt;=b)，从中选择m个人，使得|sigma(a)-sigma(b)|最小，若相等则sigma(a)+sigma(b)最大。求最优策略的sigma(a)，sigma(b)和选择的人的编号

dp[i][j]：选择了i个人，|sigma(a)-sigma(b)|==j时sigma(a)+sigma(b)最大...]]></description><category></category></item><item><title><![CDATA[poj2135 最小费用最大流入门题]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/81811521</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/81811521</guid><author>jay__bryant</author><pubDate>Sat, 18 Aug 2018 18:20:01 +0800</pubDate><description><![CDATA[题意：给定n个点(编号1~n)，有m条无向边。再给出m条边的信息，起点，终点和距离。现在从1走到n，再从n走回1，没条边只能走一次，求这样走的最短路径。

将边权作为费用，流量为1(每条边只能走一次)。再新建一个源点s，s到1有一条指向1的有向边，边权为0，流量为2，再建一个汇点t，有一条从n指向t的有向边，边权为0，流量为2。建图完毕，跑费用流

最小费用：距离最短，最大流==2(来回)。 
(...]]></description><category></category></item><item><title><![CDATA[hdu4848 dfs+剪枝]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/81807428</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/81807428</guid><author>jay__bryant</author><pubDate>Sat, 18 Aug 2018 11:59:44 +0800</pubDate><description><![CDATA[题意：给定n个星球(编号1~n, n&amp;lt;=30)，和从每个星球到达每个星球的时间，再给定到达每个星球的截止时间。从星球1出发，遍历2~n个星球，求每个星球的到达时间的总和。PS：每个星球可能不止经过一次！！！

dis[i][j]:i到j的最短距离，由floyd预处理 
time[i]：到达i星球的时间，初始化-1。ans = sigma(time[i]) (2&amp;lt;=i&amp;lt;=n) 
剪...]]></description><category></category></item><item><title><![CDATA[POJ 2096 Collecting Bugs 概率dp+期望]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/81745477</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/81745477</guid><author>jay__bryant</author><pubDate>Thu, 16 Aug 2018 17:15:59 +0800</pubDate><description><![CDATA[题目大意：bug由有s个子系统产生，属于n种分类。且由每个子系统产生的概率是1/s，属于某种分类的概率是1/n。每天发现一个bug，求每个子系统都产生了bug且n种bug都有的期望天数。

概率dp的状态设置都挺套路：当前状态是…且要达到目标状态的期望值 
dp[i][j]：当前状态是已有i种分类，j个子系统产生了bug。 
边界：dp[n][s] = 0。 
dp[0][0]为所求 
状态转移：...]]></description><category></category></item><item><title><![CDATA[hdu5025 bfs迷宫找最短路径 模范题]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/81712269</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/81712269</guid><author>jay__bryant</author><pubDate>Wed, 15 Aug 2018 22:19:04 +0800</pubDate><description><![CDATA[题目大意：给定n*n的网络，起点K，终点T，S表示蛇(最多5条，且经过S时，若蛇是活的则时间+1)，数字代表钥匙编号(最多m把且必须按照顺序取)，每次移动时间+1，求集齐所有钥匙到达终点的最短时间

bfs迷宫搜索。 
vis记录状态：行，列，蛇是否存活，钥匙的集齐情况。每个状态只被入队一次。



#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;queue&amp;gt;
#i...]]></description><category></category></item><item><title><![CDATA[poj1258 Number String dp最重要的是思维]]></title><link>https://blog.youkuaiyun.com/jay__bryant/article/details/81637721</link><guid>https://blog.youkuaiyun.com/jay__bryant/article/details/81637721</guid><author>jay__bryant</author><pubDate>Mon, 13 Aug 2018 21:43:31 +0800</pubDate><description><![CDATA[题目大意：给定一字符串，如果第i个字符是’I’则第i+1个数比第i个数大，如果是‘D’，则反之。如果是‘?’则可大可小。求满足条件的1~n的排列有多少个。

dp：原问题→子问题→状态→转移→边界 
dp[i][j]：以j结尾的1~i的排列的答案。 
状态转移： 
①s[i-1]==’I’，dp[i][j] = ∑dp[i-1][k] (1&amp;lt;=k&amp;lt;=j-1) 
②s[i-1]==’D’...]]></description><category></category></item></channel></rss>