hdu5720_贪心
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5720
题意:地上有n根树枝, 长度都给出来了,你手上有长度范围为[L, R]的树枝,问有多少树枝不能和地上任意两根树枝组成三角形
思路:先sort一遍地上的树枝a[],发现相邻两根树枝包含了两根中任意一根和剩下的树枝中任意一根的所有情况;
1 #include <algorithm> 2 #include <iostream> 3 #include <cstdlib> 4 #include <cstring> 5 #include <string> 6 #include <cstdio> 7 #include <vector> 8 #include <ctime> 9 #include <cmath> 10 #include <queue> 11 #include <set> 12 #include <map> 13 using namespace std; 14 #define Fill(x, y) memset((x), (y), sizeof(x)) 15 #define Rep(i, x, y) for(int i = x; i <= y; ++i) 16 #define Dow(i, x, y) for(int i = x; i >= y; --i) 17 typedef long long LL; 18 typedef pair <int, int> P; 19 const int N = 1e5 + 10; 20 int GCD(int a, int b) { 21 return b ? GCD(b, a % b) : a; 22 } 23 int LCM(int a, int b) { 24 return a * b / GCD(a, b); 25 } 26 27 LL a[N]; 28 struct data { 29 LL l , r; 30 }x[N]; 31 LL cmp(data x , data y) { 32 if(x.l == y.l) 33 return x.r > y.r; 34 return x.l < y.l; 35 } 36 37 int main() 38 { 39 int t , n; 40 LL L , R; 41 scanf("%d" , &t); 42 while(t--) { 43 scanf("%d %lld %lld" , &n , &L , &R); 44 Rep(i , 1 , n) { 45 scanf("%lld" , a + i); 46 } 47 sort(a + 1 , a + n + 1); 48 x[1].l = 1, x[1].r = 0; 49 int k = 1; 50 Rep(i , 2 , n) { 51 LL x1 = a[i] - a[i - 1] + 1; 52 LL y1 = a[i] + a[i - 1] - 1; 53 if(x1 > R || y1 < L) 54 continue; 55 if(x1 < L) 56 x1 = L; 57 if(y1 > R) 58 y1 = R; 59 x[k].l = x1, x[k].r = y1; 60 k++; 61 } 62 sort(x + 1 , x + k , cmp); 63 LL res = x[1].r - x[1].l + 1; 64 // cout << res << endl; 65 LL ll = x[1].l, rr = x[1].r; 66 for(int i = 2 ; i < k ; ++i) { 67 if(x[i].l <= rr) 68 { 69 if(x[i].r > rr) 70 { 71 res += x[i].r - rr; 72 ll = x[i].l, rr = x[i].r; 73 } 74 } 75 else if(x[i].l > rr) 76 { 77 res += x[i].r - x[i].l + 1; 78 ll = x[i].l, rr = x[i].r; 79 } 80 //cout << res << endl; 81 } 82 LL res1 = R - L + 1 - res; 83 printf("%lld\n" , res1); 84 } 85 return 0; 86 }
转载于:https://www.cnblogs.com/luomi/p/5679817.html
hdu5720_贪心相关推荐
- 算法设计与分析第3章 贪心算法
第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...
- 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...
问题描述 给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数. 另外,还给定 V 中的一个项点,称为源. 现在我们要计算从源到所有其他各项点的最短路径长度. 这里的长度是指路上各边权之 ...
- Too Many Segments CF595D 贪心乱搞
传送门! 比赛的时候没有时间写了,看看了看大佬的代码,学习学习. 一开始实验室大佬说是用差分写的,但是看了代码发现打cf的人大家都是stl狂魔! 贪心思路:区间按照左端点排序,从1~2e5遍历每一个点 ...
- Roundgod and Milk Tea 贪心
这个题好像可以用一种类似与置换的贪心方法来做~ sum记为剩余奶茶,一开始sum等于奶茶和 ans记录已经喝的奶茶数 不用排序,我们就从前往后直接处理,考虑的是每一个班最多可以喝多少杯奶茶 就是从剩余 ...
- 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码
1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...
- 贪心:expedition 最优加油方法
已知一条公路上,有一个起点与一个终点,这之间有n个加油站;已知从这n个加 油站到终点的距离d与各个加油站可以加油的量l,起点位置至终点的距离L与起 始时刻油箱中汽油量P;假设使用1个单位的汽油即走1个 ...
- 贪心:Burst Balloons 最少次数完成射击气球
已知在一个平面上有一定数量的气球,平面可以看作一个坐标系,在平面的x轴的不同位 置安排弓箭手向y轴方向射箭,弓箭可以向y轴走无穷远;给定气球的宽度 xstart ≤ x ≤ xend,问至少需要多少弓 ...
- 贪心:jump 游戏(获取最少跳跃的次数以及跳跃路径)
一个数组存储了非负整型数据,数组中的第i个元素a[i],代表了可以从数组第i个 位置最多向前跳跃a[i]步;已知数组各元素的情况下,求是否可以从数组的第0个位置跳跃到数组的最后一个元素的位置,返回最少 ...
- 贪心:Jump Game 跳跃游戏
一个数组存储了非负整型数据,数组中的第i个元素a[i],代表了可以从数组第i个 位置最多向前跳跃a[i]步;已知数组各元素的情况下,求是否可以从数组的第0个位置跳跃到数组的最后一个元素的位置,返回是t ...
最新文章
- Python安装时我遇到的一些问题
- shell字符串的处理
- 吴恩达 NIPS 2016:利用深度学习开发人工智能应用的基本要点(含唯一的中文版PPT)...
- javascript滚动文字
- Hibernate- QBC-基本查询
- 【刷题】洛谷 P2709 小B的询问
- 人工智能安全框架(2020年)
- 使用loadrunner进行服务器性能测试(winsocket)
- Jmeter模拟多用户同时登陆
- NTL密码算法开源库拓展——SM2算法
- 【SW】利用3D打印机打印 PCB 钢网的方法
- 精选16款超精美的XP登录界面下载
- 第七届中国云计算大会在京盛大开幕
- 计算机海报大赛策划书,海报策划书模板.docx
- phpcms v9摆脱手机门户,轻松搭建wap手机站
- 在手机触摸屏领域应用的触摸芯片
- revit2019 导出obj_Revit文件导出格式大全(上)
- 表单提交checkbox为必选
- 区块链与数字货币之间的关系
- 照片日历制作软件服务器端,#原创新人#99%完美的全平台日历解决方案
热门文章
- 使用回溯法解决编辑距离问题(C语言)
- linux磁带存储,linux 磁带文件操作分析
- palindromic java_Longest Palindromic Substring leetcode java
- android文件管理器,ES文件浏览器(com.estrongs.android.pop) - 4.2.4.6.1 - 应用 - 酷安
- 学习计算机游戏编程,在线游戏学编程,游戏编程汇总
- nexus 仓库类型_使用Nexus私服代理其他maven仓库(jitpack、jcenter)
- mysql字符串逆时针旋转180度_mysql 函数示例(转)
- cpu高对计算机有什么影响吗,CPU损坏对电脑造成哪些影响
- 华为手机怎么隐藏按键图标_华为手机隐藏技巧,一键简单设置,让沟通更加便捷...
- HDLBits答案(12)_Verilog移位寄存器