GCD(ZYYS)
【问题描述】
在山的那边、海的那边有 n 个小矮人,他们生存的意义就是要保护他们的精
神领袖——GCD。有一天,他们收到了一封恐吓信,说要在一个遥远的地方用维
纳斯之箭射击 GCD,让他变成一根面条,n 个小矮人当然要保护 GCD,GCD 实在
是太高了,于是矮人们决定搭成一个不低于 GCD 的矮人塔,可他们智商很低,
于是就找到了你。
每个小矮人都有三个指数:h,w,s,分别代表身高,体重与承受力,每一个小
矮人上方所搭的矮人的体重之和不能超过他的承受力。
小矮人想问你他们能不能搭成一个符合要求的塔,如果能的话,他们还想问
你搭成的塔的最大的稳定性(塔的稳定性指的是还能在塔上方最多加的重量)。
【输入格式】
从 b.in 读入数据
两个正整数 n,H,H 表示 GCD 的身高。
接下来 n 行,每行三个正整数 h, w, s,意义如题中所述。
【输出格式】
输出到文件 b.out 中
如果不能,则输出 GCD is too tall
否则,输出一个正整数,表示塔的最大稳定性。
【样例输入 1】
4 10
941
335
5 5 10
445
【样例输出 1】
2
【样例解释】
从底向上分别放 3 号,4 号,二号
【样例输入 2】
4 100
941
335
5 5 10
445
【样例输出 2】
GCD is too tall
【数据规模和约定】对于 20%的数据,n<=10
对于 40%的数据,n<=20
对于 60%的数据,n<=25
对于 70%的数据,n<=30
对于 100%的数据,n<=50,H<=2147483647;h,w,s <= 10^9
其中有数据满足:
H <= 30000
H <= 40000
H <= 80000
H <= 130000
H <= 260000
保证数据随机生成~
我们考虑要选的小矮人 i,j,比较谁放在下面更优,当然是通过放了之后的
稳定值来比较,贪心地想,稳定值越大当然越好。
i 放在下面的稳定值为: s[i] - w[j];
所以,i 比 j 优的条件为: s[i] - w[j] > s[j] - w[i];
即: s[i] + w[i] > s[j] + w[j];
所以,我们开始把小矮人按 s + w 排序,对于选出来的小矮人,就不用枚举顺
序了
不过当然要加
上最优性剪枝(可行性剪枝好像没什么效果)。复杂度:O(???)
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long lol;
struct Zt
{
lol h,w,s;
}a[];
lol n,h,ans=-,sumh[],sumw[];
bool cmp(Zt a,Zt b)
{
return (min(a.s-b.w,b.s)>min(b.s-a.w,a.s));
}
void dfs(int x,lol H,lol P)
{
if (H>=h)
{
if (P>ans) ans=P;
return;
}
if (x>n) return;
if (ans>=P) return;
if (H+sumh[n]-sumh[x-]<h) return;
if (a[x].w<=P)
dfs(x+,H+a[x].h,min(a[x].s,P-a[x].w));
if (P)
dfs(x+,H,P);
}
int main()
{int i;
cin>>n>>h;
for (i=;i<=n;i++)
{
scanf("%lld%lld%lld",&a[i].h,&a[i].w,&a[i].s);
}
sort(a+,a+n+,cmp);
for (i=;i<=n;i++)
{
sumh[i]=sumh[i-]+a[i].h;
sumw[i]=sumw[i-]+a[i].w;
}
dfs(,,2e9);
if (ans==-) cout<<"GCD is too tall";
else
cout<<ans;
}
GCD(ZYYS)的更多相关文章
- Objective-C三种定时器CADisplayLink / NSTimer / GCD的使用
OC中的三种定时器:CADisplayLink.NSTimer.GCD 我们先来看看CADiskplayLink, 点进头文件里面看看, 用注释来说明下 @interface CADisplayLin ...
- iOS 多线程之GCD的使用
在iOS开发中,遇到耗时操作,我们经常用到多线程技术.Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法,只需定义想要执行的任务,然后添加到适当的调度队列 ...
- 【swift】BlockOperation和GCD实用代码块
//BlockOperation // // ViewController.swift import UIKit class ViewController: UIViewController { @I ...
- 修改版: 小伙,多线程(GCD)看我就够了,骗你没好处!
多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能.具有这种能力的系 ...
- GCD的相关函数使用
GCD 是iOS多线程实现方案之一,非常常用 英文翻译过来就是伟大的中枢调度器,也有人戏称为是牛逼的中枢调度器 是苹果公司为多核的并行运算提出的解决方案 1.一次性函数 dispatch_once 顾 ...
- hdu1695 GCD(莫比乌斯反演)
题意:求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1<=x<=b , 1<= y <= d). 知识点: 莫比乌斯反演/*12*/ 线性筛求莫比乌 ...
- hdu2588 GCD (欧拉函数)
GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数. (文末有题) 知 ...
- BZOJ 2820: YY的GCD [莫比乌斯反演]【学习笔记】
2820: YY的GCD Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1624 Solved: 853[Submit][Status][Discu ...
- BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】
2818: Gcd Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 4436 Solved: 1957[Submit][Status][Discuss ...
随机推荐
- c语言最后一次作业
1.当初你是如何做出选择计算机专业的决定的? 我再来到大学之前,通过查询和询问,了解到当前计算机行业就业需求量较高,同时我对计算机的几年过去比较高了,在高中时期就有过在大学学习计算机行业的知识与专业的 ...
- Beta版本展示
Beta版本展示 开发团队:MyGod 团队成员:程环宇 张芷祎 王田路 张宇光 王婷婷 源码地址:https://github.com/WHUSE2017/MyGod MyGod团队项目的目标: 让 ...
- 《Effective Objective-C 2.0》摘要
前一段时间将<Effective Objective-C 2.0>这本书浏览了一遍,说一下几个觉得比较有意思的知识点. 感觉这本书是ios开发必看的一本书,最基础的,以及稍微高阶一点的oc ...
- wpf研究之道——datagrid控件数据绑定
前台: <DataGrid x:Name="TestCaseDataGrid" ItemsSource="{Binding}" > {binding ...
- http客户端请求及服务端详解
http客户端请求及服务端详解 引言 HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展. ...
- 【转】optach学习
[转自:https://yq.aliyun.com/articles/28007,仅作学习用途] 摘要: Opatch 是oracle公司开发的安装,卸载,检测patch冲突的工具,管理oracle所 ...
- 第四章 JavaScript操作DOM对象
第四章 JavaScript操作DOM对象 一.DOM操作 DOM是Document Object Model的缩写,即文档对象模型,是基于文档编程的一套API接口,1988年,W3C发布了第一级 ...
- 操作MP3文件的元数据
参见:http://jingyan.baidu.com/article/03b2f78c4d5eae5ea237aee7.html 一.MP3文件的元数据 一个规则的MP3文件大致含有3个部分: TA ...
- mybatis的generator中xml配置问题
<!-- 生成模型的包名和位置 --> <javaModelGenerator targetPackage="com.sung.risk.model.biz" t ...
- JavaScript作用域那些事
作用域 (1).作用域也叫执行环境(execution context)是JavaScript中一个重要的概念.执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为.在JavaScript ...