LOJ2500 NOIP2014 飞扬的小鸟


LINK


题目大意就是说有n个柱子,在每一秒你可以选择不点下降高度y和点p次上升x∗p,若果当前位置加上x∗p大于上界m,就会停在m。
如果可以成功穿越所有柱子输出最小点击次数,否则输出最多可以穿越的柱子数量


感觉是非常显然的DP,如果不点就是一个01背包,在点的时候是一个完全背包
所以可以设dp[i][j]是到达第i列高度为j的最小步数

然后可以发现转移
dp[i][j]=min(dp[i−1][j−x[i]∗p]+p)
向下掉的时候是这样的
dp[i][j]=dp[i−1][j+y[i]]
然后在实现完全背包的时候可以变成每次只考虑一次点击的贡献然后加上所有的贡献就好了

然后是注意在完全背包转移的时候先不能考虑下界的影响因素,因为默认转移的时候还没有到达下一根柱子
最后转移完了再把下界的影响加上

然后就是向下降落的情况要在上升之后讨论才行


 #include<bits/stdc++.h>
using namespace std;
#define M 1010
#define N 10010
#define INF 0x3f3f3f3f
int dp[][N],ind=;
int n,m;
int k,p[N],l[N],r[N];
int x[N],y[N];
int main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=;i<=n;i++)scanf("%d%d",&x[i],&y[i]);
for(int i=;i<=k;i++){
int p,ll,rr;
scanf("%d%d%d",&p,&ll,&rr);
l[p]=ll+;r[p]=rr-;
}
for(int i=;i<=n;i++)if(l[i]==&&r[i]==)l[i]=,r[i]=m;
for(int i=;i<=m;i++)dp[ind][i]=;
int tot=;
for(int i=;i<=n;i++){
ind^=;
memset(dp[ind],0x3f,sizeof(dp[ind]));
int dw=l[i],up=r[i];
for(int j=x[i];j<=up;j++)
dp[ind][j]=min(dp[ind][j],min(dp[ind^][j-x[i]],dp[ind][j-x[i]])+);
if(up==m)for(int j=m-x[i];j<=m;j++)
dp[ind][m]=min(dp[ind][m],min(dp[ind^][j],dp[ind][j])+);
for(int j=dw;j<=min(up,m-y[i]);j++)
dp[ind][j]=min(dp[ind][j],dp[ind^][j+y[i]]);
for(int j=;j<dw;j++)dp[ind][j]=INF;
bool check=;
for(int j=;j<=m;j++)
if(dp[ind][j]!=INF){check=;break;}
if(!check){printf("0\n%d",tot);return ;}
if(l[i]>||r[i]<m)tot++;
}
int ans=INF;
for(int i=;i<=m;i++)ans=min(ans,dp[ind][i]);
printf("1\n%d",ans);
return ;
}

最新文章

  1. [iOS]创建一像素的线
  2. HTML5 十大新特性(二)——表单新特性
  3. Makefile 开发环境全能管家
  4. 最长公共子串 NYOJ 36
  5. I.MX6 32G SD卡测试
  6. 【USACO】
  7. hbase单机环境的搭建和完全分布式Hbase集群安装配置
  8. Java基础知识强化之集合框架笔记09:Collection集合迭代器使用的问题探讨
  9. win7 清理系统
  10. windows文件快速搜索软件推荐
  11. Java中常用来处理时间的三个类:Date、Calendar、SimpleDateFormate,以及Java中的单例设计模式:懒汉式、饿汉式以及静态内部类式
  12. 【转】C++ STL快速入门
  13. 学习TensorFlow,邂逅MNIST数据集
  14. git知识总结-2.git基本操作之操作汇总
  15. 关于 git 本地创建 SSH Key 遇到的一点问题(①file to save the key &amp; ②the authenticity of host...)
  16. PHP优化与提升
  17. iOS下拉刷新和上拉刷新
  18. Java利用ScriptEngineManager对计算公式的支持
  19. ARC 058
  20. JQuery如何实现双击事件时不触发单击事件,解决鼠标单双击冲突问题

热门文章

  1. [WCF安全1]使用basicHttpBinding构建UserName授权的WCF应用程序
  2. Delphi编码转换
  3. 英语每日阅读---6、VOA慢速英语(翻译+字幕+讲解):性格沉静内向的人 能为社会创造更多价值
  4. Java的 final 关键字
  5. 《深入理解mybatis原理3》 Mybatis数据源与连接池
  6. DXVA2解码数据用texture纹理渲染
  7. 51NOD-1960-数学/贪心
  8. javascript 事件委托 event delegation
  9. 20165202 实验二 Java面向对象程序设计
  10. Memcached 补充