题目链接: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)的更多相关文章

  1. 概率dp的边界处理 POJ 2096

    题目地址:https://vjudge.net/problem/POJ-2096 说的是有n个bug,和s个系统.现在一个人一天能发现一个bug,它可能是任何一个系统中的,也可能会发现已经发现过的bu ...

  2. 【BZOJ 3997】 3997: [TJOI2015]组合数学 (DP| 最小链覆盖=最大点独立集)

    3997: [TJOI2015]组合数学 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 919  Solved: 664 Description 给出 ...

  3. 区间dp E - Multiplication Puzzle POJ - 1651

    E - Multiplication Puzzle  POJ - 1651 这个题目没有特别简单,但是也没有我想象之中的那么难,这个题目时区间dp,因为我们是要对区间进行考虑的. 但是呢,这个也和动态 ...

  4. DP:Making the Grade(POJ 3666)

     聪明的修路方案 题目大意:就是农夫要修一条路,现在要求这条路要么就是上升的,要么就是下降的,总代价为∑|a[i]-b[i]|,求代价最低的修路方案, (0 ≤ β≤ 1,000,000,000) , ...

  5. DP:Islands and Bridges(POJ 2288)

    2015-09-21 造桥基建工程 题目大意,就是有n座岛和k座桥,要你找一条哈密顿圈(找完所有的岛,并且每个岛只经过一次),当经过一座岛就加上岛的价值,如果两岛联通,则加上两座岛的价值之积,如果三座 ...

  6. DP:Corn Fields(POJ 3254)

    北大教你如何高效养牛(误)(点我查看)  2015-08-21: 问题的大意就是有一片稻田,里面有很多坑,你要在上面种稻谷,然后呢田里面还会养牛,牛不喜欢扎堆吃饭,所以呢你种的稻谷要间隔种在坑里面,所 ...

  7. 【dp 背包变形】 poj 1837

    #include <cstdio> #include <memory.h> #include<iostream> using namespace std; ][]; ...

  8. (线性dp,LCS) POJ 1458 Common Subsequence

    Common Subsequence Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 65333   Accepted: 27 ...

  9. (树形DP)Strategic game POJ - 1463

    题意: 给你一棵树,树的每一个节点可以守护与其相连的所有边,问你最少用多少个节点可以守护这整棵树 思路: 仔细思考不难发现,要想守护一条边,边的两个端点必须有一个可以被选(两个都选也可以),然后这个问 ...

随机推荐

  1. vue 状态管理vuex(九)

    通过props 及 $emit在父子组件通讯,对应频繁更新状态考虑使用vuex store.js export default { // 存储状态值 state: { count: 0 }, // 状 ...

  2. Microsoft使用技巧

    1.拍摄屏幕内容的截图 按 Win + Shift + S 以打开截图栏,然后将光标拖动到要捕获的区域. 截图区域将保存到剪贴板. 2.使用键盘添加表情符号 随心随处表达自我. 按 Ctrl + Sh ...

  3. VC6.0开发中一些链接错误的解决方法

    (1)error LNK2001: unresolved external symbol _main 编号:LNK2001 直译:未解决的外部符号:_main. 错误分析:缺少main函数.看看mai ...

  4. 百度Echart 地图

    使用百度地图做一个全国地图数据分析的功能,如下图 代码 <%@ Page Language="C#" AutoEventWireup="true" Cod ...

  5. robot framework 的AutoItLibrary常用关键字

    1.run 的用法,以及激活当前窗口

  6. Unity Animation动画倒播

  7. [转]dataTables-使用详细说明整理

    本文转自:http://blog.csdn.net/mickey_miki/article/details/8240477 本文共四部分:官网 | 基本使用|遇到的问题|属性表 一:官方网站:[htt ...

  8. Linux平台命令挂载U盘——实现数据共享

    废话少说,一一道来,Linux中按照步骤来做就可以啦.(嵌入式平台) 1.先看看本地的mount信息 # mountrootfs on / type rootfs (rw)/dev/root on / ...

  9. 案例49-crm练习获取客户列表带有分页和筛选功能

    1 案例分析 2 书写步骤 1.封装PageBean 2.书写Action 3.书写Service 4.书写Dao   注意清空之前设置的聚合函数  dc.setProjection(null); 5 ...

  10. ubuntu .net core The specified framework 'Microsoft.NETCore.App', version '1.0.1' was not found

    想在ubuntu下试试.net core mvc,按照官方教程走完,然后把在window 下做好的项目想在ubuntu下试试,然后输入了 git clone https://github.com/ka ...