摘要: 题意:n个数之间放m个障碍,分隔成m+1段。对于每段两两数相乘再求和,然后把这m+1个值加起来,让这个值最小。设:d(i, j)表示前i个数之间放j个炸弹能得到的最小值sum(i)为前缀和,cost(i)为前i个数两两相乘之和。则有状态转移方程:设0 ≤ l 2 #include 3 #incl... 阅读全文
posted @ 2015-07-31 21:54 AOQNRMGYXLMV 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 在kuangbin巨巨博客上学的。 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 const int maxn = 500000 + 10; 9 int d[maxn], Q[maxn],... 阅读全文
posted @ 2015-07-31 16:06 AOQNRMGYXLMV 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 设d(u, j, 0)表示在以u为根的子树中至多走k步并且最终返回u,能吃到的最多的苹果。则有状态转移方程: 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 8 const i... 阅读全文
posted @ 2015-07-31 14:41 AOQNRMGYXLMV 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 这个题是POJ1849的加强版。先说一个很重要的结论,下面两种方法都是从这个结论出发的。一个人从起点遍历一颗树,如果最终要回到起点,走过的最小权值就是整棵树的权值的2倍。而且K个人的情况也是如此,大不了只有一个人走,其他K-1个人待着不动就行了。而题目中说了这些人不比回到原点,所以就想办法考虑哪些多... 阅读全文
posted @ 2015-07-31 13:27 AOQNRMGYXLMV 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 如果一个点开始遍历一棵树再回到原点那么每条边走两次。现在是两个人从同一点出发,那么最后遍历完以后两人离得越远越好。最后两人所处位置的路径上的边走了一次,其他边走了两次。要使总路程最小,两人最后停在直径两端。所以最终答案就是总权值*2 - 树的直径 1 #include 2 #include 3 ... 阅读全文
posted @ 2015-07-31 11:07 AOQNRMGYXLMV 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 数学方法:从每个箱子来考虑:m次选择以后,至少有一次被选中的概率为.因为这些箱子是相互独立的,所以被选中的箱子数的期望为 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int main() 7 { 8 int ... 阅读全文
posted @ 2015-07-31 11:00 AOQNRMGYXLMV 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 用d(S)表示所收集到卡片种类状态为S时还需买多少包小浣熊(这是我YY的)的期望。则有方程d(S) = 1 + (P(空) + P(有)) * d(S) + P(无) * d(T)其中P(空)表示没有收集到卡片,P(有)表示收集到的是已经有的卡片,P(无)表示收集到新的卡片。而且P(空) +P(有)... 阅读全文
posted @ 2015-07-31 10:54 AOQNRMGYXLMV 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 要在HDU上交的话,要用滚动数组优化一下空间。 这道题想了很久,也算是想明白了,就好好写一下吧。 P1:激活游戏失败,再次尝试。 P2:连接失服务器败,从队首排到队尾。 P3:激活游戏成功,队首的人出队。 P4:服务器down掉,所有人都不能激活了。 设d... 阅读全文
posted @ 2015-07-31 10:47 AOQNRMGYXLMV 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 这道题搜了一晚上的题解,外加自己想了半个早上,终于想得很透彻了。于是打算好好写一写这题题解,而且这种做法比网上大多数题解要简单而且代码也比较简洁。 首先要把题读懂,把输入读懂,这实际上是一颗有向树。第i(2≤i≤n)行的两个数u,d,其中u是i的父亲结点,d是距离。 第一遍DFS我们可以计算... 阅读全文
posted @ 2015-07-31 10:43 AOQNRMGYXLMV 阅读(269) 评论(0) 推荐(0) 编辑