【问题描述】
在山的那边、海的那边有 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)的更多相关文章

  1. Objective-C三种定时器CADisplayLink / NSTimer / GCD的使用

    OC中的三种定时器:CADisplayLink.NSTimer.GCD 我们先来看看CADiskplayLink, 点进头文件里面看看, 用注释来说明下 @interface CADisplayLin ...

  2. iOS 多线程之GCD的使用

    在iOS开发中,遇到耗时操作,我们经常用到多线程技术.Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法,只需定义想要执行的任务,然后添加到适当的调度队列 ...

  3. 【swift】BlockOperation和GCD实用代码块

    //BlockOperation // // ViewController.swift import UIKit class ViewController: UIViewController { @I ...

  4. 修改版: 小伙,多线程(GCD)看我就够了,骗你没好处!

    多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能.具有这种能力的系 ...

  5. GCD的相关函数使用

    GCD 是iOS多线程实现方案之一,非常常用 英文翻译过来就是伟大的中枢调度器,也有人戏称为是牛逼的中枢调度器 是苹果公司为多核的并行运算提出的解决方案 1.一次性函数 dispatch_once 顾 ...

  6. hdu1695 GCD(莫比乌斯反演)

    题意:求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1<=x<=b , 1<= y <= d). 知识点: 莫比乌斯反演/*12*/ 线性筛求莫比乌 ...

  7. hdu2588 GCD (欧拉函数)

    GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数.  (文末有题) 知 ...

  8. BZOJ 2820: YY的GCD [莫比乌斯反演]【学习笔记】

    2820: YY的GCD Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1624  Solved: 853[Submit][Status][Discu ...

  9. BZOJ 2818: Gcd [欧拉函数 质数 线性筛]【学习笔记】

    2818: Gcd Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 4436  Solved: 1957[Submit][Status][Discuss ...

随机推荐

  1. bzoj千题计划113:bzoj1023: [SHOI2008]cactus仙人掌图

    http://www.lydsy.com/JudgeOnline/problem.php?id=1023 dp[x] 表示以x为端点的最长链 子节点与x不在同一个环上,那就是两条最长半链长度 子节点与 ...

  2. Android类加载机制及热修复实现

    Android类加载机制 Dalvik虚拟机如同其他Java虚拟机一样,在运行程序时首先需要将对应的类加载到内存中.而在Java标准的虚拟机中,类加载可以从class文件中读取,也可以是其他形式的二进 ...

  3. nyoj n-1位数

    n-1位数 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的 ...

  4. css中的em 简单教程 -- 转

    先附上原作的地址: https://www.w3cplus.com/css/px-to-em 习惯性的复制一遍~~~~ -------------------------------我是分界线---- ...

  5. 其他—cooki和session

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  6. 新概念英语(1-11)Is this your shirt ?

    Is this your shirt?Whose shirt is white? A:Whose shirt is that? Is this your shirt, Dave? Dave:No si ...

  7. 官网jquery压缩版引用地址:

    3.1.1版本 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  8. idea中使用svn,忽略本地修改的指定的文件

    1.打开version control 2.可以查看目前忽略的文件 3.配置要忽略的文件 4.可以用通配符忽略匹配的文件 还有第二种方法,那就是: 在svn提交的界面,如果是没有加入到version- ...

  9. MySql中的varchar长度究竟是字节还是字符

    今天在设计表的时候,遇到个小问题,由于不知道未来将要存储的数据有多长(数据是通过第三方http接口提供的,根据sample显示,数据大概是如下:) 也就是6个字符. 我在设计表的时候,有点犹豫,本来准 ...

  10. [CodeForces10D]LCIS(最长公共上升子序列) - DP

    Description 给定两个数列,求最长公共上升子序列,并输出其中一种方案. Input&Output Input 第一行一个整数n(0<n<=500),数列a的长度. 第二行 ...