2019 年百度之星·程序设计大赛 - 初赛一
传送门
[1]hdu
[2]bestcoder
B.Game(贪心+思维)
•题意
一步可以走一个或者两个,求依次进入n个区间[li,ri]的最少步数
•思路
就当前位置cur来说,
1)如果下一个任务的区间包括当前位置,那就可以不动
2)如果下一个任务区间在当前位置左边,那就向下一个的左边界移动
①如果正好可以全走两个格子的话,就在此位置
如果不可以全走两个格子的话,
②如果再下一个位置在左边的话,那就不动
③如果再下一个位置在右边的话,那就把走的一格变成两格,在左边界往右一个位置
3)如果下一个任务区间在当前位置右边,那就向下一个的右边界移动
①如果正好可以全走两个格子的话,就在此位置
如果不可以全走两个格子的话,
②如果再下一个位置在右边的话,那就不动
③如果再下一个位置在左边的话,那就把走的一格变成两格,在右边界往左一个位置
起点在最小区间的左边界或者右边界
•代码
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 const int maxn=1000+50; 5 6 int n; 7 int l[maxn]; 8 int r[maxn]; 9 10 ll F(int k,int p) 11 { 12 ll ans=0; 13 while(k <= n) 14 { 15 if(p >= l[k] && p <= r[k]) 16 { 17 k++; 18 continue; 19 } 20 if(l[k] > p) 21 { 22 ll cur=l[k]-p; 23 ans += (cur+1)/2; 24 p=l[k]; 25 26 if(cur%2 == 0) 27 continue; 28 29 int tmp=k; 30 for(;tmp <= n && l[tmp] <= p && r[tmp] > p;tmp++); 31 32 if(tmp > n) 33 return ans; 34 35 if(l[k] != r[k] && l[tmp] > p) 36 p++; 37 } 38 else 39 { 40 ll cur=p-r[k]; 41 ans += (cur+1)/2; 42 p=r[k]; 43 44 if(cur%2 == 0) 45 continue; 46 47 int tmp=k; 48 for(;tmp <= n && l[tmp] < p && r[tmp] >= p;tmp++); 49 50 if(tmp > n) 51 return ans; 52 53 if(l[k] != r[k] && r[tmp] < p) 54 p--; 55 } 56 } 57 return ans; 58 } 59 int main() 60 { 61 int T; 62 scanf("%d",&T); 63 while(T--) 64 { 65 scanf("%d",&n); 66 for(int i=1;i <= n;++i) 67 scanf("%d%d",l+i,r+i); 68 69 int L=l[1]; 70 int R=r[1]; 71 for(int i=2;i <= n;++i) 72 { 73 int x=max(max(l[i],l[i-1]),L); 74 int y=min(min(r[i],r[i-1]),R); 75 76 if(x > y) 77 break; 78 L=x; 79 R=y; 80 } 81 ll ans=min(F(1,L),F(1,R)); 82 83 printf("%I64d\n",ans); 84 } 85 return 0; 86 }View Code
转载于:https://www.cnblogs.com/MMMinoz/p/11380974.html
2019 年百度之星·程序设计大赛 - 初赛一相关推荐
- 2019 年百度之星·程序设计大赛 - 初赛一 C. HDU 6670 Mindis 离散化+dijkstra
题目链接 :http://acm.hdu.edu.cn/showproblem.php?pid=6670 Mindis Time Limit: 4000/2000 MS (Java/Others) M ...
- 2019 年百度之星·程序设计大赛 - 初赛一Game HDU 6669 (实现,贪心)
Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- 2019 年百度之星·程序设计大赛 - 初赛一 1003 Mindis
Mindis Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
- [2019 年百度之星·程序设计大赛 - 初赛三]简要题解?
UPD:AC代码放上去了 前言 老年贤者选手终于记得打百度之星了 Orz mayaohua2003 题目链接 最短路 1 n⊕1n \oplus 1n⊕1 Code #include <cstd ...
- 2019 年百度之星·程序设计大赛 - 初赛二
传送门: [1]:HDU [2]:bestcoder B.度度熊与排列(思维) •题意 有一个数组 p,p 中包含的数为 1~m 的全排列,一个含 m 个字符的串 s: 在 s 上有一个操作,对于 s ...
- 2019 年百度之星·程序设计大赛 - 初赛一 解题报告
题目链接 1001 Polynomial (基础数学) Accepts: 2234 Submissions: 5283 Time Limit: 2000/1000 MS (Java/Others) M ...
- HDU 6114 Chess 【组合数】(2017百度之星程序设计大赛 - 初赛(B))
Chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- hdu6383(2018 “百度之星”程序设计大赛 - 初赛(B))
p1m2 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Sub ...
- hdu6380(2018 “百度之星”程序设计大赛 - 初赛(B))
degree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
最新文章
- keras 的 example 文件 mnist_siamese.py 解析
- C++语言程序设计视频教程_清华大学_郑莉(基础篇+进阶篇)
- mfc存储颜色到mysql_mfc存储二进制文件
- JVM-对象的存活与死亡
- android 收获地址管理,android UiAutomator添加收货地址的用例
- 基于SpringBoot+Vue开发的前后端分离博客项目-Java后端接口开发
- (24)System Verilog设计十进制计数器
- 转:Loadrunner打开https报错“Internet…
- Wannafly挑战赛9: B. 数一数
- [GO]并发实现聊天室服务器
- 克就克嘛!哪个怕哪个
- Apache部署多个WordPress网站
- Ubuntu 16.04显示分辨率的更改
- win10显示未插入扬声器或耳机的解决方案
- Kubernetes 节点弹性伸缩开源组件 Amazon Karpenter 实践:部署GPU推理应用
- centos7 查看multipath服务状态是start condition failed,/etc/multipath.conf was not met
- WeBRTC IOS视频采集流程
- android 生成aar文件,Android 中.aar文件生成方法与用法
- 模式识别——初识模式识别
- 说说北大软微那些事儿
热门文章
- 4个变量取最大值 c++_DNF:安徒恩上线服务器爆满,甲板上全是火山C,通关翻出4个金牌...
- jq点击按钮获取php的值删除,通过jquery怎么移除点击事件
- python调用高德api路径规划_Python调用高德API实现批量地址转经纬度并写入表格的功能...
- eclipse正则表达式查找
- jquery-confirm
- Linux shell 条件判断if
- 在Oracle中查看客户端连接的IP信息 .
- mkl_def.dll文件加载失败
- java forEach使用
- processing图片粒子化_个人见到的processing(优质且全的教程,一定看原文)