<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[最爱她！]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lovejava123qqq</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lovejava123qqq]]></copyright><item><title><![CDATA[uva 10599 - Robots(II) -动态规划]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/49407337</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/49407337</guid><author>lovejava123qqq</author><pubDate>Sun, 25 Oct 2015 21:58:13 +0800</pubDate><description><![CDATA[//
//  main.cpp
//  uva 10599 - Robots(II) --动态规划
/*
此题的状态转移方程好想，很简单。
 d[i][j] = max(d[i+1][j] ,d[i][j+1]) + g[i][j]  ; 
 另外 求其中的一条路径也好写。
 对于方案数，这是难点啊。MD，原来 即使行代码就解决的，价格方案数。。。。。
 这里方案数，要注意的是注意重复，不能根据上]]></description><category></category></item><item><title><![CDATA[hdu 2577 How to Type--记忆化搜索]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/49338747</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/49338747</guid><author>lovejava123qqq</author><pubDate>Thu, 22 Oct 2015 20:57:23 +0800</pubDate><description><![CDATA[题目意思不难理解。注意点就是  caslock开启后 安shift+字母键可写出小写。
这里主要就是 在何时开启caslock键和关闭caslock键。
所以我们设  d[i][caslock]表示 caslock键在第i个字符时的状态是caslock(未开启为0，开启为1)时，打完后序字符所需要的按键次数。
则根据当前是否是 小写字母 和打完之后是否关闭caslock键来决定状态的转移。转]]></description><category></category></item><item><title><![CDATA[uva 1336 - Fixing the Great Wall]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/49027297</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/49027297</guid><author>lovejava123qqq</author><pubDate>Sat, 10 Oct 2015 17:57:48 +0800</pubDate><description><![CDATA[//
//  main.cpp
//  uva 1336 - Fixing the Great Wall

/*
 我们先按位置大小排序。
 首先我们注意到:
 对于 i ....x.....j,x表示现在的机器人的位置。
 如果x现在在修复了i,那么位于x和i之间的所有位置都是已经修复好的了，因为我们当前已经到了i，那么我们就可以顺便修复了x和i之间的位置，这绝对不会增加最终的总费用。所以得出了]]></description><category></category></item><item><title><![CDATA[uva 10118 - Free Candies-动态规划]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48956863</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48956863</guid><author>lovejava123qqq</author><pubDate>Wed, 07 Oct 2015 23:22:54 +0800</pubDate><description><![CDATA[//
//  main.cpp
//  uva 10118 - Free Candies-动态规划
/*
 这一题是多阶段决策问题.另外注意的就是状态压缩。即使用二进制表示当前的pocket具有的糖果的颜色。
 在每一步选择哪一个管道决定了下一步。
 我们设d[i][j][k][l] 表示依次从第一，第二个管道，第三个管道，第四个管道，当前已经到达的位置，剩下可以获得的candies对数。
 这里]]></description><category></category></item><item><title><![CDATA[uva  1220 - Party at Hali-Bula]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48883025</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48883025</guid><author>lovejava123qqq</author><pubDate>Sat, 03 Oct 2015 23:52:05 +0800</pubDate><description><![CDATA[//uva  1220 - Party at Hali-Bula

/*
 赤裸裸的树的最大独立集
 对于以i为根的子树，其最大独立集为 d[i].
 则有 d[i] = max(sum(d[j]),sum(d[k]) +1 ) . 其中d[j]表示 d[i]的儿子节点最大独立集.d[k]表示d[i]的孙子节点的最大独立集。
 在这里我们可以使用递归的方法来求得这个d数组。使用flag标记当取得最]]></description><category></category></item><item><title><![CDATA[uva 12186 - Another Crisis-树上动态规划]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48878717</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48878717</guid><author>lovejava123qqq</author><pubDate>Sat, 03 Oct 2015 16:08:15 +0800</pubDate><description><![CDATA[//  uva 12186 - Another Crisis-树上动态规划
/*
 典型的树形动态规划问题：
 此题题目意思很简单，也很好想到解法，但是就是写程序需要注意。
 设d[i]表示以节点i为向上级提交申请需要工人签字的人数。
 那么对于节点i,d[i] 是节点i子节点  d[j]集合的最小的前c个值，c为满足直属下属签字率至少为T时签字的人数。
 在计算时我们采用了递归的方式。还有就是这]]></description><category></category></item><item><title><![CDATA[uva   1626 - Brackets sequence]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48850441</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48850441</guid><author>lovejava123qqq</author><pubDate>Thu, 01 Oct 2015 22:50:34 +0800</pubDate><description><![CDATA[//
//  main.cpp
//  uva   1626 - Brackets sequence


/*
 这一题应该是经典的矩阵类似问题。
 显然 需要使用两个变量来表示最终的结果。
 设 dp[i][j]表示第i个位置到第j个位置变成合法形式需要添加的字符数。
 注意题目中的合法形式，1-->（A），2-->[A] , 3-->AB 。三种。
 这里  1.如果形式1或者2.则有  dp]]></description><category></category></item><item><title><![CDATA[uva 11400 - Lighting System Design]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48830841</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48830841</guid><author>lovejava123qqq</author><pubDate>Wed, 30 Sep 2015 17:33:40 +0800</pubDate><description><![CDATA[//  uva 11400 - Lighting System Design
/*
  照明系统设计
  使用四个变量标记一个 灯泡
  电压V ， 电源价格K  ， 灯泡价格C， 灯泡数量L
  首先应该想到:替换时要不全部替换，要不就是不替换。
  假设 i比j单价大，那么使用i替换j的话 ，如果只替换一部分，则单价价格肯定会高，当全部替换时j中的电源的价格与替换后单价增加的cost会抵消(到]]></description><category></category></item><item><title><![CDATA[uva 1025 - A Spy in the Metro]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48805293</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48805293</guid><author>lovejava123qqq</author><pubDate>Tue, 29 Sep 2015 12:38:36 +0800</pubDate><description><![CDATA[//  uva 1025 - A Spy in the Metro
/*此题题意不难。
 注意到其中有个时间，这个是一个天然的序。还有就是在时间t时所在的位置。这两个因素影响最终的答案。
 因此我们使用二个变量i,j。设dp[i][j]表示在时间i，所处车站为j等待的最少时间，那么最终的答案就是
 dp[T][n]。这样设了之后，dp[i][j] = min{dp[i-1][j] ,dp[i-1]]]></description><category></category></item><item><title><![CDATA[hdu 1231&1003 -最大连续子序列-动态规划]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48733789</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48733789</guid><author>lovejava123qqq</author><pubDate>Fri, 25 Sep 2015 15:28:32 +0800</pubDate><description><![CDATA[hdu 1231&1003 MAX SUM]]></description><category></category></item><item><title><![CDATA[后缀数组代码详解]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48708063</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48708063</guid><author>lovejava123qqq</author><pubDate>Thu, 24 Sep 2015 10:50:45 +0800</pubDate><description><![CDATA[//
//  main.cpp
//  后缀数组模板详解
//
//  Created by XD on 15/9/24.
//  Copyright © 2015年 XD. All rights reserved.
//

#include 
using namespace std ;
const int maxn = 10000 ;
int s[maxn] ;
int sa[maxn],t1[]]></description><category></category></item><item><title><![CDATA[hdu 2871 -Memory Control--线段树]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48436233</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48436233</guid><author>lovejava123qqq</author><pubDate>Mon, 14 Sep 2015 10:42:40 +0800</pubDate><description><![CDATA[我去此题我简直不想喷了，三个小时没检查出ql和qr弄反了。我简直受不了啊
//
//  main.cpp
//  hdu 2871 -Memory Control--线段树
//
//  Created by XD on 15/9/13.
//  Copyright (c) 2015年 XD. All rights reserved.
#include 
#include 
#include 
]]></description><category></category></item><item><title><![CDATA[poj 3667 线段树-区间的前缀和后缀]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48416887</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48416887</guid><author>lovejava123qqq</author><pubDate>Sun, 13 Sep 2015 17:09:33 +0800</pubDate><description><![CDATA[//
//  main.cpp
//  poj 3667 线段树-区间的前缀和后缀
//
//  Created by XD on 15/9/13.
//  Copyright (c) 2015年 XD. All rights reserved.
//
/*
 线段树的区间更新
 这里需要注意的是线段树的每个节点应该保存什么样的属性。
 这里是要找到一个区间使得其长度为d，且左边的值最小。我们保持]]></description><category></category></item><item><title><![CDATA[uva 12299 - RMQ with Shifts--- 线段树单点更新]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48350371</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48350371</guid><author>lovejava123qqq</author><pubDate>Thu, 10 Sep 2015 21:20:04 +0800</pubDate><description><![CDATA[//
//  main.cpp
//  uva 12299 - RMQ with Shifts--- 线段树单点更新
//
//  Created by XD on 15/9/10.
//  Copyright (c) 2015年 XD. All rights reserved.
//
/*
 线段树单点更新
 
 */
#include 
#include 
#include 
#include]]></description><category></category></item><item><title><![CDATA[uva 1513 - Movie collection--树状数组--预留前n个位置]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48345531</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48345531</guid><author>lovejava123qqq</author><pubDate>Thu, 10 Sep 2015 16:43:58 +0800</pubDate><description><![CDATA[//
//  main.cpp
//  uva 1513 - Movie collection--树状数组--预留前n个位置
//
//  Created by XD on 15/9/10.
//  Copyright (c) 2015年 XD. All rights reserved.
//
/*
 树状数组
 做法就是预留前m个位置给后面的要看的的video，因为他们要移到顶端，所以我们就可以]]></description><category></category></item><item><title><![CDATA[uva 12086 - Potentiometers--树状数组]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48344495</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48344495</guid><author>lovejava123qqq</author><pubDate>Thu, 10 Sep 2015 15:50:30 +0800</pubDate><description><![CDATA[//
//  main.cpp
//  uva 12086 - Potentiometers--树状数组
//
//  Created by XD on 15/9/10.
//  Copyright (c) 2015年 XD. All rights reserved.
//
/*
 树状树组，
 */
#include 
#include 
#include 
#include 
#include]]></description><category></category></item><item><title><![CDATA[soj 1030: Sum It Up--迭代加深搜索]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48296925</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48296925</guid><author>lovejava123qqq</author><pubDate>Tue, 08 Sep 2015 20:58:04 +0800</pubDate><description><![CDATA[题目大意:就是给定一个值，再给定以个整数序列，求从序列总选择出一定的数，来使得,其和为给定的值，并按照要求输出所有的解。
此题就是一个简单地深搜题。注意的点就是注意  按照数字的大小输出，也就是数字的字典序。我们可以先做游程编码，然后组成了一个新的序列。将这个序列按照key值升序。在深搜的时候以当前key值的次数降序的搜索。
//
//  main.cpp
//  soj 1030: Sum ]]></description><category></category></item><item><title><![CDATA[uva  ---11136	Hoax or what--优先队列即可]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48233111</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48233111</guid><author>lovejava123qqq</author><pubDate>Sun, 06 Sep 2015 00:21:33 +0800</pubDate><description><![CDATA[//
//  main.cpp
//  uva  11136 - Hoax or what---优先队列
//
//  Created by XD on 15/9/5.
//  Copyright (c) 2015年 XD. All rights reserved.
//
#include 
#include 
#include 
#include 
#include 
#include 
#in]]></description><category></category></item><item><title><![CDATA[uva 11988 - Broken Keyboard (a.k.a. Beiju Text)----链表快速插入]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48231917</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48231917</guid><author>lovejava123qqq</author><pubDate>Sat, 05 Sep 2015 23:27:13 +0800</pubDate><description><![CDATA[//
//  main.cpp
//  uva 11988 - Broken Keyboard (a.k.a. Beiju Text)----链表快速插入
//
//  Created by XD on 15/9/5.
//  Copyright (c) 2015年 XD. All rights reserved.
//
/*
 此题就是一道简单的链表题。注意一下当前的位置,起始位置和结束位置。
]]></description><category></category></item><item><title><![CDATA[ural -1297. Palindrome----后缀数组解决最长回文串的问题]]></title><link>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48230347</link><guid>https://blog.youkuaiyun.com/lovejava123qqq/article/details/48230347</guid><author>lovejava123qqq</author><pubDate>Sat, 05 Sep 2015 21:51:35 +0800</pubDate><description><![CDATA[此题就是问一个只含有字母的的字符串中的最长的回文串是什么。如果有多解的话，打印出最先出现的那个。
首先考虑到回文串的特点。那么我们的肯定想到将字符串反转，并加到原字符串后面，用一个字符隔开。然后就是求后缀的最长前缀。
这里最长前缀是我们已知道的算法。这里我们不适用RMQ来解。只要一个O(n)的时间就可以解决了。遍历一下height数组就行了。
具体见代码。
//
//  main.cpp
]]></description><category></category></item></channel></rss>