jzoj4512
01分數規畫
我們可以二分一個ans,然後化一下式子
一個總共有k個人的方案,要使(a[1]+a[2]+....+a[k])/(b[1]+b[2]+....+b[k])>=ans(a[1]+a[2]+....+a[k])/(b[1]+b[2]+....+b[k])>=ans(a[1]+a[2]+....+a[k])/(b[1]+b[2]+....+b[k])>=ans,當且僅當(a[1]−b[1]∗ans)+(a[2]−b[2]∗ans)+.....+(a[k]−b[k]∗ans)>=0(a[1]-b[1]*ans)+(a[2]-b[2]*ans)+.....+(a[k]-b[k]*ans)>=0(a[1]−b[1]∗ans)+(a[2]−b[2]∗ans)+.....+(a[k]−b[k]∗ans)>=0,由於這道題兒子選了父親必須選,於是將第i個物品權值變為(a[i]−b[i]∗ans)(a[i]-b[i]*ans)(a[i]−b[i]∗ans),進行背包dp即可,記f[x][i]f[x][i]f[x][i]表示x點選多少個人,枚舉選多少個人再dp,看f[0][k]f[0][k]f[0][k]是否>=0即可
#include<bits/stdc++.h>
using namespace std;
int k,n,h[2510],v[10010],nxt[10010],ec,sz[2510];
double s[2510],p[2510],f[2510][2510],c[2510];
void add(int x,int y){v[++ec]=y;nxt[ec]=h[x];h[x]=ec;}
void dfs(int x){
f[x][1]=c[x];
sz[x]=1;
for(int i=2;i<=k;i++)
f[x][i]=-1e9;
for(int i=h[x];i;i=nxt[i]){
dfs(v[i]);
sz[x]+=sz[v[i]];
for(int j=min(sz[x],k);j>=0;j--)
for(int l=0;l<=min(sz[v[i]],j-1);l++)
f[x][j]=max(f[x][j],f[v[i]][l]+f[x][j-l]);
}
}
int main(){
scanf("%d%d",&k,&n);k++;
for(int i=1;i<=n;i++){
int c;
scanf("%lf%lf%d",&p[i],&s[i],&c);
add(c,i);
}
double l=0,r=10000;
while(fabs(r-l)>1e-4){
double mid=(l+r)*0.5;
for(int i=1;i<=n;i++)
c[i]=s[i]-p[i]*mid;
dfs(0);
if(f[0][k]>=0)l=mid;
else r=mid;
}
printf("%.3lf",l);
}
jzoj4512的更多相关文章
随机推荐
- OneZero_Aphla发布总结以及自己的体会
Aphla发布正式结束了.清明时节,总要祭奠点什么. 以下是这一周的燃尽图. 可以发现,并没有燃尽.所以OneZero的Aphla发布失败了. 失败原因有至少以下三点: 1.组长分配任务存在隐患,高风 ...
- 【Erlang】源码安装
Erlang介绍 Erlang(['ə:læŋ])是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境. Erl ...
- [C#.Net]启动外部程序的几种常用方法汇总
本文汇总了C#启动外部程序的几种常用方法,非常具有实用价值,主要包括如下几种方法: 1. 启动外部程序,不等待其退出. 2. 启动外部程序,等待其退出. 3. 启动外部程序,无限等待其退出. 4. 启 ...
- C# WebService创建、发布、调用的简单例子
Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML标准来描述.发布.发现.协调和配置这些应用程序,用于开发分布式的互操作的应用程序. Web ...
- MVVM中viewmodel的理解
网上有人写了这段话,我也有同感,特别是第一种用法,很重要,后一种用法,我觉得是把第一种用法加入controller中了. 第一种 “view model” 是 “model for the view” ...
- BP神经网络测试MNIST记录
约定: 所有的初始化权值范围,如下,就是说更换激活函数的情况,没有过大的调整初始权重. if(randomMode==1): numpy.random.seed(seedWih) self.wih = ...
- linux_添加一个普通用户
useradd 用户名 passwd 密码 su 用户名 可以切换用户 exit 返回之前登录的用户 sodu用户 --> 不用告诉普通用户root的密码 可以查看所有的系统文件 包括root下 ...
- 2018.12.23 bzoj4516: [Sdoi2016]生成魔咒(后缀自动机)
传送门 samsamsam入门题. 题意简述:给出一个串让你依次插入字符,求每次插入字符之后不同子串的数量. 显然每次的变化量只跟新出现的nnn个后缀有关系,那么显然就是maxlenp−maxlenl ...
- Win7 VS2013环境使用cuda_7.5.18
首先得吐槽下VS2015出来快一年了CUDA居然还不支持,没办法重装系统刚从2013升到2015,还得再装回一个2013用,只为学习CUDA... 然后安装的时候,如果你选择自定义组件安装,注意不要改 ...
- java常用设计模式十二:命令模式
一.概述 定义:命令(Command)模式又叫作动作(Action)模式或事务(Transaction)模式,是一种对象的行为模式.将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对 ...