Description

Solution

这道题转换一下模型其实就是有很多个带权向量,然后给你一个矩形,给每个向量加一个系数,使得长宽都不超过矩形且权值和最大。
很容易就可以证明出来只需要两个向量就可以了,如果有第三个有系数的,那么就说明这种情况的时候第三个更优,那么还不如直接用第三个替换掉一个。
那么我们现在知道了只用选两个,那么我们该怎么去做这道题?
首先肯定要n2n^2的去枚举,然后我们知道了两个向量之后,就需要列方程了。
y=min(HP−x∗a[i]a[j],MP−x∗b[i]b[j])c[j]+x∗∗c[i]y=min({HP-x*a[i]\over a[j]},{MP-x*b[i]\over b[j]})c[j]+x**c[i]设x为i向量的系数,然后y是权值和。
那么现在有两种情况,一个是min左边的小,另一个是min右边的小。
那么我们可以分别考虑一下,可以把min左边的和右边的分别抽出来。
当HP−x∗a[i]a[j]<MP−x∗b[i]b[j]{HP-x*a[i]\over a[j]}的时候就会选左边
此时分界点x′=MPa[j]−HPb[j]b[i]a[j]−b[j]a[i]x'={{MPa[j]-HPb[j]}\over {b[i]a[j]-b[j]a[i]}}
当x<=x’的时候,y=(c[i]−a[i]∗c[j]a[j])x+c[j]∗HPa[j]y=(c[i]-{a[i]*c[j]\over a[j]})x+{c[j]*HP\over a[j]}
当x>=x’的时候,y=(c[i]−b[i]∗c[j]b[j])x+c[j]∗MPb[j]y=(c[i]-{b[i]*c[j]\over b[j]})x+{c[j]*MP\over b[j]}
因为现在考虑必须选i向量的情况,所以lim<=min(MPb[i],HPa[i])lim
如果当前要选则的范围不在lim范围内,那么就不能选。
对于上面y的等式,无论哪边小,最优值都是x’,因为要考虑的是当前选择i向量的最优情况,都必须在斜率的正负性倾向于i向量的方向选择,否则以i向量为主体就没有意义了,这个自己对着上面的斜率分析一下就好了。

Code

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
const int maxn=2007;
typedef double db;
int i,j,l,t,n,m,cas,w1,w2;
db a[maxn],b[maxn],c[maxn],H,M,an[maxn],ans,x,xx,y,k,bb,lim,an1,an2;
int main(){freopen("terraria.in","r",stdin);freopen("terraria.out","w",stdout);for(scanf("%d",&cas);cas;cas--){scanf("%d",&n);scanf("%lf%lf",&H,&M);fo(i,1,n)scanf("%lf",&a[i]);fo(i,1,n)scanf("%lf",&b[i]);fo(i,1,n)scanf("%lf",&c[i]);ans=an1=an2=0;w1=w2=0;memset(an,0,sizeof(an));fo(i,1,n){lim=min(H/a[i],M/b[i]);y=lim*c[i];if(y>ans){ans=y;w1=i,w2=0;an1=lim,an2=0;}fo(j,i+1,n){x=(M*a[j]-H*b[j])/(b[i]*a[j]-b[j]*a[i]);k=c[i]-a[i]/a[j]*c[j],bb=H*c[j]/a[j];if(x<0)continue;if(x<lim){y=x*k+bb,xx=x;if(y>ans){ans=y;w1=i,w2=j;an1=xx,an2=(H-xx*a[i])/a[j];}}x=(M*a[j]-H*b[j])/(b[i]*a[j]-b[j]*a[i]);if(x>lim)continue;k=c[i]-b[i]/b[j]*c[j],bb=M*c[j]/b[j];y=k*x+bb,xx=x;if(y>ans){ans=y;w1=i,w2=j;an1=xx,an2=(M-xx*b[i])/b[j];}}}an[w1]=an1,an[w2]=an2; printf("%.10lf\n",ans);fo(i,1,n)printf("%.10lf ",an[i]);printf("\n");}
}

