上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 26 下一页
摘要: 思路:一开始我的思路是正确,只是尼玛,被这张图上的最优方案误导了。初始思路:在可以占领格子最多的地方放车,然后将已经被占领了的格子标记,再去标记下一个最多的并且未被占领的地方......这样,会是对的,虽然我没有证明;完善的思路:我一开始不确定自己初始思路正确否,也是去参考大牛思路,他是这样想的:从上到下扫描每一行,1、若该行被占领,则去下一行;2、若改行有未被占领的,则在该行最后一个未被占领额各自摆车;然后,这种思路和我的初始思路,都是在 控制格子数最多的地方放车,也就是行末,而我是对整个图思考.......但是代码实现问题,却是大牛的思路更加好....... 阅读全文
posted @ 2013-05-15 19:13 紫忆 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 题意:有n个人想要过河,但是船只有一条,而且每次只能载两个人,给出n个人过河的时间,两个人一起过河的话,按照花时最多的计算,求所有人都过河所花的最少时间。思路:一开始我是想,直接用过河时间最少的那个人每次载一个到对面,然后再回来载剩下的,仔细想想,这样不对。然后思考后发现有两种过河策略:1、用过河时间最少的那个人每次载一个到对面,然后再回来载剩下的;2、用(花时)最少的和次少的循环载人,先是最少的和次少的一起过河,再是最少的回来,然后让最多的载次多的过河,再用次少的回来载人......然后,我在思考的时候,以为只要第二种就可以是最少的,结果错了,然后看别人思路,发现他们是分别用这两种方法过河, 阅读全文
posted @ 2013-05-15 18:15 紫忆 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 题意就不说了,主要讲讲思路以及注意的地方。思路:是按黑书上给出的思路编的,主要是贪心+枚举。因为每个池塘只能走一次,可以枚举前1,2,3,.....n个池塘之间所能钓的最大鱼数。我们可以将路程一次性处理完毕,这样就可以瞬移......每次瞬移到鱼最多的池塘钓鱼就好。有点遗憾,他们说可以用dp做,想了许久,没想明白dp怎么做注意:这道题目思路很简单,倒是细节处理很麻烦,我因为没有想到一个池塘里面的鱼还可以为负数,就贡献了6次wa.......还得注意:所有池塘鱼为0;不需要走路就可以到下一个池塘;在某种状态下,这一个状态的最大鱼数等于前面的状态中的最大鱼数,这时候要考虑这种状态下是否有某一个池塘 阅读全文
posted @ 2013-05-13 17:22 紫忆 阅读(1850) 评论(0) 推荐(0) 编辑
摘要: 这道题目我是先用贪心a了的,但是最近在做dp,所以用dp思考了下,果断错了。dp思路:是一道最长非递减子序列,但是,在新增一道拦截系统的情况下,前面已经存在的拦截系统依旧可以使用.......#include<iostream>#include<stdio.h>#include<string.h>using namespace std;int a[10000];int main(){int n;while(scanf("%d",&n)>0){int dp[10000]={3000};int i;for(i=1;i<=n 阅读全文
posted @ 2013-04-11 21:01 紫忆 阅读(355) 评论(0) 推荐(0) 编辑
摘要: http://blog.csdn.net/woshi250hua/article/details/7605673题目大意:给定n个硬币,要求将这些硬币平分以使两个人获得的钱尽量多,求两个人分到的钱最小差值。思路:将它所给出的n个钱币加起来sum,将sum/2当作体积,求出在sum/2下的最大值,sum-2*dp[sum/2];这个题目wa几次,原因就是数组开小了,悲催的英文题,表示看不懂........#include<iostream>#include<stdio.h>#include<string.h>#include<math.h>usin 阅读全文
posted @ 2013-04-10 17:20 紫忆 阅读(1346) 评论(0) 推荐(0) 编辑
摘要: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=565根据01背包二维数组的动态转移方程dp[i][j]=max(dp[i-1][j],dp[i-1][j-v[i]]+w[i]),可以知道,dp[i][j]的状态和dp[i-1][j]、dp[i-1][j-v[i]]有关,于是,在记录路径的时候,要是dp[i][j]==dp[i-1][j],说明,这条路没有走向dp[i-1][j-v[i]],这时,可以另开一个数组a[i][j],当 阅读全文
posted @ 2013-04-10 16:16 紫忆 阅读(2027) 评论(0) 推荐(0) 编辑
摘要: View Code 1 #include 2 using namespace std; 3 int a[11]={0,1,0,0,2,10,4,40,92,352,724}; 4 int main() 5 { 6 int n; 7 while(scanf("%d",&n)>0&&n) 8 { 9 printf("%d\n",a[n]);10 }11 return 0;12 }思路:由于题目数据量小,只有10个数据,可以用深搜搜索出来后,打表。深搜代码:View Code 1 #include 2 #include 3 usi 阅读全文
posted @ 2013-03-04 10:30 紫忆 阅读(269) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1010注意,这道题目是要恰好t时间到达,并不是在t时间内到达......思路:剪枝+dfs第一个剪枝我们可以想到,当剩下的步数大于剩下的时间的时候,狗是不能走到的;接下来我们来第二个剪枝:我们把map的奇偶性以01编号:0 1 0 1 0 11 0 1 0 1 00 1 0 1 0 11 0 1 0 1 00 1 0 1 0 1我们发现从0走一步一定走到1,从1走一步一定走到0。也就是说,如果当前的狗所在的坐标与D的坐标奇偶性不一样,那么狗需要走奇数步。同理,如果狗所在坐标与D的坐标奇偶性一样,那么狗需要走偶 阅读全文
posted @ 2013-02-08 16:43 紫忆 阅读(5521) 评论(0) 推荐(1) 编辑
摘要: http://acm.hust.edu.cn:8080/judge/problem/viewProblem.action?id=14607题意:题目给你n个数,m个操作,接下来一行给你这n个数,接下的几行给出m个操作,Q a b 表示查询区间[a,b]里的数和和。U a b c 表示把区间[a,b]里的数都加上c。思路:延迟标记,和hdu4107是同一种类型的,这是4107的解题过程http://www.cnblogs.com/ziyi--caolu/archive/2012/12/25/2832368.html反思:在解题过程中,有些地方没有思考清楚,费了好多时间。比如再往下更新的时候,要和 阅读全文
posted @ 2013-01-27 17:14 紫忆 阅读(191) 评论(0) 推荐(0) 编辑
摘要: Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数; mapmapstring; mapmapint; mapmapstring; mapmapchar; mapmapchar; mapmapint;2. map添加数据; map maplive; 1.maplive.insert(pair(102,"aclive")); 2.maplive.insert(map::value_type(321... 阅读全文
posted @ 2013-01-17 19:09 紫忆 阅读(342) 评论(0) 推荐(0) 编辑
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 26 下一页