上一页 1 2 3 4 5 6 7 8 9 10 ··· 17 下一页
摘要: 题解说是最速下降问题,表示还没做到过,dp方程很好理解,关键是要求数量和同时不能重复,NOCOW上的方法是对于第二问求最长下降序列的数量,可以通过求第一问的过程解决。设MaxCnt[i]为第i项为末尾中最长下降序列的个数。对于所有的j(1≤j≤i-1)如果有(s[j]>s[i] 并且 MaxLength[j]+1>MaxLength[i])则MaxCnt[i]=MaxCnt[j],否则如果(MaxLength[j]+1= =MaxLength[i])可利用加法原理,MaxCnt[i]=MaxCnt[i]+MaxCnt[j]。考虑到题目中说的不能又重复的序列,我们可以增加一个域Nex 阅读全文
posted @ 2014-01-03 15:28 cavehubiao 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 题意:A,B两种机器数量m,n,且知道每个机器加工一件产品的用时,B机器加工的产品必须要A先加工过的,那么求s个产品,所需的A,B最加工完成的时间。A的时间比较好求,每次选择开始时间+加工时间最小的,然后当前开始时间增加。用priority_queue比较方便实现,同时按产品加工完先后顺序记录时间acost[s];B的比较巧妙,同样按A的方法得到bcost[s],然后反过来求bcost[s-i+1]+acost[i]的最大值即时最快完成B的时间。这个好好理解下。/*ID: hubiao cavePROG: jobLANG: C++*/#include#include#include#inclu 阅读全文
posted @ 2013-12-13 22:33 cavehubiao 阅读(260) 评论(0) 推荐(0) 编辑
摘要: 两题都没做出来,6D的dp到现在我还是有点没理解,先留着吧。6E看到最后才弄懂题意,就是找出最长连续子串长度和数量。网上看到说用线段树(segment-tree),从来没见过的数据结构,表示查了好久http://dongxicheng.org/structure/segment-tree/可以参看这篇文章看看,虽说看了好像对线段树有点认识了,但是放在这题我还是没什么思路。后来去cf上看了看前几名提交的代码,不禁佩服实在是太精炼了。贴个吧。#include#includeint a[100100],c[100100],n,k,b,m,p;std::multiset s;int main(){ . 阅读全文
posted @ 2013-12-07 21:15 cavehubiao 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 1. 下载MBRFix工具,放在c盘,利用命令提示符,进入软件所在目录,cd c:\mbrfix (cd后面一个空格)2.输入 MBRFix /drive 0 fixmbr /yes3.重启,发现直接进入Win 7,现在可以用Win 7的磁盘管理(打不开的话,可以用Win 7优化大师里带的)格式化Ubuntu所在分区(就是没有盘符的,选定删除卷时会提示是其他系统的数据)了~~~---------------------------------如果直接在Win 7里面删除Ubuntu所在的分区,则由于grub也被删除了,导致无法引导Win 7,可以使用安装光盘在dos命令下执行fdisk /mb 阅读全文
posted @ 2013-12-04 14:47 cavehubiao 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 参看vs2008 memory文件里的auto_ptr定义。首先可以发现又一个auto_ptr_ref,好奇为什么多出这样一个东西。然后查看网上说明今天我在看The C++ Standard Library的时候,总觉的上面讲的关于auto_ptr_ref的问题没有说清楚,查了网上的资料发现也没有说清。 也许还有很多朋友像我一样对此存在疑问。其实,这个问题有没有弄清楚,对实际编程影像并不大,但是本着“勿在浮沙筑高台”的精神,我用了一个晚上的时间,来个彻底的大调查,终于基本上弄明白了其中的道理。(大多数时间都浪费在VC上,因为 VC支持对右值的非 常应用,而标准C++不可以,所以在VC中,有没有 阅读全文
posted @ 2013-12-03 18:18 cavehubiao 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 第一次遇到这种题,属于什么类型的都没看明白...然后自己用贪心写,不知是USACO数据有点弱还是咋样,前面8个差不多都是秒过,仅是最后一个和答案相差1,结果我以为自己的解法没错,可能只是边界数据没处理好,调了半天,后来想想可能是我的解法比较碰巧,前面8个都能过...网上查,才明白这是一类问题,有很明确的解法,这里可以用比较简单的匈牙利算法,写起来很简单,但是我还没彻底理解清楚,涉及到二分图,增广路径这几个概念,可以参考下百度百科的匈牙利算法看看这里我贴上我开始错误的贪心,和模仿别人写的匈牙利。 1 /* 2 3 ID: hubiao cave 4 5 PROG: stall4 6 7 L... 阅读全文
posted @ 2013-12-01 17:06 cavehubiao 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 很经典的题目,我没做出来,参照这例程写的,这题真的好好琢磨一下了#includeusing namespace std;int main(){ int n; cin>>n; int*l=new int[n+1](); int*r=new int[n+1](); int*c=new int[n+1](); int*td=new int[n+1]; int*d=new int[n+1]; int maxh=0,maxi; for(int i=0;i>td[i]; if(td[i]>maxh) { ... 阅读全文
posted @ 2013-11-28 15:44 cavehubiao 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 5A,5B直接实现,没有什么难度,主要是要读懂题,例如5B...5C dp可惜我又没想出来,好伤感...菜鸡的春天在哪里啊...看了下官方的tutorial,讲的很清楚,两个数组d[n],c[n]d[i],记录i位置‘)’对应的‘(’位置,当然前提是要第i个是‘(’,如果不存在则d[i]=-1;c[i],记录以i处的‘)’为结尾的最长子串的第一个‘(’的位置,如果不存在则-1;具体实现要维护一个栈,从0开始,如果是‘(,入栈所在位置;如果是')',使得c[i]=d[i]=stack.top();如果stack为空c[i]=d[i]=-1;同时,判断d[i]-1处是不是' 阅读全文
posted @ 2013-11-27 22:38 cavehubiao 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 看到effective c++上总结的class rational{public: rational(int numerator=0,int denominator=1); friend const rational& operator*(const rational&lhs, const rational&rhs);private:int n,d;}inline const rational& operator*(const rational&lhs,const rational&rhs){ rational result(lhs.n*rhs. 阅读全文
posted @ 2013-11-26 22:31 cavehubiao 阅读(640) 评论(0) 推荐(0) 编辑
摘要: 4A简直逗..4B很简单的贪心,首先判断一下min的和是否大于sum或者max的和是否小于sum,如果是则不可能否则,首先先取每天已学习min的时间,最后一个个加到max,等于sum时退出。4C我nc,看到就以为要用字符串hash,照着写个BKDRHash,最后添加尾部的数字搞了半天,到了10000个字符串时就是过不去,想了下hash取模不能保证一定无冲突.后来看人题解map int记录次数...简直太简单了..4D dp,绕了好久,后来想通,首先把不可能装礼物的盒子去掉再dp,这里要注意下,严格满足w1>w2&&h1>h2的,要保证1在2后面,不然dp会有问题./ 阅读全文
posted @ 2013-11-19 23:52 cavehubiao 阅读(287) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 10 ··· 17 下一页