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 题意:两个绿洲之间是沙漠,沙漠的温度不同,告诉起点,终点,求使得从起点到终点的最高温度最小的路径,如果有多条,输出长度最短的路径: 思路:用最小费用(最短路径)最大流(最小温度)也能搞吧,但因 ...
随机推荐
- 关于JS判断图片是否加载完成且获取图片宽度的方法
做web的同学们经常会碰到客户上传图片将网页内容区撑破了的情况,下面就这个问题我们一种如何使用js处理这个问题的方法,具体思路就是在js判断客户端的图片下载完毕之后适时的对该图片的宽度或者高度做一些处 ...
- 网站性能Web压力测试工具webbench
webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装: wget http:/ ...
- Java操作xml文件
Bbsxml.java public class Bbsxml { private String imgsrc; private String title; private String url; p ...
- WPF 窗体拖转时不触发MouseLeftButtonUpEvent
解决方案:手动添加Handler,因为e.Handled这个属性是用在路由事件中的,当某个控件得到一个RoutedEvent,就会检测Handled是否为true,为true则忽略该事件. //手动注 ...
- intel 系列的PC机处理器是大端的还是小端的?
intel 系列的PC机处理器是大端的还是小端的?由于要安装oracle,需要知道是大端机器还是小端的,你好,现在流行的PC,是微型处理器,也就是所谓的小端处理器. 大端处理器是由若干个微型处理器有机 ...
- vsftpd的安装
好像linux下的服务的配置和文件分布都差不多, 如httpd, vsftpd, named. 都是: 在/etc/???下面进行配置???.conf, 然后在/var/???放置实际要处理的文件/目 ...
- LINUX中,Vi编辑器的几种模式及保存、退出等命令
vi编辑器有三种模式: 命令模式,编辑模式,末行模式 打开vi后首先是命令模式,用i,o,a等进入编辑模式,按esc退出编辑模式,回到命令模式. 在命令模式下输入:wq表示保存退出,:wq!强制保存退 ...
- jquery源码分析-工具函数
jQuery的版本一路狂飙啊,现在都到了2.0.X版本了.有空的时候,看看jquery的源码,学习一下别人的编程思路还是不错的. 下面这里是一些jquery的工具函数代码,大家可以看看,实现思路还是很 ...
- 使用mysql服务来记录用户的反馈
经过前几篇教程的学习,相信你对于微信的操作与SAE和webpy都有了些了解,那么这次我想加一个功能,通过mysql来记录用户的反馈,如用户输入fk+内容,然后通过一个页面来显示,最终的效果如下 htt ...
- nyoj19 全排列
http://acm.nyist.net/JudgeOnline/status.php?pid=19 #include<stdio.h> #include<stdlib.h> ...