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的更多相关文章

随机推荐

  1. 《MinDoc 接口文档在线管理系统》

    项目简介 MinDoc 是一款针对IT团队开发的简单好用的文档管理系统. MinDoc 的前身是 SmartWiki 文档系统.SmartWiki 是基于 PHP 框架 laravel 开发的一款文档 ...

  2. Java的GUI设计

    这里笔者写一些自己做GUI时候的心得,希望可以帮助需要学习的同学,函数的实现和界面设计不在同一个文件中,且涉及参数的传递 一.继承于JFrame   当遇到继承于JFrame的类的时候,可以省去建立对 ...

  3. mysql之索引查询2

    一 索引的创建 索引减慢了 写的操作,优化了读取的时间 index:普通索引,加速了查找的时间. fulltext:全文索引,可以选用占用空间非常大的文本信息的字段作为索引的字段.使用fulltext ...

  4. ORACLE rollup函数

    rollup函数应用场景: 主要使用在 分组中,将每个分组求汇总值(就是小计),最后再讲所有值(除去小计)求和(就是合计) 当然,使用union 也可以达到同样的效果.先将需要查询的分组查出来,再un ...

  5. Codeforces 1107 简要题解

    文章目录 A题 B题 C题 D题 E题 F题 G题 传送门 A题 传送门 题意简述:问你能不能把一个数字串切成若干块,使得切出来的kkk个数k≤2k\le2k≤2满足a1<a2<...&l ...

  6. latex字体

    强调 方式:声明:\em 或者 命令\emph,后者是latex2e的命令 区别:声明与命令的作用范围不同:\em改变当前字体直到被其他相应的声明取消(也可以是\em本身),或者当前的环境结束为止,当 ...

  7. java常用设计模式六:适配器模式

    一.定义 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作.比如以下的场景: 用手机充电为例,有一个手机的插孔是TypeC口,现在只 ...

  8. s4-介质访问控制子层-1 MAC子层

    数据链路层被分成了两个子层:MAC和LLC MAC子层要解决什么问题? 介质访问控制(Madia Access Control) 数据通信方式 单播(unicast):One - to - One ...

  9. UVaLive 3490 Generator (KMP + DP + Gauss)

    题意:随机字母组成一个串,有一个目标串,当这个由随机字母组成的串出现目标串就停止,求这个随机字母组成串的期望长度. 析:由于只要包含目标串就可以停止,所以可以先把这个串进行处理,也就是KMP,然后dp ...

  10. Ng第十八课:应用实例:图片文字识别(Application Example: Photo OCR)

    18.1  问题描述和流程图 18.2  滑动窗口 18.3  获取大量数据和人工数据 18.4  上限分析:哪部分管道的接下去做 18.1  问题描述和流程图 图像文字识别应用所作的事是,从一张给定 ...