题意 n天的课程,每天有m个时间单位.若时间i和j都有课,那么要在学校待\(j-i+1\)个时间.现在最多能翘k节课,问最少能在学校待多少时间. 分析 将一天的内容视作一个背包的组,可以预处理出该天内翘k节课能得到的最多空闲时间.\(val[i][k]\)表示第i天中翘k节课能够获取最多的时间,暴力枚举左右分别翘\(p\)和\(k-p\)节课,取最大值.这样相当于得到了每个组内的物品重量(翘的课数)和价值(得到的空闲时间).再做一次分组背包求出能获得的最大空闲时间,用总的时间减去得到最少要待在学…
传送门 题意简述:有一个人上n天课,每天有m个小时的时间安排表(一个01串),为1表示要上课,否则不上课,求出如果可以最多翘kkk节课这nnn天在校待的总时间的最小值(一天必须在所有课上完后才能离开). 背包sbsbsb题. 注意可以从首尾分别逃课. 对于每天的上课情况我们都预处理出一个数组aia_iai​表示这天逃iii节课在校的最少时间. 然后跑分组背包就可以了. 实际上可以滚动数组优化一波. 代码: #include<bits/stdc++.h> #define ri register…
题目链接:Timetable 题意:Ivan是一个学生,在一个Berland周内要上n天课,每天最多会有m节,他能逃课的最大数量是k.求他在学校的时间最小是多少? 题解:先把每天逃课x节在学校呆的最小时间预处理出来,这样就变成了在n天里面,每个组有不同的情况,找出逃课t节的能在学校呆最小时间的情况.就是一个分组背包问题了. #include<bits/stdc++.h> using namespace std; ; ; int N,M,T,S; int num[MAX_N]; int pos[…
题目链接:http://codeforces.com/problemset/problem/946/D 题目大意:有n个字符串,代表n天的课表,1表示这个时间要上课,0表示不要上课,一天在学校时间为第一节课到最后一节课的时间.总共,可以逃过k次课,求至少需要在学校多少时间. 解题思路:听了大佬说背包,然后预处理就想了20多分钟,比赛结束,GG...先是预处理出v[i][k]即第i天逃k节课的能节约的最多时间,至于怎么求,直接枚举k,然后枚举两端1的位置即可.然后就可以做分组背包了,这就不说了,很…
题意:n天m节课,最多可以逃k节课,每天在学校待的时间为该天上的第一节课到最后一节课持续的时间.问怎样逃课可以使这n天在学校待的时间最短,输出最短的时间. 分析: 1.预处理出每天逃j节课时在学校待的最短时间.t[i][j] 2.dp[i][j]为截止到第i天逃j节课待在学校的最短时间. #include<bits/stdc++.h> using namespace std; const int MAXN = 500 + 10; const int INF = 0x3f3f3f3f; char…
题目链接:http://codeforces.com/contest/864/problem/E 题解:这题一看就很像背包但是这有3维限制也就是说背包取得先后也会对结果有影响.所以可以考虑sort来降低维度(这是常用的方法) 然后就是简单的有限背包至于这题还要求存下娶了哪些东西可以用vector来存. #include <iostream> #include <cstring> #include <cstdio> #include <vector> #inc…
Description 题库链接 给你一个 \(N\times M\) 的 \(01\) 矩阵,你可以从中将一些 \(1\) 变为 \(0\) ,最多 \(K\) 次.使操作之后使得每行最远的 \(1\) 间距和最小.输出最小值. \(1\leq N,M,K\leq 500\) Solution 显然可以预处理一个数组 \(a_{i,j}\) 表示第 \(i\) 行操作 \(j\) 次后最小的间距.这个可以用 \(O(N^3)\) 枚举出来的. 其次记 \(f_{i,j}\) 表示前 \(i\)…
题意:给定 n,m,K,表示某个人一个周有 n 天,每天有 m 节课,但是他可以跳过 K 节课,然后下面每行一个长度为 m 个01字符串,0 表示该人在这一小时没有课,1 表示该人在这一个小时有课,每天的在学校时间是从开始上的第一节课,到上完最后一节课,问你他在校时间最短是多少. 析:首先要预处理出来他第 i 天跳过 j 节课在校的最短时间dp[i][j],因为每一天都是独立的,然后就可以使用动态规划来求解,f[i][j] 表示前 i 天跳过 j 节课的最短在校时间,f[i][j] = min{…
2018-03-11 http://codeforces.com/contest/946/problem/D D. Timetable time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Ivan is a student at Berland State University (BSU). There are n days in…
花了两个晚上来搞这道题. 第一个晚上想思路和写代码,第二个晚上调试. 然而还是菜,一直调不对,我的队友是Debug小能手呀(真的是无敌,哈哈,两个人一会就改好了) D. Timetable   time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Ivan is a student at Berland State Universi…