bzoj4897 [Thu Summer Camp2016]成绩单】的更多相关文章

Description 期末考试结束了,班主任L老师要将成绩单分发到每位同学手中.L老师共有n份成绩单,按照编号从1到n的顺序叠 放在桌子上,其中编号为i的成绩单分数为w_i.成绩单是按照批次发放的.发放成绩单时,L老师会从当前的一叠 成绩单中抽取连续的一段,让这些同学来领取自己的成绩单.当这批同学领取完毕后,L老师再从剩余的成绩单中 抽取连续的一段,供下一批同学领取.经过若干批次的领取后,成绩单将被全部发放到同学手中.然而,分发成绩 单是一件令人头痛的事情,一方面要照顾同学们的心理情绪,不能让…
题目链接 BZOJ4897 题解 发现我们付出的代价与区间长度无关,而与区间权值范围有关 离散化一下权值 我们设\(f[l][r][x][y]\)表示区间\([l,r]\)消到只剩权值在\([x,y]\)所需最小代价 \(f[l][r][0][0]\)即为消完的最小代价 那么 \[f[l][r][0][0] = min\{f[l][r][x][y] + a + b(w[y] - w[x])^2\}\] 转移的话,贪心地取出区间两边在权值区间\([x,y]\)以内的数,剩下区间\([l',r']\…
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4897 [题解] 第一次看这题想的是f[l,r]的区间dp发现仅记录这两个好像不能转移啊 会出现abaca这种情况,也就是拿走的段在原序列中不连续. 考虑为什么会出现这个情况,肯定是这三个a里的元素十分集中,我们才会留着等合并后取. 我们离散值域,记f[l,r,nl,nr]表示[l,r]区间内,剩下[nl,nr]没拿走的min代价. 特别的如果nl=nr=0就表示全拿走了. 那么考虑f[l,…
题目描述 给你一个数列,每次你可以选择连续的一段,付出 $a+b\times 极差^2$ 的代价将其删去,剩余部分拼到一起成为新的数列继续进行此操作.求将原序列全部删去需要的最小总代价是多少. 输入 第一行包含一个正整数n,表示成绩单的数量. 第二行包含两个非负整数a,b,表示给定的评估参数. 第三行包含n个正整数w_i,表示第i张成绩单上的分数. 输出 仅一个正整数,表示最小的代价是多少. 样例输入 103 17 10 9 10 6 7 10 7 1 2 样例输出 15 题解 区间dp 对于这…
Description 期末考试结束了,班主任L老师要将成绩单分发到每位同学手中.L老师共有n份成绩单,按照编号从1到n的顺序叠 放在桌子上,其中编号为i的成绩单分数为w_i.成绩单是按照批次发放的.发放成绩单时,L老师会从当前的一叠 成绩单中抽取连续的一段,让这些同学来领取自己的成绩单.当这批同学领取完毕后,L老师再从剩余的成绩单中 抽取连续的一段,供下一批同学领取.经过若干批次的领取后,成绩单将被全部发放到同学手中.然而,分发成绩 单是一件令人头痛的事情,一方面要照顾同学们的心理情绪,不能让…
BZOJ 显然是个区间DP.令\(f[l][r]\)表示全部消掉区间\([l,r]\)的最小花费. 因为是可以通过删掉若干子串来删子序列的,所以并不好直接转移.而花费只与最大最小值有关,所以再令\(g[l][r][j][k]\)表示将区间\([l,r]\)中的数删到只剩下权值在\([j,k]\)中的数的最小花费(也就是让剩下数的最小值为\(j\),最大值为\(k\),最后一次取走\([j,k]\)这些数来删掉整个\([l,r]\)).为了方便转移强制右端点\(r\)保留,同整个区间最后一起删掉.…
[BZOJ4896][Thu Summer Camp2016]补退选 Description X是T大的一名老师,每年他都要教授许多学生基础的C++知识.在T大,每个学生在每学期的开学前都需要选课,每次选课一共分为三个阶段:预选,正选,补退选:其中"补退选"阶段最忙碌.在补退选阶段,学生即可以选课,也可以退课.对于X老师来说,在补退选阶段可能发生以下两种事件: 1:一个姓名为S的学生选了他的课(姓名S将出现在X的已选课学生名单中) 2:一个姓名为S的学生退了他的课(姓名S将从X的已选课…
4896: [Thu Summer Camp2016]补退选 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 315  Solved: 97[Submit][Status][Discuss] Description X是T大的一名老师,每年他都要教授许多学生基础的C++知识.在T大,每个学生在每学期的开学前都需要选课,每 次选课一共分为三个阶段:预选,正选,补退选:其中"补退选"阶段最忙碌.在补退选阶段,学生即可以选课,也 可以退课.对于…
题目链接 BZOJ4896 题解 \(thu\)怎么那么喜欢出\(trie\)树的题... 我们当然可以按题意模拟建\(trie\) 询问的时候,由于存在删除操作,不满足单调性,不能直接二分答案 我们就在每个节点上用\(vector\)储存每个值第一次出现的时间点 每次询问找到那个点二分一下即可 #include<algorithm> #include<iostream> #include<cstring> #include<cstdio> #include…
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! 题目链接:BZOJ4896 正解:$Trie+vector$ 解题报告: $THUSC2016$ $T2$ 考虑每次加入删除对出现次数的影响只会加减一,那么我可以先用$Trie$来维护整个问题中出现的字符串,然后对于每个节点我都记录一下以当前串为前缀的字符…