<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[walk_up的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/walk_up</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; walk_up]]></copyright><item><title><![CDATA[组队赛2 - 2014.7.20 - 2013长春现场赛]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/38016911</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/38016911</guid><author>walk_up</author><pubDate>Mon, 21 Jul 2014 15:06:44 +0800</pubDate><description><![CDATA[B - Golden Radio Base
problem
think
code


C - Little Tiger vs. Deep Monkey


problem
think
code]]></description><category></category></item><item><title><![CDATA[HDU-4008-treeDP]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7931643</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7931643</guid><author>walk_up</author><pubDate>Sat, 01 Sep 2012 10:50:54 +0800</pubDate><description><![CDATA[这题看好多天了。为什么看那么久呢？因为对于我来说有点难，难了就不能静心了，一会看人人一会聊天的。
又不想看别人的思路。

今天终于静下心来想了。我想的和网上baidu google 到的都不太一样。
上代码 。



int son1[N], son2[N], fa[N]; //向下最大 向下次大 向上最大 儿子
int dw1[N], dw2[N], up[N]; //向下最大]]></description><category></category></item><item><title><![CDATA[HDU-4049-状压]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7887190</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7887190</guid><author>walk_up</author><pubDate>Mon, 20 Aug 2012 16:35:42 +0800</pubDate><description><![CDATA[求助：：：：：：：：：：
//城市的顺序从1到m，不懂为什么 。。 还是顺序没有影响 。。



const int inf = 1<<30;
const int N = 1111;

int next[N][N], num[N], mny[N][12];
int cost[12], val[12][12], with[12][12];
int dp[N][12]; 
int n, m,]]></description><category></category></item><item><title><![CDATA[POJ-3162-treeDP+线段树]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7867709</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7867709</guid><author>walk_up</author><pubDate>Wed, 15 Aug 2012 09:43:16 +0800</pubDate><description><![CDATA[const int N = 1000009;

int dw1[N]; //向下最大
int dw2[N]; //向下次大
int up[N]; //向上最大
int m[2][N<<2]; //线段树的最值
int n, mm;
vector >v[N];

void dfs1(int s) //向下最大和向下次大
{
    dw1[s] = dw2[s] = 0;
    int i, ss]]></description><category></category></item><item><title><![CDATA[POJ-1741-treeDP+分治]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7860843</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7860843</guid><author>walk_up</author><pubDate>Mon, 13 Aug 2012 16:21:47 +0800</pubDate><description><![CDATA[。。。



const int inf = 0x3f3f3f3f;
const int N = 10009;

int dis[N], vis[N];
int size[N], hash[N];
int sum[N];//子孙数 ;
int big[N]; //儿子的最大子孙数
int n, k, ans, cnt;
vector >v[N];

void num_child(int s]]></description><category></category></item><item><title><![CDATA[POJ-2152-treeDP]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7857065</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7857065</guid><author>walk_up</author><pubDate>Sun, 12 Aug 2012 14:51:13 +0800</pubDate><description><![CDATA[const int inf = 1<<30;
const int N = 1009;

int dp[N][N]; //dp[i][j] i依赖与j时的最优解
int w[N], d[N];
int dis[N][N]; //每两个节点之间的距离
int best[N]; //每个节点为根的子树的最优解 best[i] = min( dp[i][j] ) (1<=j<=n)
vector >v[N]]></description><category></category></item><item><title><![CDATA[HDU-4044-treeDP+分组背包]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7856929</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7856929</guid><author>walk_up</author><pubDate>Sun, 12 Aug 2012 14:29:24 +0800</pubDate><description><![CDATA[我觉得这题挺难想的。反正我是想了好久。
题意：一棵树（编号1-n），1是敌人出口（只有一个敌人）。叶子节点是我军。在节点处装大炮。每个节点有 k 种大炮选择，可是每个节点最多装一个大炮。每个大炮有一个花费和一个威力值。你一共有m钱，怎么能使威力值最大。敌人去攻击哪个我军是任意的，所以最大威力是每条路值和的最小值。大炮放在叶子节点也是管用的。


解题思路：每个节点最多装一个大炮，所以是分组]]></description><category></category></item><item><title><![CDATA[HDU-4354-treeDP]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7854828</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7854828</guid><author>walk_up</author><pubDate>Sat, 11 Aug 2012 15:36:55 +0800</pubDate><description><![CDATA[枚举区间。[l, r]
开始 l = r = 1， 记录已经出现的国家。
判断是否满足条件。

如果满足，更新答案，更新区间出现的国家，l++， 一直到不满足。
如果不满足，更新区间出现的国家，r++, 一直到满足。


const int C = 5005;
const int N = 2005;
const int M = 1005;

int cnt[N]; //i国家出现过]]></description><category></category></item><item><title><![CDATA[HDU-4358-树状数组+离散化]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7854752</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7854752</guid><author>walk_up</author><pubDate>Sat, 11 Aug 2012 15:22:50 +0800</pubDate><description><![CDATA[这题是看了解题报告做的。
第二种方法一直 TLE 。 是我写挫了 。
第一种是树状数组。
给每个节点一个起始位置和结束位置。这些位置值与节点标号没有关系。这样1-n 都会作为起始位置。给他们新的权值。
从1-n依次枚举，这里枚举的不是节点编号，而是位置。枚举到i时，树状数组的query(k) 求得的是k位置到i位置的答案。
查询时，按每个查询的点的结束位置从小到大排序。这样枚举到i位置，]]></description><category></category></item><item><title><![CDATA[HDU-4359-DP+C(n, m)大数求]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7854689</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7854689</guid><author>walk_up</author><pubDate>Sat, 11 Aug 2012 15:13:08 +0800</pubDate><description><![CDATA[比赛的时候一直在敲这道题。一开题就盯住这个名字了。有人说他说是 treeDP 不一定真的是 treeDP。
总有时候别人会给你很诚恳的忠告。却只因自己陷得太深无法自拔。关键是自己不想出去。
跑题了。
读错题了。n,d. d 是说 深度恰好为 d ， 我给理解为不超过 d 。 于是最后答案变成 ans(n,d) - ans(n, d-1) 就可以了。

C(n, m) 那个东西 ， 由于里]]></description><category></category></item><item><title><![CDATA[HDU-4351-线段树]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7854639</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7854639</guid><author>walk_up</author><pubDate>Sat, 11 Aug 2012 14:46:58 +0800</pubDate><description><![CDATA[这题纠结了好久。
状态转移，预处理的话要1024*1024*10*10，感觉会T，然后发现 9 当成 0 就变成了 512*512*9*9，于是就这么写了。

然后 T 了好久， 然后各种改 ， IO加速。能加 inline 的都加 inline 。 依然 TLE 。
后来找一下别人的代码 ， 发现 查询的时候 ， 我是在每个查询里面 分别再查询 左右值。别人都放一个结构体里面，这样别人的]]></description><category></category></item><item><title><![CDATA[多校五。]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7845451</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7845451</guid><author>walk_up</author><pubDate>Thu, 09 Aug 2012 00:38:05 +0800</pubDate><description><![CDATA[HDU-4340-treeDP
这题一看就是树DP。可是当时我想错了。伤心死了。。后来看到解题报告 dp[N][2][2], 瞬间就都懂了 。。 可是没用了 。。 没用了 。。
dp[i][2][2] //一维表示以谁为节点的子树; 二维第几个人; 三位这棵子树有几个全价。
转移方程，以第0个人为例，同理第1个人。j，k是i的不同孩子。

dp[i][0][0] = cost[i][0]]]></description><category></category></item><item><title><![CDATA[HDU - 4332 - 多校四1002 - 矩阵+状压]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7826611</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7826611</guid><author>walk_up</author><pubDate>Fri, 03 Aug 2012 12:36:21 +0800</pubDate><description><![CDATA[#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

__int64 tri[300][300];
int ok[300];
int pos[300];
int sta;

struct node
{
    __int64 x[300][300];
}tmp[35],]]></description><category></category></item><item><title><![CDATA[POJ-1442-treap]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7729132</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7729132</guid><author>walk_up</author><pubDate>Mon, 09 Jul 2012 14:36:37 +0800</pubDate><description><![CDATA[#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

const int inf = 0x3f3f3f3f;
const int N = 30009;
const double esp = 1e-6;

int v[N];

struct treap
{
    tre]]></description><category></category></item><item><title><![CDATA[POJ-2486-树背包]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7727870</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7727870</guid><author>walk_up</author><pubDate>Mon, 09 Jul 2012 08:50:28 +0800</pubDate><description><![CDATA[一直想把他当树dp做 。。 怎么也想不出来转移方程 。。 后来灵机一动 。。 很像背包啊 。。 于是今天到机房就把他敲了 。。好久好久好久没做背包了 。。虽然某种说法上背包也是dp 。。



const int K = 209;
const int N = 109;

int dp[2][N][K];//0表示不回来;1表示回来
int val[N];
int vis[N];
int n]]></description><category></category></item><item><title><![CDATA[POJ-4045-数据结构+dfs]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7725981</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7725981</guid><author>walk_up</author><pubDate>Sun, 08 Jul 2012 09:57:17 +0800</pubDate><description><![CDATA[#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
const int maxn = 50009;
__int64 start[maxn];
__int64 end[maxn];
__int64 child[maxn];
__int64 val[maxn];
int vis[maxn];]]></description><category></category></item><item><title><![CDATA[POJ-4052-ac自动机]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7725965</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7725965</guid><author>walk_up</author><pubDate>Sun, 08 Jul 2012 09:55:07 +0800</pubDate><description><![CDATA[先把匹配上的串都标记。然后把每个匹配上的串的子串变成非结束。
直接会超时。优化找失败指针的地方。


#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

const int maxn = 250009;

char str1[5100009], str2[51]]></description><category></category></item><item><title><![CDATA[POJ-4047-线段树]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7725960</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7725960</guid><author>walk_up</author><pubDate>Sun, 08 Jul 2012 09:47:17 +0800</pubDate><description><![CDATA[#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

const int maxn = 200009;

int n, nn, m, k; 
int a[maxn], b[maxn];
struct tree
{
    int l, r, v, lazy, mid;]]></description><category></category></item><item><title><![CDATA[HDU-3695-ac自动机]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7724475</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7724475</guid><author>walk_up</author><pubDate>Sat, 07 Jul 2012 13:56:22 +0800</pubDate><description><![CDATA[char str1[5100009], str2[5100009];
int cnt;

struct trie
{
    trie *ch[26];
    trie *fail;
    int end;
    void init()
    {
        memset(ch, NULL, sizeof(ch));
        fail = NULL;
        end =]]></description><category></category></item><item><title><![CDATA[HDU-3658-矩阵]]></title><link>https://blog.youkuaiyun.com/walk_up/article/details/7724471</link><guid>https://blog.youkuaiyun.com/walk_up/article/details/7724471</guid><author>walk_up</author><pubDate>Sat, 07 Jul 2012 13:54:12 +0800</pubDate><description><![CDATA[#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;

const int inf = 0x3f3f3f3f;
const int maxn = 1009;
const double esp = 1e-6;
const __int64 mod = 1000000007;]]></description><category></category></item></channel></rss>