$POJ$2976 $Dropping\ tests$ 01分数规划+贪心
正解:01分数规划
解题报告:
板子题鸭,,,
显然考虑变成$a[i]-mid\cdot b[i]$,显然无脑贪心下得选出最大的$k$个然后判断是否大于0就好(,,,这么弱智真的算贪心嘛$TT$
然后就做完辣,,,
我真的$jio$得我做的题越来越水了是为什么,,,啊难过,越来越菜了可海星$TT$
#include<algorithm>
#include<iomanip>
#include<cstdio>
using namespace std;
#define il inline
#define lf double
#define gc getchar()
#define rf register lf
#define ri register int
#define rc register char
#define rb register bool
#define rp(i,x,y) for(ri i=x;i<=y;++i) const int N=+;const lf eps=1e-;
int n,K;
bool gdgs=;
struct node{lf a,b,dat;}nod[N]; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il bool cmp(node gd,node gs){return gd.dat<gs.dat;}
il bool chck(rf x)
{
lf sum=;rp(i,,n)nod[i].dat=(lf)nod[i].a*-nod[i].b*x,sum+=nod[i].dat;sort(nod+,nod++n,cmp);
rp(i,,K)sum-=nod[i].dat;return sum>=;
} int main()
{
while(gdgs)
{
n=read();K=read();if(!n && !K)return ;
rp(i,,n)scanf("%lf",&nod[i].a);rp(i,,n)scanf("%lf",&nod[i].b);
rf l=,r=;
while(r-l>eps){rf mid=(lf)(l+r)/;if(chck(mid))l=mid;else r=mid;}
printf("%.0f\n",l);
}
return ;
}
啊对了说一个这题杀我的点,,,就是$double$的输出要用$lf$,,,具体原因看评论区趴懒得贴过来了$QwQ$,,,$get$了一个新知识点呢$QwQ$
随机推荐
- oracle函数 UPPER(c1)
[功能]将字符串全部转为大写 [参数]c1,字符表达式 [返回]字符型 [示例] SQL> select upper('AaBbCcDd') upper from dual; UPPER --- ...
- Browse W3C's Open Source Software
https://www.w3.org/Status.html Browse W3C's Open Source Software Amaya - a Web browser/editor First ...
- [Offer收割]编程练习赛108 - 树上的最短边 树链剖分
直接点权下放到边权,每次查询从dfs序的st[u]+1,ed[v]之间查询, #include<iostream> #include<stdio.h> #include< ...
- poj 3159 Candies (dij + heap)
3159 -- Candies 明明找的是差分约束,然后就找到这题不知道为什么是求1~n的最短路的题了.然后自己无聊写了一个heap,518ms通过. 代码如下: #include <cstdi ...
- 唯一索引与非唯一索引区别(UNIQUE INDEX, NON-UNIQUE INDEX)
索引是我们经常使用的一种数据库搜索优化手段.适当的业务操作场景使用适当的索引方案可以显著的提升系统整体性能和用户体验.在Oracle中,索引有包括很多类型.不同类型的索引适应不同的系统环境和访问场景. ...
- Postman使用入门
https://jingyan.baidu.com/article/0f5fb09907e3046d8334ea2f.html Postman测试管理的单位是测试集(Collections),测试集内 ...
- phpstorm 左边的文件列表没用了 怎么弄出来
ALT+1ALT+数字键,是各种工具栏的显示与隐藏快捷键,你可以挨个试一下.
- GitHub 上 10 款免费开源 Windows 工具
GitHub 上 10 款免费开源 Windows 工具 GitHub 是如今所有开源事物的中央仓库, 这个网站最近发布了一个叫做<2016 Octoverse 状态报告>,详细列出了从 ...
- cf1234-div3
A 水题 B 直接看2,发现`unordered_map被卡了...` 乖乖离散化 C 有六种水管,可以任意的旋转,使得有一条从(1, 0)到(2, n)的通路. 找规律,当时写D没来得及看 #inc ...
- Flex AIR应用换肤功能(Android和IOS)
说明 换肤功能,即将整个应用的皮肤都进行更换,其实质,是动态加载swf文件的过程,而这些swf文件则有css文件编译而来. 关于换肤功能,在android和ios系统的实现方式是不同的.主要原因,是因 ...