2016SDAU课程练习三1007
2016-05-30 22:47
281 查看
1.题目编号:1007
2.简单题意:多重背包问题
3.解题思路形成:0 1 2 3 4 5 6 7 8 9 10然后套路
4.感想:不懂,,,抄的
5.AC代码:
# include <iostream>
# include <cstdio>
# include <cstring>
using namespace std;
int dp[100005][15];
int Max(int x, int y)
{
return x>y?x:y;
}
int main ()
{
int n;
while (scanf("%d", &n) != EOF)
{
if(n == 0)
break;
memset(dp, 0, sizeof(dp));
int x, t, maxt = -1;
for (int i = 1; i <= n; i++)
{
scanf("%d%d", &x, &t);
if(maxt < t)
maxt = t;
dp[t][x + 1]++;
}
for (int i = maxt; i >= 0; i--)
{
for (int j = 1; j <= 11; j++)
{
dp[i][j] += Max(Max(dp[i + 1][j - 1], dp[i + 1][j + 1]), dp[i + 1][j]);
}
}
printf("%d\n", dp[0][6]);
}
return 0;
}
2.简单题意:多重背包问题
3.解题思路形成:0 1 2 3 4 5 6 7 8 9 10然后套路
4.感想:不懂,,,抄的
5.AC代码:
# include <iostream>
# include <cstdio>
# include <cstring>
using namespace std;
int dp[100005][15];
int Max(int x, int y)
{
return x>y?x:y;
}
int main ()
{
int n;
while (scanf("%d", &n) != EOF)
{
if(n == 0)
break;
memset(dp, 0, sizeof(dp));
int x, t, maxt = -1;
for (int i = 1; i <= n; i++)
{
scanf("%d%d", &x, &t);
if(maxt < t)
maxt = t;
dp[t][x + 1]++;
}
for (int i = maxt; i >= 0; i--)
{
for (int j = 1; j <= 11; j++)
{
dp[i][j] += Max(Max(dp[i + 1][j - 1], dp[i + 1][j + 1]), dp[i + 1][j]);
}
}
printf("%d\n", dp[0][6]);
}
return 0;
}
相关文章推荐
- 五种函数定义方式----第五种是重点
- ThinkPHP(6)——模板技术
- ThreadPoolExecutor机制
- 初步bash
- iOS中的窗口与视图
- CV图像转换
- Android笔记:intent
- Linux:用户与权限
- 中间件
- java多线程---等待/唤醒以及生产者消费者经典同步synchronized的实现
- Yii2-GridView常见操作
- Unity3d PackingTag 字母大小写问题,导致图集错误
- 单片机软件定时器的使用方法
- 如何通过jd-gui反编译后使用BCCompare比较源码忽略不重要差异时不显示红色
- JAVA_OA管理系统(四)番外篇:使用Spring注解注入属性
- 在浏览器里启用混合内容
- 芝麻信用
- 项目4——立体类族共有的抽象类
- Html学习(7) - 画中画
- ASP.NET Core管道深度剖析(3):管道是如何处理HTTP请求的?