HDU6669 Game(思维,贪心)
2024-09-08 09:38:20
维护区间 \([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;
}
最新文章
- Maven创建web项目:SpringMVC+Mybatis 【转】
- 手动配置 Android SDK
- MVC———用自定义扩展类实现验证
- Mybatis——oracle 的模糊查询 和 日期处理
- ADS1.2安装教程
- Markdown资源 markd
- Asp.net Mvc4 基于Authorize实现的模块权限验证方式
- 由 ";select *"; 引发的“惨案”
- nginx + tomcat
- 在Abp框架中使用Mysql数据库的方法以及相关问题小记
- [每日一题] OCP1z0-047 :2013-08-02 权限―――分配系统权限
- BZOJ 1660: [Usaco2006 Nov]Bad Hair Day 乱发节( 单调栈 )
- c++界面设计皮肤工具
- HDU2579--Dating with girls(2)--(DFS, 判重)
- 纯CSS图片缩放后显示详细信息
- K:平衡二叉树(AVL)
- python3 爬淘女郎
- loadrunner测试https
- Django的使用规则
- windows系统相关命令及问题排查实践
热门文章
- Vue的生命周期(在其他地方看到一份非常好又详细的详解)
- 内网渗透 - 权限维持 - Linux
- solr 安装与配置
- java 注解 Annontation
- Ftp客户端(上传文件)
- IIS 发布网站出现<;compilation debug=";true"; targetFramework=";4.6.1";>;错误
- 利用反射优化Servlet抽象出父类BaseServlet
- latex算法步骤如何去掉序号
- 2019-3-1-C#-json-转-xml-字符串
- linux里面以指定用户运行命令