HDU6669 Game

维护区间 \([l,r]\) 为完成前 \(i\) 步使用最少步数后可能落在的区间。

初始时区间 \([l,r]\) 为整个坐标轴。

对于第 \(i\) 个任务区间 \([a,b]\),如果两区间相离,那么至少需要 \((length + 1) / 2\) 步。

在第 \(i\) 个任务完成后,区间 \([l,r]\) 将先扩大 \(length\),然后再更新为 \([l,r]\) 和 \([a,b]\) 的交集。

时间复杂度为 \(O(n)\) 。

#include<stdio.h>
#include<stdlib.h>
#include<algorithm> using namespace std; const int inf = 1e6;
int t, n;
long long a, b, l, r, dist, ans; int main()
{
scanf("%d", &t);
for(int cas = 1; cas <= t; cas++){
ans = 0;
l = 0; r = inf;
scanf("%d", &n);
for(int i = 1; i <= n; i++){
scanf("%lld%lld", &a, &b);
dist = 0;
if(a > r){
dist = (a - r + 1) >> 1;
}
if(b < l){
dist = (l - b + 1) >> 1;
}
ans += dist;
/***l和r实际只需更新一边***/
l -= dist << 1;
r += dist << 1;
l = max(l, a);
r = min(r, b);
}
printf("%lld\n", ans);
}
return 0;
}

最新文章

  1. Maven创建web项目:SpringMVC+Mybatis 【转】
  2. 手动配置 Android SDK
  3. MVC———用自定义扩展类实现验证
  4. Mybatis——oracle 的模糊查询 和 日期处理
  5. ADS1.2安装教程
  6. Markdown资源 markd
  7. Asp.net Mvc4 基于Authorize实现的模块权限验证方式
  8. 由 &quot;select *&quot; 引发的“惨案”
  9. nginx + tomcat
  10. 在Abp框架中使用Mysql数据库的方法以及相关问题小记
  11. [每日一题] OCP1z0-047 :2013-08-02 权限―――分配系统权限
  12. BZOJ 1660: [Usaco2006 Nov]Bad Hair Day 乱发节( 单调栈 )
  13. c++界面设计皮肤工具
  14. HDU2579--Dating with girls(2)--(DFS, 判重)
  15. 纯CSS图片缩放后显示详细信息
  16. K:平衡二叉树(AVL)
  17. python3 爬淘女郎
  18. loadrunner测试https
  19. Django的使用规则
  20. windows系统相关命令及问题排查实践

热门文章

  1. Vue的生命周期(在其他地方看到一份非常好又详细的详解)
  2. 内网渗透 - 权限维持 - Linux
  3. solr 安装与配置
  4. java 注解 Annontation
  5. Ftp客户端(上传文件)
  6. IIS 发布网站出现&lt;compilation debug=&quot;true&quot; targetFramework=&quot;4.6.1&quot;&gt;错误
  7. 利用反射优化Servlet抽象出父类BaseServlet
  8. latex算法步骤如何去掉序号
  9. 2019-3-1-C#-json-转-xml-字符串
  10. linux里面以指定用户运行命令