ACM3-1007
来源:互联网 发布:淘宝买的鲜人参怎么样 编辑:程序博客网 时间:2024/06/07 22:38
Problem G
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 137 Accepted Submission(s) : 44
65 14 16 17 27 28 30
4
状态pie[i][j]表示i时刻在坐标j出最多能接到的馅饼数。
状态转移方程:
pie[i][j] = Max(pie[i+1][j-1], pie[i+1][j], pie[i+1][j+1]) + pie[i][j].
最后pi[0][5]即为所求结果。
#include <stdio.h>
#include <string.h>
#include <math.h>
#define MAX 100001
int pie[MAX][12]; /*pie[i][j]表示在i时刻落在j点的馅饼数量*/
int MaxOf2(int a, int b){
return (a > b) ? a : b;
}
int MaxOf3(int a, int b, int c){
int max = (a > b) ? a : b;
return (max > c) ? max : c;
}
int MaxNumOfPie(int max_time){
int i, j, max;
for (i = max_time - 1; i >= 0; --i){
pie[i][0] = MaxOf2(pie[i+1][0], pie[i+1][1]) + pie[i][0];
/*printf("%d ", pie[i][0]);*/
for (j = 1; j < 10; ++j){
pie[i][j] = MaxOf3(pie[i+1][j-1], pie[i+1][j], pie[i+1][j+1]) + pie[i][j];
/*printf ("%d ", pie[i][j]);*/
}
pie[i][10] = MaxOf2(pie[i+1][10], pie[i+1][9]) + pie[i][10];
/*printf ("%d\n", pie[i][10]);*/
}
return pie[0][5];
}
int main(void){
int n;
int i;
int time;
int location;
int max_time;
while (scanf("%d", &n) != EOF && n != 0){
memset(pie, 0, sizeof(pie));
max_time = -1;
for (i=1; i<=n; ++i){
scanf ("%d%d", &location, &time);
++pie[time][location];
if (max_time < time)
max_time = time;
}
printf ("%d\n", MaxNumOfPie(max_time));
}
return 0;
}
- ACM3-1007
- ACM3-1006
- ACM3-1002
- ACM3-1003
- ACM3-1005
- ACM3-1016
- ACM3-1018
- ACM3-1024
- ACM3-1013
- ACM3-1022
- ACM3-1015
- ACM3-1014
- ACM3-1010
- 寒假杭电acm3
- Acm3-栈、队列、及移位运算符
- 1007
- 1007
- 1007
- Android_自己写的简单上拉加载
- Assets文件夹
- 你想跳槽,五个错不要犯!
- C#学习笔记集合类型之数组(3)
- MySQL的grant,revoke使用
- ACM3-1007
- PID12 / 陶陶摘苹果 ☆
- java static
- CSS特效代码整理
- web页面位置详解
- 深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例
- Openfire问题记录
- 关于极光推送我做的工作
- Android中的动态加载机制