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!
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int maxn=35; 6 long long sum[maxn]; 7 int n,w; 8 struct node 9 { 10 int t,v,l; 11 void input() 12 { 13 scanf("%d%d%d",&t,&v,&l); 14 } 15 friend bool operator<(node a,node b) 16 { 17 return a.l-a.t<b.l-b.t; 18 } 19 }q[maxn]; 20 bool dfs(int p,int tot,long long va) 21 { 22 if(va>=w) return 1; 23 if(p<0) return 0; 24 if(va+sum[p]<w) return 0; //如果加上剩下的价值仍小于w 25 if(tot-q[p].l>=0&&tot-q[p].t>=0) if(dfs(p-1,tot-q[p].t,va+q[p].v)) return 1; 26 if(dfs(p-1,tot,va)) return 1; 27 return 0; 28 } 29 int main() 30 { 31 #ifndef ONLINE_JUDGE 32 freopen("1.in","r",stdin); 33 #endif 34 int i,j,k; 35 while(scanf("%d%d",&n,&w)!=EOF) 36 { 37 for(i=0;i<n;i++) q[i].input(); 38 sort(q,q+n); 39 /*for(int i=0;i<n;i++) 40 { 41 printf("%d %d %d\n",q[i].t,q[i].v,q[i].l); 42 }*/ 43 for(i=0;i<n;i++) 44 { 45 if(i==0) sum[i]=q[i].v; 46 else sum[i]=sum[i-1]+q[i].v; 47 } 48 if(sum[n-1]<w) 49 { 50 printf("zhx is naive!\n"); 51 continue; 52 } 53 int l=0,r=100000*n; //最高用时 54 int ans; 55 while(l<=r) 56 { 57 int mid=(l+r)>>1; 58 if(dfs(n-1,mid,0)) r=mid-1,ans=mid; 59 else l=mid+1; 60 } 61 printf("%d\n",ans); 62 } 63 }
转载于:https://www.cnblogs.com/cnblogs321114287/p/4338972.html
hdu 5188 dfs+二分相关推荐
- P1099 树的直径 DFS + 二分 / 尺取法
题意 传送门 P1099 树网的核 在任意一条直径上求出的最小偏心距都相等. 树上只有一条直径时显然成立.当树有多条直径,它们必定相交,且中点汇聚于同一处,那么中心附近树的各条直径的重叠部分是相同的, ...
- hdu 2295 Radar(二分+DLX)
题目链接:hdu 2295 Radar 题意: 给你n个城市,m个雷达,现在最多用K个雷达,求最小半径覆盖全部的城市. 题解: 二分半径套一个DLX就行.网上随便找的一个板子 1 #include&l ...
- hdu 1281棋盘游戏(二分匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281 Problem Description 小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格 ...
- hdu 4751(dfs染色)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4751 思路:构建新图,对于那些两点连双向边的,忽略,然后其余的都连双向边,于是在新图中,连边的点是能不 ...
- hdu 3585(二分+最大团)
如果对团的知识不够了解的可以看看牛人的 http://www.cnblogs.com/pushing-my-way/archive/2012/08/08/2627993.html 题意:有n个点求最远 ...
- 石油采集(求联通区域) 2018多校寒假集训 (dfs+二分匹配)
题目: 链接:https://www.nowcoder.com/acm/contest/76/A 来源:牛客网 随着海上运输石油泄漏的问题,一个新的有利可图的行业正在诞生,那就是撇油行业.如今,在墨西 ...
- LeetCode 1631. 最小体力消耗路径(DFS + 二分查找)
文章目录 1. 题目 2. 解题 1. 题目 你准备参加一场远足活动.给你一个二维 rows x columns 的地图 heights ,其中 heights[row][col] 表示格子 (row ...
- hdu 3641 数论 二分求符合条件的最小值数学杂题
http://acm.hdu.edu.cn/showproblem.php?pid=3641 学到: 1.二分求符合条件的最小值 /*================================= ...
- hdu 1281 棋盘游戏 (二分匹配)
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submi ...
最新文章
- 【转】matlab函数_连通区域
- 【Core Spring】二、装配beans
- 遍历同辈节电的方法_jQuery遍历
- ​CVPR 2020雾天条件下物体检测挑战赛冠军DeepBlueAI团队技术分享
- Linux scp复制文件,不需要输入密码的技巧
- Equipment upload - ERP ACK
- 团队项目电梯会议视频
- WebStorm-2018.2.2配置
- python语言输入中文_selenium+python 语言编写问题,在执行时无法输入中文用户名...
- 24.Yii 组件行为
- Spring常用注解详解大全(建议收藏)
- SSH命令批量操作服务器
- vue实现刷新页面,页面回到顶部
- FTP 打开文件夹提示该文件没有程序与之关联来执行该操作 请在控制面板的文件夹选项中创建关联
- 适合小白的LayaAir使用说明(创建laya的简易程序教程1.0)
- 网页设计理论知识(色彩搭配)
- 上传大文件报错413问题处理
- 手机端html跑马灯效果,jQuery实现适用于移动端的跑马灯抽奖特效示例
- 手机上流行的各类谜语大揭密
- Python实操笔记(2)——海龟绘图法绘制有层次感的奥运五环