【GDSOI2017】魔兽争霸 x相关推荐

  1. 探寻《魔兽争霸3》中最不为人知的按键

    1.子组顺序修改键: 可能大家对这个键比较陌生,我先来为大家解释一下这个键的位置: (1)首先进入魔兽争霸游戏,然后按"选项" (2)然后按上方的"游戏性" ( ...

  2. 地图上制作线路的动画_魔兽争霸重制版不只是表面上这么简单,新版编辑器制作地图更容易...

    对于许多玩家来说,魔兽争霸绝对是一款信仰级别的游戏,它曾经陪伴我们度过了许多难忘的美好时光,但是对于许多地图开发制作者来说,这个游戏更像是自己的信仰.魔兽一个游戏所衍生出的RPG地图,让许多玩家从中收 ...

  3. 魔兽争霸Ⅲ运行时不能初始化directX的错误解决

    运行魔兽争霸3不能初始化DirectX错误这样解决: 1:在运行中输入(win+r):dxdiag,查看显示栏,确定电脑已安装好directx 8.1以上,且下面的三个加速都已开启. 2:如果没有安装 ...

  4. 魔兽争霸3地图(WarIII Maps):梦若流星

    魔兽争霸3地图(WarIII Maps):梦若流星 梦若流星 游戏类型:RPG 通关时间:30分钟 流星蝴蝶剑后传, 即使孟星魂想独善其身, 也未必就能如愿------ 为了更好的体验游戏,请在在&q ...

  5. 魔兽争霸3地图(WarIII Maps):三国猛兽传

    魔兽争霸3地图(WarIII Maps):三国猛兽传 三国猛兽传 三国时期,连年战乱, 天降异象,所有战力无双的英雄,外表全都变成了凶悍的猛兽---- 其貌虽毁,其心不改 攻城略地,百战成钢 一统江山 ...

  6. 魔兽争霸III 1.20, 1.21 1.22 需要特定语言版本之Window 解决办法

    http://www.cnblogs.com/RevengeBoy/archive/2008/07/19/1246593.html 1.20 1.21 版本 用Ultraedit 打开魔兽争霸III文 ...

  7. 《魔兽争霸》故事背景

    作者:dotzu(良牙)翻译 A Brief Timeline of the WarCraft Universe From the Past and into the Present... 魔兽世界简 ...

  8. 还原《魔兽争霸3》场景全过程

    由于网站关闭,以下内容全部丢失:图片都没有了............. 首先选择了一个<魔兽争霸3>的一张地图,截图保存,然后就以这张图文蓝本,开始构建场景.这张图从总体上看分为 1.地形 ...

  9. vs+cmake完美编译RTS游戏,类似魔兽争霸源码

    网上的一个RTS游戏,网上的代码比较老,不能直接编译.这个仓库是我整理编译通过的.代码版权归于原作者. 源码下载 vs+cmake完美编译RTS游戏,类似魔兽争霸源码下载-其他文档类资源-CSDN文库 ...

最新文章

  1. universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法
  2. 一份其实很短的 LaTeX 入门文档
  3. python是什么牌子主机_python 收集主机信息
  4. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第25篇]使用特殊的素数定义GF(p)和GF(2^n)的方法
  5. js 字符串替换_正则精要:玩转JS正则表达式,也许只需这一篇(建议收藏)
  6. wxpython应用程序错误_wxPython因分段错误而崩溃
  7. 搜狗输入法电脑版_搜狗输入法上线墨水屏定制版
  8. 【NOIP模拟赛】超级树 DP
  9. 基于applet与ServerSocket的网络聊天室(记得是上学的时候写的,现在都忘了,记录一下)...
  10. String、Object、包装类的常用方法以及注意点
  11. 网页的根标记是 html,网页的根标记是,主体标记是_________。
  12. Python编程学习笔记:列表
  13. 点击按钮跳转页面_获取快手主页跳转url scheme 协议的方法(app通用方法)
  14. WORD中输入已知编码的特殊字符
  15. chia 免费软件快速p图 支持官方最新协议
  16. 用树莓派控制两盏灯(二)
  17. 安卓开发: Jetpack compose + kotlin 实现 俄罗斯方块游戏
  18. 自动驾驶(七十二)---------LQR控制算法
  19. 基于STM32F767的SD卡EXCEL文件读写
  20. oracle 异常详解(亲测有效)

热门文章

  1. Day8:财报分析3:为什么自由现金流如此重要?
  2. java的swing和awt_java的SWING与AWT的区别
  3. 游戏建模中的低模角色模型如何制作?游戏角色设计流程介绍
  4. Python实战24天从入门到精通-大纲
  5. c#做动态(gif)中文验证码
  6. 钢材理论重量计算公式大全
  7. axios的简单封装
  8. OpenCV编程-LPT变换
  9. vba 统计Word 字数、页数等信息
  10. 西米的最佳搭配 西米搭配什么最好吃