bzoj4030【HEOI2015】小L的白日梦
题意:http://www.lydsy.com/JudgeOnline/problem.php?id=4030
sol :orz Yousiki http://www.cnblogs.com/yousiki/p/6490769.html
orz jiry http://jiruyi910387714.is-programmer.com/posts/90425.html
有三个结论:
1、一定存在一个最优解,使得每天不高兴的概率单调递增
这个结论很显然,考虑对于一组逆序对将其交换,答案更优
2、一定存在最优解,由排序后的一段前缀+一段后缀构成
如果把前缀一个点放到中间比原来优,那么把这个点放到后面一定更优(或者一样)
3、每一种选取的项目有三种可能:选一个,全选,其他,且第三种至多一个
这个不会证QAQ,Yousiki大佬说随便想想就知道了QAQ
这样的话就可以假设第三种情况在后缀(前后缀分别做一次),
线性往后扫前缀,每次向后跳一个块,考虑后缀的期望会怎么更新,再处理一个快+1的情况即可
可以把一个点拆成三个:1,cnt,1,这样写起了方便一些,不用再特判
代码莫名其妙数据一大就WA.......完全不知道为什么QAQ,弃疗了,cogs最后一个点还莫名其妙过了....50points
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cmath>
#define inf 1e18
#define double long double
#define int long long
using namespace std;
const int Mx=;
struct Node { int c; double p,w; } A[*Mx],tmp[Mx];
bool cmp(Node a,Node b) { return a.p>b.p; }
int n,k,tot,now,sigma;
double ans,sum;
void solve()
{
sum=,now=,sigma=k;
for(int i=n;i>=;i--) sum+=(A[i].c-)*A[i].w+(-A[i].p)*A[i+].p,sigma-=A[i].c;
for(int i=;i<=n;i++)
{
sigma-=A[i].c;
while(now<=n&&sigma<=) sum-=(A[now].c-)*A[now].w+(-A[now].p)*A[now+].p,sigma+=A[now++].c;
if(sigma<=) break; sum+=(A[i].c-)*A[i].w+(-A[i-].p)*A[i].p;
ans=min(ans,sum+(sigma-)*A[now-].w+(-A[now-].p)*A[now].p+(-A[i].p)*A[now-].p);
}
sigma=k,sum=;//初始状态
for(int i=,mn=min(sigma,A[i].c);i<=n&&mn;i++)
sigma-=mn,sum+=(mn-)*A[i].w+(-A[i-].p)*A[i].p;
ans=min(ans,sum);
}
signed main()
{
int T; scanf("%lld",&T);
while(T--)
{
scanf("%lld%lld",&n,&k);
for(int i=,x,y;i<=n;i++)
scanf("%lld/%lld%lld",&x,&y,&tmp[i].c),tmp[i].p=(double) x/y,tmp[i].w=(-tmp[i].p)*tmp[i].p;
sort(tmp+,tmp++n,cmp); tot=;
for(int i=;i<=n;i++)//拆点
{
if(tmp[i].c==) A[++tot]=tmp[i];
if(tmp[i].c>) A[++tot]=tmp[i],A[tot].c=,A[++tot]=tmp[i],A[tot].c--;
if(tmp[i].c>) A[tot].c--,A[++tot]=tmp[i],A[tot].c=;
} n=tot;
ans=inf,A[].p=,A[n+].p=;
solve();
for(int i=;i<=(n+)/;i++) A[i].p=-A[i].p,A[n-i+].p=-A[n-i+].p,swap(A[i],A[n-i+]);
solve();
printf("%.6LF\n",fabs(ans));
}
}
bzoj4030【HEOI2015】小L的白日梦的更多相关文章
- 【BZOJ4030】[HEOI2015]小L的白日梦
[BZOJ4030][HEOI2015]小L的白日梦 题面 BZOJ 洛谷 题解 要求的是最小的不开心连续段的期望. 然后发现自己就不会做了. 然后就可以来抄题解啦. 首先来猜性质: 第一个,一定是按 ...
- BZOJ 4030: [HEOI2015]小L的白日梦
4030: [HEOI2015]小L的白日梦 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 172 Solved: 39[Submit][Statu ...
- HEOI2015小L的白日梦
题面链接 洛咕 sol 为什么网上面只有神仙题解啊!!! 引起我这种蒟蒻不适QAQ. 性质证明留给巨佬 然后我只贴性质了QwQ. 1.一定存在最优解每一天不高兴的概率是单调不增的. 2.一定存在最优解 ...
- P4110 [HEOI2015]小L的白日梦
传送门 题解 //minamoto #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef l ...
- 洛谷U4727小L的二叉树[树转序列 LIS]
题目背景 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣. 所以,小L当时卡在了二叉树. 题目描述 在计算机科学中,二叉树是每个结点最多有两个子结点的 ...
- ACM D的小L
D的小L 时间限制:4000 ms | 内存限制:65535 KB 难度:2 描述 一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡匡玩但又怕匡匡生气,这时小L给 ...
- bzoj 4031: [HEOI2015]小Z的房间 轮廓线dp
4031: [HEOI2015]小Z的房间 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 98 Solved: 29[Submit][Status] ...
- nyoj-366-D的小L(求全排列)
D的小L 时间限制:4000 ms | 内存限制:65535 KB 难度:2 描述 一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡匡玩但又怕匡匡生气,这时小L给匡匡 ...
- 洛谷U4727 小L 的二叉树
U4727 小L 的二叉树 题目背景 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣. 所以,小L当时卡在了二叉树. 题目描述 在计算机科学中,二叉树 ...
随机推荐
- 漫谈 Clustering (番外篇): Dimensionality Reduction
由于总是有各种各样的杂事,这个系列的文章竟然一下子拖了好几个月,(实际上其他的日志我也写得比较少),现在决定还是先把这篇降维的日志写完.我甚至都以及忘记了在这个系列中之前有没有讲过“特征”(featu ...
- ambari过程中要求各个节点时间同步
设置时间同步 控制节点机器 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #设置时区为北京时间,这里为上海,因为centos里面只有上海... ...
- red hat的防火墙怎么关闭
查看是否开启: service iptables status 关闭方法: service iptables stop 永远关闭: Ntsysv 把iptables前的*号去掉. 查看SELinux状 ...
- 【搜索】【入门】洛谷P1036 选数
题目描述 已知 n个整数x1,x2,…,xn,以及1个整数k(k<n).从nn个整数中任选kk个整数相加,可分别得到一系列的和. 例如当n=4,k=3,4个整数分别为3,7,12,19时, ...
- 洛谷P3371单源最短路径Dijkstra版(链式前向星处理)
首先讲解一下链式前向星是什么.简单的来说就是用一个数组(用结构体来表示多个量)来存一张图,每一条边的出结点的编号都指向这条边同一出结点的另一个编号(怎么这么的绕) 如下面的程序就是存链式前向星.(不用 ...
- Maven和Gradle对比(转载)
转载出处:http://www.cnblogs.com/huang0925 Java世界中主要有三大构建工具:Ant.Maven和Gradle.经过几年的发展,Ant几乎销声匿迹.Maven也日薄西山 ...
- select * 比select column快很多奇怪案例分析
遇到MYSQL傻傻的地方,下面给个案例,大家感受下: 注意以下两个sql只有select *和select g.id区别. SQL1:SELECT g.idFROM table1 gINNER JOI ...
- HTTP 配置与编译安装
目录 HTTP 配置与编译安装 HTTP 相关配置 DSO 定义'Main' Server 的文档页面路径 定义站点主页面 站点访问控制常见机制 基于源地址实现访问控制 日志设定 设定默认字符集 定义 ...
- linux文件属性之时间戳及文件名属性知识
7 8 9 三列是时间(默认是修改时间) modify 修改时间 -mtime 修改文件内容 change 改变时间 -ctime 文件属性改变 access 访问时间 -atime 访 ...
- 【linux】CPU,内存对网站的影响
如果读写非常多,建议内存大点 如果涉及到的计算非常多,那就升级CPU