雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年7月27日

摘要: 暴力亦可过,同没意思。。。有个O(n)的算法从左向右扫{while{if(栈顶元素.h>当前元素.h) 入队,更新栈顶元素对应的牛的V ,结束while循环else 出队}直到队列为空}再从右向左View Code #include<stdio.h>#include<iostream>#include<stack>using namespace std;struct data{ int h,v,no;}node[50009];int all[50009];int main(){ int n; while(scanf("%d",&am 阅读全文

posted @ 2011-07-27 21:31 huhuuu 阅读(362) 评论(0) 推荐(0) 编辑

摘要: 暴力也可过,不过太没意思先排序:如41 3 5 8(3-1)*(1*3)+(5-3)*(2*2)+(8-5)*(3*1)规律发现了吧。。。View Code #include<stdio.h>#include<iostream>#include<algorithm>using namespace std;int a[10009];int main(){ int n; while(scanf("%d",&n)!=EOF) { int i,j; for(i=0;i<n;i++) { scanf("%d",&a 阅读全文

posted @ 2011-07-27 17:07 huhuuu 阅读(313) 评论(0) 推荐(0) 编辑

摘要: 比较好的贪心题也学会了优先队列吧思路:现对开始时间升序排序(再一次领教到了排序降维的意义!!!)优先队列里放add(第几次stall),rr(结束时间)在把第一个放到优先队列,第二个数与优先队列顶部进行比较若第二个数结束时间>优先队列顶部结束时间,则更新该顶部时间否则第二个数加到该优先队列里View Code #include<iostream>#include<cstdio>#include<algorithm>#include<queue>#include<string.h>using namespace std;int r 阅读全文

posted @ 2011-07-27 15:43 huhuuu 阅读(295) 评论(0) 推荐(0) 编辑

摘要: 解题的思想用到了 类似最长递增子序的方法,先按起始时间升序排序,不断更新,到某点(包括改点)最大值排序的目的:可以把看似二维的区间降到一维!!!!O(n*n)dp[i]=max(dp[i],dp[j]+node[i].v);dp[i]放着的是包括i点,最大的价值View Code #include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>using namespace std;struct data{ int b,e; int v;}node[1009];int 阅读全文

posted @ 2011-07-27 10:09 huhuuu 阅读(358) 评论(0) 推荐(0) 编辑