当前位置: 首页 > news >正文

bzoj5281/luogu4377 Talent Show (01分数规划+背包dp)

就是01分数规划的思路,只不过当把w[i]-r*t[i]>0的选完以后如果w值还没达到要求,那就再01背包dp一下就好了(dp时w值>W的时候就存在W里就不会爆内存了)。

(跑得很慢..大概是二分的姿势有问题...)

(貌似还有直接dp的做法?不会)

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 #include<cmath>
 5 #include<vector>
 6 #include<queue>
 7 #include<set>
 8 #include<ctime>
 9 #define pa pair<double,int>
10 #define LL long long
11 using namespace std;
12 const int maxn=260,maxm=1010;
13 
14 LL rd(){
15     LL x=0;char c=getchar();int neg=1;
16     while(c<'0'||c>'9'){if(c=='-') neg=-1;c=getchar();}
17     while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
18     return x*neg;
19 }
20 
21 int N,W,w[maxn],t[maxn];double f[maxn][maxm];
22 pa x[maxn];
23 
24 bool judge(double r){
25     for(int i=1;i<=N;i++) x[i]=make_pair(t[i]-r*w[i],i);
26     sort(x+1,x+N+1);
27     int sw=0,mm=N;double sr=0,mr=-123456789;
28     for(int i=N;i&&x[i].first>=0;mm=--i){
29         sw+=w[x[i].second];sr+=x[i].first;
30     }
31     if(sw>=W) return 1;
32     
33     f[0][0]=0;for(int j=1;j<=W-sw;j++) f[0][j]=-123456789;
34     for(int i=0;i<mm;i++){
35         for(int j=0;j<=W-sw;j++) f[i+1][j]=f[i][j];
36         for(int j=0;j<W-sw;j++){
37             f[i+1][min(W-sw,j+w[x[i+1].second])]=\
38             max(f[i+1][min(W-sw,j+w[x[i+1].second])],f[i][j]+x[i+1].first);
39         }
40     }
41     for(int i=1;i<=mm;i++) mr=max(mr,f[i][W-sw]);
42     return mr+sr>=0;
43 }
44 
45 int main(){
46     int i,j,k;
47     N=rd(),W=rd();
48     for(i=1,j=0;i<=N;i++) w[i]=rd(),t[i]=rd();
49     double l=0,r=2.5e7;
50     while(r-l>1e-5){
51         double m=(l+r)/2;
52         if(judge(m)) l=m;
53         else r=m-1e-5;
54     }printf("%d\n",(int)(l*1000));
55     return 0;
56 }

 

转载于:https://www.cnblogs.com/Ressed/p/9581498.html

相关文章:

  • 纳米时代与现代无穷小分析
  • arguments.callee的作用及替换方案
  • 【IOS】实现一种书本的展示特效
  • asp.net webform设计思路的思考
  • 给自己的应用添加iAd广告之一
  • virsh查看迁移信息的两个命令
  • 【iOS-Cocos2d游戏开发】触屏事件处理机制
  • 迷宫里的动态规划应用
  • Django学习手册 - cookie / session
  • We are unable to complete the review of your app since one or more of your In App Purchases have not
  • IOS内存管理
  • gerrit + ldap + phpldapadmin docker部署
  • 【编程之美】2.1 - 求二进制数中1的个数
  • JavaScript中数组的排序方法:1.冒泡排序 2.选择排序
  • js计算页面加载时间
  • 《Java8实战》-第四章读书笔记(引入流Stream)
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 0基础学习移动端适配
  • css属性的继承、初识值、计算值、当前值、应用值
  • laravel with 查询列表限制条数
  • Lsb图片隐写
  • nginx 负载服务器优化
  • Python实现BT种子转化为磁力链接【实战】
  • SpiderData 2019年2月13日 DApp数据排行榜
  • Travix是如何部署应用程序到Kubernetes上的
  • 后端_MYSQL
  • 基于游标的分页接口实现
  • 浏览器缓存机制分析
  • 区块链共识机制优缺点对比都是什么
  • 事件委托的小应用
  • 算法-图和图算法
  • 通过npm或yarn自动生成vue组件
  • 无服务器化是企业 IT 架构的未来吗?
  • 线性表及其算法(java实现)
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 小程序button引导用户授权
  • 一份游戏开发学习路线
  • 一个SAP顾问在美国的这些年
  • 移动端解决方案学习记录
  • FaaS 的简单实践
  • 阿里云服务器购买完整流程
  • 带你开发类似Pokemon Go的AR游戏
  • !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
  • # 达梦数据库知识点
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (libusb) usb口自动刷新
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (译)计算距离、方位和更多经纬度之间的点
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .Net Core和.Net Standard直观理解