题目链接: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. source vs export AND ctrl d vs ctrl z

    在脚本中export,只在当前shell脚本进程和子进程中有效 source的作用中是将export的变量在当前脚本环境生效, 如果是在父脚本中执行source,在子脚本中执行export, 父脚本退 ...

  2. mybatis 动态行转列

    SELECT user_name , MAX(CASE course WHEN '数学' THEN score END ) 数学, MAX(CASE course WHEN '语文' THEN sco ...

  3. SQL datetime和smalldatetime区别

    datetime 存储大小8个字节,精确到分后的3为小数,日期范围从1753 年 1 月 1 日到 9999 年 12 月 31 日:而 smalldatetime存储大小为4个字节,精确到分,日期范 ...

  4. Android官方架构组件介绍之LifeCycle(一)

    Android官方架构组件介绍之LifeCycle 下面是官方提供的Android App开发的架构图: 从上图可以看到一些关键字:ViewModel,LiveData,Room等.其实看了上面视频的 ...

  5. sql 中单引号内嵌套单引号该怎么解决

    # 在mybatis 中写过一个比较少见的sql, 单引号呢需要嵌套一个单引号,使用双引号就会报错,怎么解决呢: * 这个时候可以使用两个单引号,eg : select id from pgr_dij ...

  6. Tree UVA - 548(二叉树递归遍历)

    题目链接:https://vjudge.net/problem/UVA-548 题目大意:给一颗点带权(权值各不相同,都是小于10000的正整数)的二叉树的中序遍历和后序遍历,找一个叶子结点使得它到根 ...

  7. UnityError SocketException: 以一种访问权限不允许的方式做了一个访问套接字的尝试。

    SocketException: 以一种访问权限不允许的方式做了一个访问套接字的尝试. 以管理员身份运行Unity就可以了,权限不够的问题.

  8. IBM-内存管理内幕 动态分配的选择、折衷和实现

    https://www.ibm.com/developerworks/cn/linux/l-memory/ 为什么必须管理内存 内存管理是计算机编程最为基本的领域之一.在很多脚本语言中,您不必担心内存 ...

  9. RMAN参数详解

    在Oracle 10g中的配置情况使用RMAN>show all;可以显示出RMAN 配置参数为: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # d ...

  10. Lombok使用与问题

    前言 想想已经工作了一年,工作中遇到的问题一直没有记录下来,以后遇到相同的问题可能还需要花费很多的时间,因此打算记录一下博客.方便以后自己的复习和问题查找 刚好最近项目引入了Lombok,刚好从现在起 ...