poj 2385 Apple Catching(dp)
2015-09-05 18:39
429 查看
Description
Input
Output
Sample Input
Sample Output
Hint
Source
USACO 2004 November
设dp[i][j]表示找到第i个苹果时,走了j步时 苹果的最大值。
首先要初始化,见代码
dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]);表示走或不走取最大值。然后判断是否能够dp[i][j]++。最后找出最大值
View Code
It is a little known fact that cows love apples. Farmer John has two apple trees (which are conveniently numbered 1 and 2) in his field, each full of apples. Bessie cannot reach the apples when they are on the tree, so she must wait for them to fall. However, she must catch them in the air since the apples bruise when they hit the ground (and no one wants to eat bruised apples). Bessie is a quick eater, so an apple she does catch is eaten in just a few seconds. Each minute, one of the two apple trees drops an apple. Bessie, having much practice, can catch an apple if she is standing under a tree from which one falls. While Bessie can walk between the two trees quickly (in much less than a minute), she can stand under only one tree at any time. Moreover, cows do not get a lot of exercise, so she is not willing to walk back and forth between the trees endlessly (and thus misses some apples). Apples fall (one each minute) for T (1 <= T <= 1,000) minutes. Bessie is willing to walk back and forth at most W (1 <= W <= 30) times. Given which tree will drop an apple each minute, determine the maximum number of apples which Bessie can catch. Bessie starts at tree 1.
Input
* Line 1: Two space separated integers: T and W * Lines 2..T+1: 1 or 2: the tree that will drop an apple each minute.
Output
* Line 1: The maximum number of apples Bessie can catch without walking more than W times.
Sample Input
7 2 2 1 1 2 2 1 1
Sample Output
6
Hint
INPUT DETAILS: Seven apples fall - one from tree 2, then two in a row from tree 1, then two in a row from tree 2, then two in a row from tree 1. Bessie is willing to walk from one tree to the other twice. OUTPUT DETAILS: Bessie can catch six apples by staying under tree 1 until the first two have dropped, then moving to tree 2 for the next two, then returning back to tree 1 for the final two.
Source
USACO 2004 November
设dp[i][j]表示找到第i个苹果时,走了j步时 苹果的最大值。
首先要初始化,见代码
dp[i][j]=max(dp[i-1][j],dp[i-1][j-1]);表示走或不走取最大值。然后判断是否能够dp[i][j]++。最后找出最大值
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<stdlib.h> #include<cmath> using namespace std; #define W 36 #define N 1006 int dp [W]; int n,w; int a ; int main() { while(scanf("%d%d",&n,&w)==2){ //int sum=0; for(int i=1;i<=n;i++){ scanf("%d",&a[i]); } memset(dp,0,sizeof(dp)); if(a[1]==1) dp[1][0]=1; dp[1][1]=1; for(int i=2;i<=n;i++){ for(int j=0;j<=w;j++){ if(j==0){ dp[i][j]=dp[i-1][j]+(j%2+1==a[i]); continue; } dp[i][j]=max(dp[i][j],dp[i-1][j]+(j%2+1==a[i])); dp[i][j]=max(dp[i][j],dp[i-1][j-1]+(j%2==a[i])); dp[i][j]=max(dp[i][j],dp[i-1][j-1]+(j%2+1==a[i])); } } printf("%d\n",dp [w]); } return 0; }
View Code
相关文章推荐
- Android - Looper / Handler / Message
- ios启动页面自定义设置方法
- android studio导入项目出现Gradle DSL method not found: ‘android()’
- Android Studio 快捷键
- Android 控件之十二:Gallery画廊
- android---listview
- Android 控件之十一:列表组件 ListView
- Android设计模式——单例模式(Singleton)
- Android 控件之十一:RatingBar评分条
- Android 控件之十:ProgressBar进度条
- Android 控件之九:DatePicker日期选择控件 DatePickerDialog日期选择对话框
- WebView加载HTML图片大小自适应与文章自动换行
- Android 控件之八:AutoCompleteTextView自动完成文本框
- android webview js交互, 响应webview中的图片点击事件
- Android 控件之七:Spinner 下拉列表
- [工具推荐]_iOS音频批量转换
- 移动端布局浅谈
- Cocos2d-JS 创建node节点示例
- Android ADB命令大全(通过ADB命令查看wifi密码、MAC地址、设备信息、操作文件、查看文件、日志信息、卸载、启动和安装APK等)
- Android 控件之六:RadioGroup and RadioButton 单选组和单选钮