bzoj4868】的更多相关文章

[BZOJ4868][六省联考2017]期末考试(贪心) 题面 BZOJ 洛谷 题解 显然最终的答案之和最后一个公布成绩的课程相关. 枚举最后一天的日期,那么维护一下前面有多少天可以向后移,后面总共需要往前移多少天,扫一遍贪心就好了. #include<iostream> #include<cstdio> using namespace std; #define ll long long #define MAX 100100 inline int read() { int x=0;…
题目链接 BZOJ4868 题解 最后的答案决定于最后一个公布的成绩 显然这个是答案关于这个时间点是呈凸单调的 三分一下这个时间点 时间点固定,在这个时间前的人都会产生不愉快度,在这个时间前的科目可以往后挪 我们只需贪心选择在这个时间后的科目按哪种方式往前挪 复杂度\(O(nlogn)\) #include<algorithm> #include<iostream> #include<cstdlib> #include<cstring> #include&l…
容易想到枚举最晚发布成绩的课哪天发布,这样与ti和C有关的贡献固定.每门课要么贡献一些调节次数,要么需要一些调节次数,剩下的算贡献也非常显然.这样就能做到平方级别了. 然后大胆猜想这是一个凸函数三分就能A掉了.具体的,延迟最晚时间一方面会增加学生的不愉快度,这显然是时间越晚不愉快度增加量越大的,导数单增:另一方面使需要的调节次数减少,这个变化量显然越来越小,也即老师的不愉快度减少量越来越小,同样导数单增.所以两个函数的和也是导数单增的,即是一个凸函数. 注意存在C=1016,稍微特判一下. #i…
题意: 有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布.第i位同学希望在第ti天 或之前得知所.有.课程的成绩.如果在第ti天,有至少一门课程的成绩没有公布,他就会等待最后公布成绩的课程 公布成绩,每等待一天就会产生C不愉快度.对于第i门课程,按照原本的计划,会在第bi天公布成绩.有如下两种 操作可以调整公布成绩的时间:1.将负责课程X的部分老师调整到课程Y,调整之后公布课程X成绩的时间推迟一天 ,公布课程Y成绩的时间提前一天:每次操作产生A不愉快度.2.增加一部…
来自FallDream 的博客,未经允许,请勿转载,谢谢. 有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布.第i位同学希望在第ti天或之前得知所.有.课程的成绩.如果在第ti天,有至少一门课程的成绩没有公布,他就会等待最后公布成绩的课程公布成绩,每等待一天就会产生C不愉快度.对于第i门课程,按照原本的计划,会在第bi天公布成绩.有如下两种操作可以调整公布成绩的时间:1.将负责课程X的部分老师调整到课程Y,调整之后公布课程X成绩的时间推迟一天,公布课程Y成绩的时间提…
http://www.lydsy.com/JudgeOnline/problem.php?id=4868 假设 最晚出成绩的是第i天 预处理 cnt[i] 表示 有多少个学生 期望出成绩的那一天 <i sum[i] 表示 对应cnt[i] 那些学生 的 t 之和 比如  i=5,有4个学生 期望1 2 4 8 出成绩,那么 sum[5]=1+2+4=7,cnt[5]=3 假设 最晚出成绩的是第i天 学生的不愉悦度= (cnt[i]*i-sum[i])*C 类似的方法,算出 当前i下,能提前 某些…
4868: [Shoi2017]期末考试 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 964  Solved: 439[Submit][Status][Discuss] Description 有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布.第i位同学希望在第ti天 或之前得知所.有.课程的成绩.如果在第ti天,有至少一门课程的成绩没有公布,他就会等待最后公布成绩的课程 公布成绩,每等待一天就会产生C不愉快度.对…
http://www.lydsy.com/JudgeOnline/problem.php?id=4868 题目复制于洛谷:https://www.luogu.org/problemnew/show/P3745#sub 有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布. 第i位同学希望在第ti天或之前得知所有课程的成绩.如果在第ti天,有至少一门课程的成绩没有公布,他就会等待最后公布成绩的课程公布成绩,每等待一天就会产生C不愉快度.对于第i门课程,按照原本的计划,会在…
期末考试 Time Limit: 20 Sec  Memory Limit: 512 MB[Submit][Status][Discuss] Description Input Output Sample Input 100 100 2 4 5 5 1 2 3 1 1 2 3 3 Sample Output 6 HINT Solution 首先,由于学生需要知道所有的成绩,这意味着即使只有一个成绩不知道,代价也是要算的,那么显然答案只和所有成绩都发出的时间有关. 显然,如果我们知道了所有成绩都发…
我还第一次见到省选考三分……? #include<bits/stdc++.h> #define N 200005 using namespace std; typedef long long ll; int n,m,r,t[N],b[N]; ll a,B,c,ans; ll calc(int p){ ll x=,y=; ;i<=m;i++)if(b[i]<p)x+=p-b[i];else y+=b[i]-p; return a<B?min(x,y)*a+(y-min(x,y)…
题目描述 有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布.第i位同学希望在第ti天或之前得知所.有.课程的成绩.如果在第ti天,有至少一门课程的成绩没有公布,他就会等待最后公布成绩的课程公布成绩,每等待一天就会产生C不愉快度.对于第i门课程,按照原本的计划,会在第bi天公布成绩.有如下两种操作可以调整公布成绩的时间:1.将负责课程X的部分老师调整到课程Y,调整之后公布课程X成绩的时间推迟一天,公布课程Y成绩的时间提前一天:每次操作产生A不愉快度.2.增加一部分老师…
传送门-> 三分裸题. 发现答案只和最后一个科目公布成绩的时间有关. 科目公布成绩的时间越早,老师们的不愉快度越高,这个时间越晚,学生们的不愉快度越高. 它看上去像个单峰的,那么就三分好了. 判断时就是个简单的贪心.对于结束时间T,A>B时,让所有T后结束的科目的老师花B的不愉快度加速:B>A时,让所有T后结束的科目花A的不愉快度接受T前结束的科目老师,剩下的再花B的不愉快度加速.再统计学生的不愉快度,就能求出总不愉快度了. 据说三分.二分的题,看出它是道三分或二分的题就已经完成了一半.…
http://www.lydsy.com/JudgeOnline/problem.php?id=4868 三分+贪心 我们可以知道这是一个单峰函数 当A>B那么我们每次调整一个的价钱是最佳的,所以全部用B,如果A<B,那么我们尽量用A,不行再用B #include<bits/stdc++.h> using namespace std; typedef long long ll; ; int n, m; ll A, B, C; ll b[N], t[N]; ll check(ll T…
4868: [Shoi2017]期末考试 题目:传送门 题解: Get到一个新姿势...三分法 一开始百度百科的时候下了一跳...中国...的根??? 学懂了之后其实运用起来就根二分差不多啊,不过证明...不是很懂%大佬 先喷一波自己:没看到最小值...一直维护的是一个上凸包ORZ 然后知道了三分,计算答案的时候就直接用贪心嘛(比较一下那种不愉快度小就尽量用那种,统计一下当前解一共提前了和延后了多少天),不过因为没有操作可以单独推迟,所以少了一种情况. 再打一波脸: 存在几组数据,使得C = 1…
https://www.lydsy.com/JudgeOnline/problem.php?id=4868 显然我们只关注最后出分的学科. 刚开始想的是dp,然而不知道如何记录状态. 突然就想到了正解. 首先对于每一个最后出分的日期,所有的不愉快度一定来自两个方面: $n$个同学的期待,这个作前缀和可以$O(1)$统计. $m$个学科调派老师,这个作前缀和也可以$O(1)$统计. 所以$O(max(t_i))$解决了这道题.??? 正解当然不是上面的暴力而是三分. 设$f(x)$表示最终结束时间…
(总计:共90题) 3.10~3.16:17题 3.17~3.23:6题 3.24~3.30:17题 3.31~4.6:21题 4.7~4.12:29题 ZJOI&&FJOI(6题) TJOI2016(6题) 六省联考2017(6题) SDOI2016(3题) HNOI2013(6题) CQOI2017(3题) 九省联考2018(3题) 3.10 [BZOJ4552][TJOI2016&&HEOI2016]排序(二分答案+线段树) [BZOJ4012][HNOI2015]开…
BZOJ4868 每个结束位置的最优值很显然具有单调性,三分,再讨论一下就好了. #include<bits/stdc++.h> using namespace std; #define ll long long #define FILE "exam" #define up(i,j,n) for(int i=j;i<=n;i++) #define db long double #define pii pair<int,int> #define pb pus…
这三道题分别对应bzoj4868~4870,pdf没法往这放,因此放弃了. T1: 方法1(正解):三分法 考虑暴力枚举最晚公布的时间x,关注到2操作是没有负面影响的1操作,所以如果A大于B,那么只需用2操作就可以了,否则先用1操作,不能用1操作后再用2操作.这样就能把b数组全部变成小于等于x,在加上额外的不愉快度就可以了.这个算法的时间复杂度是O(N2),可以拿60分. 如果你去打表就能发现不愉快度关于时间是一个下凸函数,可以用三分做.具体的证明是这样的: 1.修改代价关于时间是单调递减的,也…