- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2016.10.1期 清北学堂 整理
Day 1:(何家傲)
STL:
HYPERLINK /suishiguang/ 见我的博客,妥妥的~~
Day 2:(黎才华)
动态规划:
记忆化搜索:
上例题:~~
Poj 1088
题目大意:给出一个二维数组让你在数组中找出最长下降序列的长度,可以向四个方向行走,起点任意,如下答案为25
1 2 3 4 5
16 17 18 19 6
15 24 25 200 7
14 23 22 21 8
13 12 11 10 9
可以每个点都搜一遍,这样显然能搜出来,对于每一个点,进行一次深搜,这样搜的话不用记录哪些格子已经搜过,因为他要能走才能继续搜下去,然而,这样会有一个显著的问题,
会超时!!!!
记忆化搜索:
观察样例:
从 24 开始:24-23-....-1;
从 25 开始:25-24-23-....-1;
从25开始,搜索到24,接下来的长度在搜索24的时候已经搜过,
所以,加一个数组,计入该店的长度,若该点有数值??接return ,没有搜过的时候才继续下去搜索,这样就避免了很多重复的工作。
背包DP:话不多说~~~上代码
Tyvj 1005 (01)
#includeiostream
#includecstdio
#includecstring
using namespace std;
int T,M;
int f[101][1001];
int v[101],t[101];
int main()
{
scanf(%d%d,T,M);
for (int i=1;i=M;i++)
{
cint[i];
cinv[i];
}
/*for(int i=1;i=T;i++)
{
if(it[1])
f[1][i]=0;
else
f[1][i]=v[i];
}*/
for (int i=1;i=M;i++)
{
for (int j=1;j=T;j++)
{
if(j=t[i])
f[i][j]=max(f[i-1][j],f[i-1][j-t[i]]+v[i]);
else
f[i][j]=f[i-1][j];
}
}
int ans=f[M][T];
printf(%d,ans);
}
Codevs 1025 选菜
#includecstdio
#includeiostream
using namespace std;
int n,m,x,v[101],f[1010],w[101],c[101],k,z[101],ans,maxn;
float b;
int main()
{
cinnmb;
x=(int)(b*10);
for(int i=1;i=n;i++) cinb,w[i]=(int)(b*10);
for(int i=1;i=n;i++) cinc[i];
for(int i=1;i=n;i++)
{
scanf(%d,k);
v[k]++;
if(v[k]1)
w[i]=c[i]=0;
else z[k]=i;
}
for(int i=1;i=m;i++)
{
scanf(%d,k);
ans+=c[z[k]];
x-=w[z[k]];
w[z[k]]=c[z[k]]=0;
}
for(int i=1;i=n;i++)
{
for(int j=x;j=w[i];j--)
{
f[j]=max(f[j],f[j-w[i]]+c[i]);
if(f[j]maxn) maxn=f[j];
}
}
printf(%d,maxn+ans);
return 0;
}// 01 背包 多了几个数组 跑必选菜时顺便去重 非必选菜跑一边最大值
POJ 2392
#includeiostream
#includecstdio
#includecstring
#includealgorithm
using namespace std;
int n;
struct node{
int h;
int a;
int c;
bool operator (const node xxx)const
{
return axxx.a;
}
}e[600];
int f[400000],num[400000];
int main()
{
cinn;
for(int i=0;in;i++)
cine[i].he[i].ae[i].c;
sort(e,e+n);
memset(f,0,sizeof f );
您可能关注的文档
- 2015年全国各地中考语文真题精选汇编:词语的运用与理解(含答案)讲解.doc
- 2016年全国硕士研究生统一入学考试政治真题及答案解析讲解.doc
- 2016年全国乙(新课标Ⅰ卷)生物部分(含答案及详解)讲解.doc
- 2016年人教版六年级上册月光曲(改)讲解.ppt
- 2015消防真题技术实物讲解.doc
- 2016年人教版四年级语文上册期末复习资料讲解.doc
- 2016年三门峡职业技术学院单招语文模拟试题及答案讲解.docx
- 2016年山东单招物理模拟试题:交变电流的产生讲解.docx
- 2016年山西自主招生物理模拟试题:功率讲解.docx
- 2015年山西省职业院校技能大赛--中职组沙盘模拟企业经营赛项规程讲解.doc
- 2015秋网络华工土木工程CAD随堂练习讲解.doc
- 2016_扩展语句讲解.ppt
- 2015全国电子设计大赛_开关电源类指导讲解.ppt
- 2016《国家基本药物临床应用指南(2012版)》最全答案讲解.doc
- 2016-2-22省立医院服务器区安全加固及应用交付方案讲解.docx
- 2015人文知识竞赛初赛讲解.ppt
- 2016-2017年造价工程师网络继续教育试题及答案(汇总)讲解.docx
- 2016-2017学年高中政治思想方法与创新意识第10课树立创新意识是唯物辩证法的要求(第1课时)课件讲解.ppt
- 2016-2017学年人教版九年级上第23章旋转复习与小结课件讲解.ppt
- 2016年小学五年级奥数逻辑推理2讲解.ppt
文档评论(0)