hdu 5188 dfs+二分
get了很多新技能
当时想到了用dfs,但是排序用的是限制时间排序,一直没搞出来。
正解:
二分用时,dfs判断,为了顺利进行做题,需要按照做题开始时间排序
还可以用dp
题意:
作为史上最强的刷子之一,zhx常常参与各种比赛。
有一天,zhx去虐一场比赛。他觉得题太简单了。
这场比赛有n道题。他一眼就已经计算出他做第i道题要花ti的时间,做完后可以得到vi分。
因为他太强了,所以他被管理员盯上了。如果他在第li个单位时间前做完了第i道题,那么管理员就会认为他在作弊,然后把他的号封了。
zhx不一定把所有题都做完。他只需要拿到不少于w分就满足了。他让你告诉他他最小需要花费多少时间才能拿到足够的分数并且不被封号。或者说他根本不能拿到那么多分。
注意,zhx只能同时做一道题,而且他一旦开始做一道题,就非得把它做出来不可。然后他会在做完后立即提交代码。
1 3
1 4 7
3 6
4 1 8
6 8 10
1 5 2
2 7
10 4 1
10 2 3
7
8
zhx is naive!
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=;
long long sum[maxn];
int n,w;
struct node
{
int t,v,l;
void input()
{
scanf("%d%d%d",&t,&v,&l);
}
friend bool operator<(node a,node b)
{
return a.l-a.t<b.l-b.t;
}
}q[maxn];
bool dfs(int p,int tot,long long va)
{
if(va>=w) return ;
if(p<) return ;
if(va+sum[p]<w) return ; //如果加上剩下的价值仍小于w
if(tot-q[p].l>=&&tot-q[p].t>=) if(dfs(p-,tot-q[p].t,va+q[p].v)) return ;
if(dfs(p-,tot,va)) return ;
return ;
}
int main()
{
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
#endif
int i,j,k;
while(scanf("%d%d",&n,&w)!=EOF)
{
for(i=;i<n;i++) q[i].input();
sort(q,q+n);
/*for(int i=0;i<n;i++)
{
printf("%d %d %d\n",q[i].t,q[i].v,q[i].l);
}*/
for(i=;i<n;i++)
{
if(i==) sum[i]=q[i].v;
else sum[i]=sum[i-]+q[i].v;
}
if(sum[n-]<w)
{
printf("zhx is naive!\n");
continue;
}
int l=,r=*n; //最高用时
int ans;
while(l<=r)
{
int mid=(l+r)>>;
if(dfs(n-,mid,)) r=mid-,ans=mid;
else l=mid+;
}
printf("%d\n",ans);
}
}
hdu 5188 dfs+二分的更多相关文章
- uva 10004 Bicoloring(dfs二分染色,和hdu 4751代码差不多)
Description In the ``Four Color Map Theorem" was proven with the assistance of a computer. This ...
- HDU 5143 DFS
分别给出1,2,3,4 a, b, c,d个 问能否组成数个长度不小于3的等差数列. 首先数量存在大于3的可以直接拿掉,那么可以先判是否都是0或大于3的 然后直接DFS就行了,但是还是要注意先判合 ...
- Snacks HDU 5692 dfs序列+线段树
Snacks HDU 5692 dfs序列+线段树 题意 百度科技园内有n个零食机,零食机之间通过n−1条路相互连通.每个零食机都有一个值v,表示为小度熊提供零食的价值. 由于零食被频繁的消耗和补充, ...
- Java实现 LeetCode 655 输出二叉树(DFS+二分)
655. 输出二叉树 在一个 m*n 的二维字符串数组中输出二叉树,并遵守以下规则: 行数 m 应当等于给定二叉树的高度. 列数 n 应当总是奇数. 根节点的值(以字符串格式给出)应当放在可放置的第一 ...
- hdu 2413(最大匹配+二分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2413 思路:由于要求最少的时间,可以考虑二分,然后就是满足在limit时间下,如果地球战舰数目比外星战 ...
- hdu 1281棋盘游戏(二分匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281 Problem Description 小希和Gardon在玩一个游戏:对一个N*M的棋盘, ...
- 10324 Global Warming dfs + 二分
时间限制:1000MS 内存限制:65535K提交次数:0 通过次数:0 题型: 编程题 语言: G++;GCC Description Global warming is a big prob ...
- HDU 5877 dfs+ 线段树(或+树状树组)
1.HDU 5877 Weak Pair 2.总结:有多种做法,这里写了dfs+线段树(或+树状树组),还可用主席树或平衡树,但还不会这两个 3.思路:利用dfs遍历子节点,同时对于每个子节点au, ...
- UVA 10816 + HDU 1839 Dijstra + 二分 (待研究)
UVA 题意:两个绿洲之间是沙漠,沙漠的温度不同,告诉起点,终点,求使得从起点到终点的最高温度最小的路径,如果有多条,输出长度最短的路径: 思路:用最小费用(最短路径)最大流(最小温度)也能搞吧,但因 ...
随机推荐
- SQL2005之SA提权总结
首先,看看xp_cmdshell存在不,不存在的话先恢复下. Exec sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_confi ...
- linux 搭建nginx环境(centos6.5)
1.rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rp ...
- ASP.NET版Memcached监控工具(转载)
在上一篇文章<使用Memcached提高.NET应用程序的性能>中周公讲述如何在.NET中使用Memcached来提高.NET应用程序的性 能.在实际的使用中有可能出现Memcached因 ...
- 探讨关于C#中Foreach的本质
一.为什么数组和集合可以使用foreach遍历 01. 因为数组和集合都实现了IEnumerable接口,该接口中只有一个方法,GetEnumerator() 02.数组类型是从抽象基类型 Array ...
- linux下搭建Nginx
Linux上搭建nginx,及简单配置 在上家公司都是运维安装nginx,到新公司后代码开发完成部署测试服务器要求自己装nginx,研究了好久安装好之后,到正式上线还要自己安装,索性把安装步骤自己记 ...
- java类加载器
1.什么是类加载器?类加载器实现什么功能? 类加载器(Class Loader)是用来加载java类到java虚拟机(JVM)中,加载步骤: java编译器编译java源文件(*.java文件)成字节 ...
- Numeric Validation
Numeric Inputs Numbers are even easier to validate than text. For number input types, the HTML5 spec ...
- [BZOJ1061][Noi2008]志愿者招募
[BZOJ1061][Noi2008]志愿者招募 试题描述 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难 题:为即将启动的奥运新项目招募一批短期志愿 ...
- onfiguration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/security]
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Una ...
- Android自定义dialogdemo
很多时候,我们需要自己去定义dialog,目前我们就遇见了这样一个需求,我的想法是自己定义一个dialog,如果有list的话就使用listview,如果有msg的话就使用msg,并且取消和确定按钮也 ...