CF1458B Glass Half Spilled
CF1458B Glass Half Spilled
题意:
有n杯水,第i杯有容积aia_{i}ai单位,初始时装有bib_{i}bi单位的水
现在你可以进行若干次操作,每次选择一杯水的一定水量并倒到另一杯水中,但是因为这些杯子形状非常奇怪,因此每倒一次水,倒的水会有一半洒在地上.
求出对于所有整数p满足1<=p<=n1<=p<=n1<=p<=n,求出进行若干次操作后选取p个杯子能获得水单位数量的最大值
题解:
每次倒水都会有损失,那么倒水的过程肯定不能出现同样的水来回倒,这样必不优。因此我们就直接选中p个杯子,让后将其他杯子里的水都倒进来。设选出的k个杯子的a值和为A且b值和为B,所有杯子的b值和为sumb。可以得到答案min{A,(sumb-B) * 0.5+B}=min{A,sumb * 0.5+B * 0.5}
现在我们就要求出对于每个A所对应的尽可能大的B(因为A是给出的,B不好求)
我们把A看作容积,把B看作价值,这不就是01背包,但本题A的容积不是固定的
A表示容积,而最多就100个杯子,每个杯子容积最大是100,也就是说A最大才10000,所以我们完全可以直接枚举容积
因为题目问k个杯子的情况,所以我们还需要一维来记录所选杯子数量
设dp[i][j]][k]:前i个杯子选了j个,且容积为k的最大价值(最大盛水容量)
我们可以通过滚动数组优化第一维
时间复杂度为O(n4)O(n^4)O(n4)
代码:
#include <bits/stdc++.h>
#include <unordered_map>
#define debug(a, b) printf("%s = %d\n", a, b);
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
clock_t startTime, endTime;
//Fe~Jozky
const ll INF_ll= 1e18;
const int INF_int= 0x3f3f3f3f;
void read(){};
template <typename _Tp, typename... _Tps> void read(_Tp& x, _Tps&... Ar)
{x= 0;char c= getchar();bool flag= 0;while (c < '0' || c > '9')flag|= (c == '-'), c= getchar();while (c >= '0' && c <= '9')x= (x << 3) + (x << 1) + (c ^ 48), c= getchar();if (flag)x= -x;read(Ar...);
}
template <typename T> inline void write(T x)
{if (x < 0) {x= ~(x - 1);putchar('-');}if (x > 9)write(x / 10);putchar(x % 10 + '0');
}
void rd_test()
{#ifdef ONLINE_JUDGE
#elsestartTime = clock ();freopen("data.in", "r", stdin);
#endif
}
void Time_test()
{#ifdef ONLINE_JUDGE
#elseendTime= clock();printf("\nRun Time:%lfs\n", (double)(endTime - startTime) / CLOCKS_PER_SEC);
#endif
}
const int maxn=300;
struct node{int a,b;
}w[maxn];
int dp[102][10020];
int main()
{//rd_test();int n;read(n);int sum=0;for(int i=1;i<=n;i++){cin>>w[i].a>>w[i].b;sum+=w[i].b;}memset(dp,-INF_int,sizeof dp);dp[0][0]=0;for(int i=1;i<=n;i++){for(int j=i;j>=1;j--){for(int k=10000;k>=w[i].a;k--){dp[j][k]=max(dp[j][k],dp[j-1][k-w[i].a]+w[i].b);}}}for(int i=1;i<=n;i++){double ans=0;for(int k=0;k<=10000;k++){ans=max(ans,1.0*min(1.0*k,0.5*sum+0.5*dp[i][k]));}printf("%.9lf ",ans);
// cout<<ans<<endl;}return 0;//Time_test();
}
CF1458B Glass Half Spilled相关推荐
- CodeForces - 1459D Glass Half Spilled(dp)
题目链接:点击查看 题目大意:给出 n 个水杯,每个水杯最大容量为 aia_iai,每个水杯初始时有 bib_ibi 的水,两个水杯之间可以互相倒水,不过每次会损失一半水量,更具体的说,假设第 i ...
- Codeforces Round #691 (Div. 1)
Codeforces Round #691 (Div. 1) 题号 题目 知识点 A Row GCD 思维 B Glass Half Spilled 背包问题 C Latin Square 思维 D ...
- Codeforces Round #691 (Div. 2)
Codeforces Round #691 (Div. 2) 题号 题目 知识点 A Red-Blue Shuffle 签到 B Move and Turn (规律结论题) C Row GCD 思维 ...
- 【B类竞赛】第十一届山东省大学生程序设计竞赛 比赛经历
序言 去年因为疫情没有举办省赛,导致两年的省赛隔了一年,少参加了一次,血亏. 四月ACM内部选拔赛的时候,用了2017年的山东省省赛题,用个人赛的形式打的,做出来五题,放在当年是可以拿银牌的.队友wz ...
- href=javascript 显示开发中_Looking Glass全息显示屏兼容全新虚幻引擎插件
随着裸眼3D显示技术的发展,美国厂商Looking Glass Factory生产的显示屏在显示全息内容方面给人留下了深刻的印象,其生产的全息显示屏支持12个人同时以不同角度观看立体3D视频.近日,该 ...
- Google Glass是工具不是玩具
上周,Google Glass正式开放体验购买申请,并在youtube上发布了"透过google眼镜感觉世界"的宣传视频,此外还发起"Glass Explorer&quo ...
- Windows 7 扩展玻璃效果(Aero Glass)
Windows 7 操作系统默认具有一款玻璃效果主题(Aero Glass).如果选择了该款主题,所有的应用程序标题栏都会处于玻璃透明效果(如下图).这个功能是由Desktop Window Mana ...
- Codeforces 527C Glass Carving (最长连续0变形+线段树)
Leonid wants to become a glass carver (the person who creates beautiful artworks by cutting the glas ...
- WPF 放大镜(Magnifying Glass)
效果图片: 原理: 设置VistualBrush的Visual属性,利用它的Viewbox属性进行缩放. XAML代码: // Window1.xaml <Window x:Class=&quo ...
最新文章
- Java数据结构与算法(六) 希尔排序
- C# 浅拷贝与深拷贝区别 解惑篇
- IDL关系运算符Eq Ne Le Lt Gt Ge含义说明
- struts-config.xml 简述
- package.json mysql_package.json入门
- 【方便自己使用】KKT条件
- C++中sort排序之自定义排序cmp(入门)
- 如何安装 chrome 开发版
- java ipv6 转换_Java中Ipv4与Ipv6的转换
- 计算机硬盘发展现状,固态硬盘的发展现状
- linux:为xamp添加mysql的环境变量
- python PTA合集
- 有哪些便宜好用的虚拟主机推荐?
- 低功耗蓝牙迈向工业车规级,助力充电桩和电动车智能化
- python后台开发性能问题_《Python高性能编程》——2.14 确保性能分析成功的策略-阿里云开发者社区...
- 英语单词-2020.11.14
- 复旦Moss团队:Moss参数规模约是ChatGPT的1/10;贾跃亭再获FF执行官身份;PowerToys新版发布|极客头条
- ACM算法训练【贪心合集】
- c语言19之用1元5角钱人名币兑换5分、2分和1分的硬币(每一种都要有)共一百枚,问共有几种兑换方案?并输出每种方案
- 【Python刷题*计算客】A+B+C问题
热门文章
- 这才是老公的正确用法,不吃就往死里打......
- 史上超强的学科碰撞,有生之年必看系列!
- TensorFlow的这些骚操作你都知道吗?
- 干货|机器学习零基础?不要怕,吴恩达机器学习课程笔记2-多元线性回归
- nashorn js 调用 java_从nashorn(JDK 8 JavaScript引擎)调用char []输入参数调用Java函数?...
- SimpleXMLRPC_python xmlrpclib SimpleXMLRPCServer 模块
- 2019龙少php泛站群,龙少php泛站群|PHP版站群 全自动泛解析站群程序 赠送教程
- php大马源码 手机网页,php大马源码:【百家号】脸书百科,分析 PHP大马-php_mof SHELL Web程序...
- leetcode213. 打家劫舍 II
- [SpringBoot2]容器功能_底层注解配置绑定_@Configuration@Import@Conditional@ImportResource