魔法少女
来源:互联网 发布:mac vi保存退出 编辑:程序博客网 时间:2024/04/27 15:42
魔法少女
时间限制:1000 ms | 内存限制:65535 KB
难度:3
- 描述
- 前些时间虚渊玄的巨献小圆着实火了一把。 在黑长直(小炎)往上爬楼去对抗魔女之夜时,她遇到了一个问题想请你帮忙。 因为魔女之夜是悬浮在半空的,所以她必须要爬楼,而那座废墟一共有n层,而且每层高度不同,这造成小炎爬每层的时间也不同。不过当然,小炎会时间魔法,可以瞬间飞过一层或者两层[即不耗时]。但每次瞬移的时候她都必须要至少往上再爬一层(在这个当儿补充魔力)才能再次使用瞬移。爬每单位高度需要消耗小炎1秒时间。 消灭魔女之夜是刻不容缓的,所以小炎想找你帮她找出一种最短时间方案能通往楼顶。
- 输入
- 本题有多组数据,以文件输入结尾结束。
每组数据第一行一个数字N(1 <= N <= 10000),代表楼层数量。
接下去N行,每行一个数字H(1 <= H <= 100),代表本层的高度。 - 输出
- 对于每组数据,输出一行,一个数字S,代表通往楼顶所需的最短时间。
- 样例输入
535184
- 样例输出
1
简单的动态规划,dp[i][0]表示不需要仙法到达这一层,到达这一层的方法和第i-1层有关,也就是可能是走着到达第i-1层,或者是使用仙法到达第i-1层,最后从i-1层走到i层,也就是dp[i][0]=min(dp[i-1][0],dp[i-1][1])+a[i]。dp[i][1]表示需要仙法到达这一层,到达这一层和第i-1层,还有i-2层有关,可能是从i-1层使用仙法过来的,也可能是从i-2层使用仙法过来的,因为仙法不能连续使用,所以到达i-1层和到达i-2层只能是不用仙法到达的,所以dp[i][1]=min(dp[i-1][0],dp[i-2][0])。
#include<stdio.h>#include<iostream>#include<string.h>using namespace std;int a[10010];int dp[10010][10];int main(){ int n; while(scanf("%d",&n)!=-1) { for(int i=1; i<=n; i++) { scanf("%d",&a[i]); } memset(dp,0,sizeof(dp)); dp[1][0]=a[1],dp[1][1]=0; for(int i=2;i<=n;i++) { for(int j=0;j<=1;j++) { if(j==0) { dp[i][0]=min(dp[i-1][0],dp[i-1][1])+a[i]; } else { dp[i][1]=min(dp[i-1][0],dp[i-2][0]); } } } int m=min(dp[n][0],dp[n][1]); printf("%d\n",m); }}
0 0
- 魔法少女
- 魔法少女
- 魔法少女
- 魔法少女
- nbut_1010 魔法少女 dp
- 拯救魔法少女
- BZOJ4399: 魔法少女LJJ
- nyist 1204 魔法少女
- nyoj 1204魔法少女
- 4399: 魔法少女LJJ
- 【NOJ】[1010] 魔法少女
- nyoj 魔法少女(简单dp)
- nyoj1204 魔法少女 线性DP
- BZOJ4399: 魔法少女LJJ treap
- BZOJ 4399: 魔法少女LJJ
- 南阳OJ 1204 魔法少女
- NYOJ 1204 魔法少女 简单DP
- NYOJ1204-魔法少女(动态规划)
- vlc 做rtp、rtsp调试
- Python 面试题(全面)
- Visual Studio控制台程序输出窗口一闪而过的解决方法
- Android主流网络请求开源库的对比(Android-Async-Http、Volley、OkHttp、Retrofit)
- java单例模式 原子类 线程安全
- 魔法少女
- android布局属性
- Android Studio混淆常见错误
- ionic 在 Android 下的 release 打包
- C++文件流-fstream-ifstream-ofstream
- Unittest操作简单实例进行系统讲解测试用例
- spi nor flash使用汇总
- Pandas:Data_Structure_Series
- 工作流学习——Activiti整体认识二步曲