传送门

题意:有长度为m的字符串n个,代表n天的课表,1表示这个时间要上课,0表示不要上课,一天在学校时间为第一个1到最后一个1的时间。然后,可以逃k次课,求在学校的最少时间。
思路:预处理出g[i][k]表示第i天逃k节课呆在学校的最少时间。预处理中记录每天1的个数,然后和1出现的下表,然后枚举长度1,取一手最小值。接下来分组背包。

#include<bits/stdc++.h>
#define debug(a) cout << #a << " " << a << endl
#define LL long long
#define PI acos(-1.0)
#define eps 1e-6
const int N=500+7;
int g[N][N];
int dp[N][N];
char str[N];
using namespace std;
init()
{for(int i=0;i<507;i++)for(int j=0;j<507;j++)dp[i][j]=1e9;
}
int main ()
{//yyy_3y//freopen("1.in","r",stdin);int n,m,lim; scanf("%d%d%d",&n,&m,&lim);for(int i=1;i<=n;i++){scanf("%s",str+1);init();vector<int> stk;int cnt=0;for(int j=1;j<=m;j++){if(str[j]=='1'){cnt++;stk.push_back(j);}}for(int j=0;j<=lim;j++){if(cnt<=j) g[i][j]=0;else {g[i][j]=m;for(int k=0;k+(cnt-j-1) < cnt;k++){g[i][j]=min(g[i][j],stk[k+cnt-j-1]-stk[k]+1);}}//        printf("%d %d %d\n",i,j,g[i][j]);}}for(int j=0;j<=lim;j++) dp[1][j]=g[1][j]; for(int i=2;i<=n;i++){for(int j=lim;j>=0;j--){for(int k=0;k<=j;k++){dp[i][j]=min(dp[i][j],dp[i-1][j-k]+g[i][k]);}}}printf("%d\n",dp[n][lim]);return 0;
}

codeforces_946D_Timetable(分组背包)相关推荐

  1. 分组背包----HDU1712 ACboy needs your help

    很简单的一道分组背包入门问题.不多解释了. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring&g ...

  2. [bzoj1025][SCOI2009]游戏 (分组背包)

    Description windy学会了一种游戏.对于1到N这N个数字,都有唯一 且不同的1到N的数字与之对应.最开始windy把数字按顺序1,2,3,--,N写一排在纸上.然后再在这一排下面写上它们 ...

  3. HDU 3033 I love sneakers! (分组背包变形)

    题目大意:xx去买鞋,有k种牌子,然后给出n双鞋,每双鞋有它属于的牌子.价格.收藏价值.xx认为他不差钱,要求每种鞋子买一双.但实际上他只有m毛钱,问能否买到符合xx要求的鞋,能找到的话输出最大的收藏 ...

  4. hdu 1712(分组背包)

    题意:有N个课程,然后选择M天内学习的效益最大值,注意每个课程最多选取一次. 解题思路:裸的分组背包,把每门课程看做是每一组,每一组里面最多选择一个天数,典型的分组背包.详见背包九讲 #include ...

  5. hdu 3033(分组背包)

    题意:有S款运动鞋,一个n件,总钱数为m,求不超过总钱数且每款鞋子至少买一双的情况下,使价值最大.如果 有一款买不到,就输出"Impossible". 解题思路:分组背包,和背包九 ...

  6. zcmu2165(分组背包)

    2165: 黄金矿工 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 86  Solved: 41 [Submit][Status][Web Board ...

  7. 2019年湘潭大学程序设计竞赛(重现赛)补题:H.Chat(分组背包)

    链接:https://ac.nowcoder.com/acm/problem/25581 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536 ...

  8. P1064 金明的预算方案(分组背包)

    https://www.luogu.org/problemnew/show/P1064 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间.更让他高兴的是,妈 ...

  9. 【题解】luogu P1757 通天之分组背包

    分组背包类型 总结: 1.先循环体积,再循环每组内的物品,保证每组物品内只选一次. 若调换位置,有可能每组内物品多选了. 2.num数组记录每组有多少个物品: belong数组记录每组物品的每一个物品 ...

  10. 2020CCPC(威海) - Clock Master(数论+分组背包)

    题目大意:给出一个数字 n ,要求分解成:a[ 0 ] + a[ 1 ] + ... +  a[ m ] = n,( m 没有约束 ),使得 lcm( a[ 0 ] , a[ 1 ] , ... a[ ...

最新文章

  1. mysql 优化器代码_Mysql查询优化器
  2. 头条+腾讯 双杀面经(NLP实习)
  3. pycharm的项目文件中包括什么_工程建设施工招标项目的招标文件包括哪些内容?...
  4. Windows进程系列(2) -- Svchost进程
  5. Kubernetes API 与 Operator,不为人知的开发者战争
  6. weakhashmap_Java WeakHashMap entrySet()方法与示例
  7. 表达式 jsp_[JSTL表达式] -JSTL中的所有,都在这
  8. 几种无线通讯介绍与比较(蓝牙,WiFi,IrDA,NFC,Zigbee,UWB)
  9. js请求后台接口返回的图片并转为base64
  10. 【JavaEE】第一章线程和多线程
  11. oracle合并列的函数wm_concat
  12. 数学建模之matlab入门篇
  13. ftp服务器文件不让上传,ftp服务器不让上传文件
  14. 星空编程 小甲鱼c语言,c++快速入门(小甲鱼)
  15. 一份网站的商业计划书内容概要
  16. Codeforces 1389 C. Good String(枚举)
  17. 喂,恶臭青年,你还想继续单身?今天特别福利来袭,出来挨打!
  18. 微信小程序显示当前时间
  19. 关于移动Web性能的五大神话
  20. userdel、usermod命令详解

热门文章

  1. TIC TAC TOE 井字游戏
  2. java上传文件夹文件
  3. 我的前端故事----疯狂倒计时(requestAnimationFrame)
  4. diskpart clean 误操作恢复
  5. 006Python-Re库入门(正则表达式)
  6. 串的模式匹配算法 ← BF算法
  7. matlab解决相遇追及问题,生活中用到的数学例子
  8. ueditor php上传word,ueditor百度编辑器上传PDF并显示
  9. 谣言检测论文精读——1.IJCAI2016-Detecting Rumors from Microblogs with Recurrent Neural Networks
  10. 【POJ 2719 --- Faulty Odometer】