上一页 1 ··· 44 45 46 47 48 49 50 51 52 ··· 69 下一页
摘要: 组合数学题。好难啊,请教了Xiang578大神&&看了他题解才会的...... 甩上题解链接:http://blog.csdn.net/xinag578/article/details/50645160 另外还发现了组合数递推公式实际上就是一个01背包。 #include <stdio.h> #in 阅读全文
posted @ 2016-02-13 13:28 Fighting_Heart 阅读(215) 评论(0) 推荐(0)
摘要: 树形DP+LCA+思路。这题可真是有点难度......所以准备详细写一下题解。 题意:给一颗无根树,有Q次询问,每次询问指定一个根节点X,然后让你计算Y节点的儿子和子孙中,编号最小的节点是多少。 我们先以1为根节点进行一次树形DP,记录下每个节点的儿子和子孙中,编号最小的节点是多少。 首先很容易想到 阅读全文
posted @ 2016-02-12 21:03 Fighting_Heart 阅读(332) 评论(0) 推荐(0)
摘要: 树形DP,和背包差不多。dp[now][x]表示now这个节点的子树上,花费为x的时候,获得的最大防御能力(保证敌方HP<=0) #include<cstdio> #include<cstring> #include<queue> #include<algorithm> using namespac 阅读全文
posted @ 2016-02-10 21:51 Fighting_Heart 阅读(155) 评论(0) 推荐(0)
摘要: 树形背包。DP递推的思路很简单.... 但是由于节点有15万个,先不论空间复杂度,这样开dp数组 dp[150000+10][300+10],如果初始化是memset(dp,-1,sizeof dp),则必然超时。 所以需要一个状态数剪枝。。。即记录这个节点最多组合的数量。 UVALive是不限制内 阅读全文
posted @ 2016-02-10 10:01 Fighting_Heart 阅读(217) 评论(0) 推荐(0)
摘要: 可以树形DP,也可以用网络流(最大流=最小割) 用树形DP的话,这题就是 HDU 3586 简化版,HDU 3586还需要二分查找。 #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #include<map> #i 阅读全文
posted @ 2016-02-09 15:38 Fighting_Heart 阅读(217) 评论(0) 推荐(0)
摘要: 二分+树形DP验证。 答案是通过二分查找得到的,对于每一次二分到的值,进行验证,是否可行。 可以用树形DP来求解所有叶子节点不能向根节点传送消息的最小费用,dp[i] 表示 节点i 的子树的叶子结点都不能向i传送消息的最小费用,这样很容易递推。 #include<cstdio> #include<c 阅读全文
posted @ 2016-02-09 15:21 Fighting_Heart 阅读(176) 评论(0) 推荐(0)
摘要: 树形DP水题。判断取法是否唯一,dp的时候记录一下每个状态从下面的子节点推导过来的时候是否唯一即可。 #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #include<map> #include<vector> # 阅读全文
posted @ 2016-02-07 12:08 Fighting_Heart 阅读(148) 评论(0) 推荐(0)
摘要: 树形DP。这题折腾了一天,很开心,总算是独立AC了。题意读了好几遍,发现并不是很明确。 注意这个坑:即使该洞bug数为0,要获得该洞brain值,也需要至少一人经过该洞穴,但这个人可以不停留在这个点 估计这题代码我写的最长了。。。。有好多地方可以简化。。。 留几组数据: 第一组:答案是200 2 1 阅读全文
posted @ 2016-02-06 23:33 Fighting_Heart 阅读(208) 评论(0) 推荐(0)
摘要: 树形DP。 dp[i][1]表示 在编号为 i 的节点上放置一个人,覆盖 编号为 i 的节点 的子树上所有边 需要的数量。 dp[i][0]表示 在编号为 i 的节点上不放置人,覆盖 编号为 i 的节点 的子树上所有边 需要的数量。 也可以用二分图匹配来做,在数量上,二分图的最小点覆盖数=二分图的最 阅读全文
posted @ 2016-02-04 21:09 Fighting_Heart 阅读(155) 评论(0) 推荐(0)
摘要: 树形DP。树上背包AC了......每一个节点做一次背包。dp[id][X] 表示 编号为id的节点的子树上 选取X个节点 获得的最大价值 #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #include<vect 阅读全文
posted @ 2016-02-04 17:49 Fighting_Heart 阅读(133) 评论(0) 推荐(0)
摘要: 树形DP入门题。感觉负数的那些节点一定是不要选的,本着这个原则写了一发...AC了。 #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #include<vector> #include<algorithm> usi 阅读全文
posted @ 2016-02-04 13:03 Fighting_Heart 阅读(152) 评论(0) 推荐(0)
摘要: 暴力。每次合并两个点之后,把新产生的连通关系都记录下来。 #include<cstdio> #include<algorithm> #include<vector> #include<cstring> using namespace std; int T, n, m, p, u, v, G; int 阅读全文
posted @ 2016-02-03 21:43 Fighting_Heart 阅读(244) 评论(0) 推荐(0)
摘要: 方法可以转化一下,先计算每一个鲨鱼在自己范围内的数能被所给素数整除的个数有几个,从而得到能被整除的概率,设为f1,不能被整除的概率设为f2. 然后计算每相邻两只鲨鱼能获得钱的期望概率,f=w[id1].f1*w[id2].f2+w[id1].f2*w[id2].f1+w[id1].f1*w[id2] 阅读全文
posted @ 2016-02-02 22:38 Fighting_Heart 阅读(181) 评论(0) 推荐(0)
摘要: 记录一下每个对角线上有几个,然后就可以算了 #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #include<vector> #include<algorithm> using namespace std; con 阅读全文
posted @ 2016-02-02 22:34 Fighting_Heart 阅读(223) 评论(0) 推荐(0)
摘要: 水题 #include<cstdio> #include<cstring> #include<cmath> #include<ctime> #include<vector> #include<algorithm> using namespace std; int n; long long a[100 阅读全文
posted @ 2016-02-02 22:33 Fighting_Heart 阅读(208) 评论(0) 推荐(0)
摘要: 暴力枚举+idea。做的时候mod写错了,写成了1000000009,找了两个多小时才发现...... a[1],a[2],a[3]....a[N] b[1],b[2],b[3]....b[N] 首先需要枚举b[1]...b[N]与a[1]进行组合。 然后对a[2]...a[N]从小到大排序 对b[ 阅读全文
posted @ 2016-02-02 22:31 Fighting_Heart 阅读(177) 评论(0) 推荐(0)
摘要: 模拟题,代码写得比较乱。。。 #include<cstdio> #include<cstring> #include<cmath> #include<queue> #include<vector> #include<algorithm> using namespace std; char s[500 阅读全文
posted @ 2016-02-02 22:22 Fighting_Heart 阅读(368) 评论(0) 推荐(0)
摘要: 简单DP。dp[i][j]表示走到这格的最大金钱数。 #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> using namespace std; const int maxn=1000+10; int n,m 阅读全文
posted @ 2016-02-02 22:21 Fighting_Heart 阅读(342) 评论(0) 推荐(0)
摘要: 预处理打表,sum[i][j]表示1.。。。。i这些数字中 j 有几个。然后就很好处理询问了。 #include<stdio.h> #include<math.h> #include<string.h> int sum[100000+10][15]; char s[100000+10]; int n 阅读全文
posted @ 2016-02-02 22:19 Fighting_Heart 阅读(167) 评论(0) 推荐(0)
摘要: 有些问题,不做实践与猜测,可能一辈子也想不出答案,例如这题。 #include<stdio.h> #include<math.h> long long x; int main() { while(~scanf("%lld",&x)){ if(x<7) printf("-1\n"); else pri 阅读全文
posted @ 2016-02-02 22:18 Fighting_Heart 阅读(128) 评论(0) 推荐(0)
上一页 1 ··· 44 45 46 47 48 49 50 51 52 ··· 69 下一页