DP上课覆盖知识点,POJ(1513)
题目链接:http://poj.org/problem?id=1513
解题报告:
思路:
知识点从第二个开始扫,递推表达式是:minlec[i]=min(minlec[k])+1,并且要保证,time[k+1]+...+time[i]<L,即在一节课之内上完知识点k+1到知识点i;
要是minlec[i]==minlec[k]+1;就要比较他的不满意度了。
很有趣的一道题,不过还是WA了很多次,还有一点就是输出格式。
#include<cstdio>
#include<iostream>
using namespace std; int C; int DI(int t)
{
if(t==) return ;
else if(t>=&&t<=) return -C;
else return (t-)*(t-);
} int main()
{
int n,L,count=,i,j;
int time[]; ///每个知识点要的时间
int minLec[]; ///知识点1~i最少要上的课的节数
int minDis[]; ///对应的不满意度 while(scanf("%d",&n),n)
{
count++;
if(count>)
printf("\n"); scanf("%d %d",&L,&C); for(i=;i<=n;i++)
scanf("%d",&time[i]);
minLec[]=minDis[]=; minLec[]=;
minDis[]=DI(L-time[]); for(i=;i<=n;i++)
{
minLec[i]=minLec[i-]+;
minDis[i]=minDis[i-]+DI(L-time[i]); int sum=time[i];
for(j=i-;j>;j--)
{
sum+=time[j];
if(sum<=L)
{
int cost=minDis[j-]+DI(L-sum);
if(minLec[i]>minLec[j-]+)
{
minLec[i]=minLec[j-]+;
minDis[i]=cost;
}
else if(minLec[i]==minLec[j-]+)
minDis[i]=minDis[i]>cost?cost:minDis[i];
}
else
break;
}
}
printf("Case %d:\n\n",count);
printf("Minimum number of lectures: %d\n",minLec[n]);
printf("Total dissatisfaction index: %d\n",minDis[n]);
}
return ;
}
DP上课覆盖知识点,POJ(1513)的更多相关文章
- 概率dp的边界处理 POJ 2096
题目地址:https://vjudge.net/problem/POJ-2096 说的是有n个bug,和s个系统.现在一个人一天能发现一个bug,它可能是任何一个系统中的,也可能会发现已经发现过的bu ...
- 【BZOJ 3997】 3997: [TJOI2015]组合数学 (DP| 最小链覆盖=最大点独立集)
3997: [TJOI2015]组合数学 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 919 Solved: 664 Description 给出 ...
- 区间dp E - Multiplication Puzzle POJ - 1651
E - Multiplication Puzzle POJ - 1651 这个题目没有特别简单,但是也没有我想象之中的那么难,这个题目时区间dp,因为我们是要对区间进行考虑的. 但是呢,这个也和动态 ...
- DP:Making the Grade(POJ 3666)
聪明的修路方案 题目大意:就是农夫要修一条路,现在要求这条路要么就是上升的,要么就是下降的,总代价为∑|a[i]-b[i]|,求代价最低的修路方案, (0 ≤ β≤ 1,000,000,000) , ...
- DP:Islands and Bridges(POJ 2288)
2015-09-21 造桥基建工程 题目大意,就是有n座岛和k座桥,要你找一条哈密顿圈(找完所有的岛,并且每个岛只经过一次),当经过一座岛就加上岛的价值,如果两岛联通,则加上两座岛的价值之积,如果三座 ...
- DP:Corn Fields(POJ 3254)
北大教你如何高效养牛(误)(点我查看) 2015-08-21: 问题的大意就是有一片稻田,里面有很多坑,你要在上面种稻谷,然后呢田里面还会养牛,牛不喜欢扎堆吃饭,所以呢你种的稻谷要间隔种在坑里面,所 ...
- 【dp 背包变形】 poj 1837
#include <cstdio> #include <memory.h> #include<iostream> using namespace std; ][]; ...
- (线性dp,LCS) POJ 1458 Common Subsequence
Common Subsequence Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 65333 Accepted: 27 ...
- (树形DP)Strategic game POJ - 1463
题意: 给你一棵树,树的每一个节点可以守护与其相连的所有边,问你最少用多少个节点可以守护这整棵树 思路: 仔细思考不难发现,要想守护一条边,边的两个端点必须有一个可以被选(两个都选也可以),然后这个问 ...
随机推荐
- 云数据库 Redis 缓存 PHP session 变量
1.安装 phpredis 扩展. wget https://github.com/nicolasff/phpredis/archive/master.zip unzip master.zip cd ...
- mybatis主键是在insert前生成还是之后生成
oracle sequence 推荐每个表使用自己的sequence mysql 使用每个表的autoincreate来当主键 mybatis 操作insert时 主键的生成是在插入之前 还是之后? ...
- C++文件读写函数之——fopen、fread和fwrite、fgetc和fputc、fgets和fputs、ftellf和fseek、rewind
由于最近经常使用到c语言中的读写文件,所以在此总结以下,方便以后查找. 在c中,文件操作都是由库函数来实现的,主要是分为读和写两种操作,以下详细讲解以下所有有关文件操作的邯郸乎的用法: //C++写入 ...
- 在Docker中部署Asp.net core2.1以及修改发布
https://blog.csdn.net/sd7o95o/article/details/80809734 本篇文章主要是如何在Docker容器中运行ASP.NET Core应用程序,以及修改系 ...
- vmware虚拟机提示:无法将Ethernet0连接到虚拟网络vmnet02018-03-07
编辑——虚拟机网络编辑——还原虚拟机网络配置可以解决
- docker 镜像保存为文件及从文件导入镜像的方法
1.保存镜像为文件 docker save -o 要保存的文件名 要保存的镜像 举例: docker save -o 2.从文件载入镜像 docker load --input 文件或者docker ...
- 使用 Fetch完成AJAX请求
使用 Fetch完成AJAX请求 写在前面 无论用JavaScript发送或获取信息,我们都会用到Ajax.Ajax不需要刷新页面就能发送和获取信息,能使网页实现异步更新. 几年前,初始化Ajax一般 ...
- Android NDK开发 JNI操作java构造方法,普通方法,静态方法(七)
Android NDK开发 JNI操作java普通.静态.构造方法 1.Jni实例化一个Java类的实例jobject 1.通过FindClas( ),获取Java类的的jclass 2.通过GetM ...
- 前台js escape及后台C# Server.UrlEncode 对QueryString传参的含~!@#$%^&*等特殊字符的处理
通常情况下,我们在List列表页面,会包含Create,Edit,Delete等操作按钮, 而通常的处理是: Create按钮跳转到DataCreate.aspx Edit按钮跳转到DataEdit. ...
- SSM-@Transactional 注释不生效
1.在applicationConext.xml 中配置事务注解驱动 <!-- 事务注解驱动 --> <tx:annotation-driven /> <!-- 配置事务 ...