01 2012 档案

摘要:奇数时一定有结果,偶数时一定没有。。。然后循环就可以了。ps:好几天没做题,有点手生了。。。View Code 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 5 using namespace std; 6 7 8 int main() { 9 // freopen("data.txt", "r", stdin);10 11 __int64 n, tmp;12 int i;13 while(~scanf("%I64d" 阅读全文
posted @ 2012-01-19 11:57 AC_Von 阅读(313) 评论(0) 推荐(0) 编辑
摘要:下边是从天涯空间里找出来的练习(转自notonlysuccess)http://acm.pku.edu.cn/JudgeOnline/problem?id=3345http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3201 √http://acm.pku.edu.cn/JudgeOnline/problem?id=3107 √http://acm.pku.edu.cn/JudgeOnline/problem?id=1655 √http://acm.pku.edu.cn/JudgeOnline/problem?id=2378 阅读全文
posted @ 2012-01-10 11:07 AC_Von 阅读(314) 评论(0) 推荐(0) 编辑
摘要:无意间看到hh大牛的这篇博客:http://www.cppblog.com/notonlysuccess/archive/2011/09/26/80162.html#156835“去年10月16号,A了第一道A+B,我的AC生涯也正是开始了今天是4月16号,正好半年,提交了三道水题。。。在HDU的AC量达到了900。。。” 这得如何疯狂的刷题才能做到这样。回头想想自己,为了能1Y一道水题而沾沾自喜!做完一道题就不自觉的想着休息一会,我又有什么资本休息?比别人多的题多还是比别人掌握的好。就这样的效率下去我还ac个球啊!不如回家种红薯去得了! 什么QQ空间,什么微博,全是浪费时间,扯淡!之... 阅读全文
posted @ 2012-01-08 16:50 AC_Von 阅读(362) 评论(0) 推荐(0) 编辑
摘要:/*题意:传说中的Ural神校要搞80周年校庆。学校的员工关系构成一颗树,每个员工有个pleasure值,表示参加party的开心程度。每个员工都不想跟自己的顶头上司一起参加party。然后校长就想啦,怎么发请柬才能让party最high。 思路:定义fw[i]表示带上根结点时这颗子树的最大pleasure,fn[i]表示不带根结点时这颗子树的最大pleasure。转移方程就是:fw[i] = sum(fn[son[i]]);fn[i] = sum( max(fn[son[i]], fw[son[i]]) );其实很容易实现,画个图一目了然。*///ps:1Y,^_^//My Code:... 阅读全文
posted @ 2012-01-08 16:20 AC_Von 阅读(246) 评论(0) 推荐(0) 编辑
摘要:纠结的问题。做了两天,还是在拜读大牛代码的情况下ac的。好好谢谢总结吧。 诸位大牛的思路是两次dfs。前提:建树的时候按无向边从上往下建。第一次dfs是搜出一个根结点到其他结点的最长路径和次长路径(次长路径不是最长路径的子路径,也就是说不在同一条路上。) 一个结点到其他结点的最长路径怎么得到?1、可能是从这个结点往下取到最长路径。2、可能是从这个结点的父结点上选去另一条路径。 当情况一时:第一次dfs所得的最长路径就是要求的结果。当情况二时:第一次dfs所得的次长路径就是所求结果。 另外,因为是无向边建树,所以第一次dfs从下往上搜,第二次dfs从上往下搜。 具体实现:定义dp[... 阅读全文
posted @ 2012-01-07 17:13 AC_Von 阅读(385) 评论(0) 推荐(0) 编辑
摘要:最近发现以前写的解题报告很乱,往后准备整理这去写。也就是说在做专题的时候相同专题的多个题目一块写,顺便写一下专题的总结。这样的话即使是每天都做题也可能不是每天都发解题报告。个人感觉这东西在精不在多,好的,就这样了。这几天实验室里在做题的。。。咳咳。可能大家都在忙着做课程设计吧。 不管怎么说,想做好一件事的首先要做的就是坚持!各位队友,还有我自己,加油了!!! 阅读全文
posted @ 2012-01-06 19:55 AC_Von 阅读(179) 评论(0) 推荐(0) 编辑
摘要:这两道题很类似,先说第一道题。定义dp[i][j]表示根结点为i时,用掉j个士兵得到的最大possible。dp[i][j] = max(dp[i][j], dp[i][j-k] + dp[son[i]][k]);递归的求出dp[son[i]][k]的值。最后结果就是dp[1][m];用临界矩阵存图。核心代码:void dfs(int root) { int i, j, k, child, len; vis[root] = true; for(i = tree[root].bugs; i <= m; i++) { dp[root][i] = tree[roo... 阅读全文
posted @ 2012-01-06 11:50 AC_Von 阅读(240) 评论(0) 推荐(0) 编辑
摘要:可耻的看了解题报告。题意:给定一个火车车箱的序列 n(及每个车箱所能容纳的乘客),3 个火车头,及每个火车头所能拉动的车箱序列 m.求 3 个火车头所能拉的最多的乘客数.注意:火车头只能按顺序拉,不能跳着拉(如可拉 1,2 或 2,3 或 3,4,但不能拉 1,3/2,4).思路:k表示火车头(1, 3). i表示第i节车厢,j表示往前退j个车厢(1 <= j <= m && 1 <= j <= i)所以有:dp[k][i] = max(dp[k-1][i - j] + sum[i] - sum[i-j], dp[k][i-1]). 阅读全文
posted @ 2012-01-02 21:58 AC_Von 阅读(191) 评论(0) 推荐(0) 编辑
摘要:A:tc的原题,250pt的,SIM几我忘了。估计polla队长是看我们刚考试完,出点简单题给我们找找状态。判断两个字符串是否同时出现'W'.B:貌似数据不大,水过了的。C:有向图+Dijkstra。 阅读全文
posted @ 2012-01-02 20:03 AC_Von 阅读(184) 评论(0) 推荐(0) 编辑
摘要:/*题意很清楚。思路大概是:设dp[i]表示sum(s[x]) = i 时dp[i] = sum(f[x])取到最大。所得的i + dp[i]就是结果。因为s[i]有负的。所以0坐标位置移动一下。dp[i]初始化为 -∞。0坐标位置为dp[MID] = 0;*///主要代码:for(i = 0; i < n; i++) { if(s[i] <= 0 && f[i] <= 0) continue; if(s[i] > 0) { for(j = M; j >= s[i]; j--) { if(dp[j-s[i]] != -inf) ... 阅读全文
posted @ 2012-01-01 21:51 AC_Von 阅读(187) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示