YYHS-手机信号
题目描述
.png)
输入
.png)
输出
.png)
样例输入
样例输出
提示
.png)
题解
这道题给你三种操作(这道题用set维护区间)
对于construct操作,我们可以发现加入的区间要么和所有的区间都不相交,要么就是区间的大小比某个区间的v还要小
construct操作读入的x,y我们可以可以把y改成x+(y-x)/v*v(最后一个信号站的位置)
对于destruct操作,我们判断一下左右端点是否把其他的区间截断了
对于query操作,我们只要找一下离这个点最近的一个区间就可以了
具体细节可以看一下代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct node{
int x,y,v;
bool operator <(const node &a) const{
return x<a.x;
}
};
typedef multiset<node>::iterator It;
int m,l,r,v,x,y;
ll c;
char s[];
multiset<node> q;
int calc(int x,int y,int v){ return x+(y-x)/v*v; }
void solve_c(){
scanf("%d%d%d",&x,&y,&v);
y=calc(x,y,v);
It point=q.upper_bound((node){x,,});
if (point!=q.begin()){
point--;
int st=point->x,ed=point->y;
if (st<x&&ed>y){
int stp=point->v;
q.erase(point);
q.insert((node){st,calc(st,x,stp),stp});
if (st!=ed)
q.insert((node){calc(st,x,stp)+stp,ed,stp});
}
}
q.insert((node){x,y,v});
}
void solve_d(){
scanf("%d%d",&x,&y);
It point=q.lower_bound((node){x,,});
if (point!=q.begin()){
point--;
int st=point->x,ed=point->y;
if (st<x&&ed>=x){
int stp=point->v;
q.erase(point);
q.insert((node){st,calc(st,x-,stp),stp});
if (ed>y)
q.insert((node){calc(st,r,stp)+stp,ed,stp});
}
}
point=q.upper_bound((node){y,,});
if (point!=q.begin()){
point--;
int st=point->x,ed=point->y;
if (st<=y&&ed>y){
int stp=point->v;
q.erase(point);
q.insert((node){calc(st,y,stp)+stp,ed,stp});
}
}
q.erase(q.lower_bound((node){x,,}),q.upper_bound((node){y,,}));
}
void solve_q(){
scanf("%d",&x);
int d=1e9;
It point=q.lower_bound((node){x,,});
if (point!=q.end()) d=min(d,point->x-x);
if (point!=q.begin()){
point--;
int st=point->x,ed=point->y;
if (ed>=x){
int stp=point->v;
d=min(d,x-calc(st,x,stp));
if (st!=ed) d=min(d,calc(st,x,stp)+stp-x);
} else d=min(d,x-point->y);
}
if (d==1e9) puts("");
else printf("%lld\n",max(0ll,c-(ll)d*d));
}
int main(){
scanf("%d%lld",&m,&c);
for (int i=;i<=m;i++){
scanf("%s",s);
if (s[]=='q') solve_q(); else
if (s[]=='c') solve_c(); else
if (s[]=='d') solve_d();
}
return ;
}
YYHS-手机信号的更多相关文章
- "手机信号放大器" 让手机信号增强的办法
我的住处信号及其的差,电话基本打不进来,放大器的话便宜的也得一百多,于是自己尝试各种办法让自己的手机有信号,于是奇迹般的成功了: 将手机放于铁缸内,并45度角斜放,刚好淹没手机为佳.于是信号奇迹般的3 ...
- test20180921 手机信号
题意 分析 我们用形如(l, r, v) 的三元组描述一个区间,这个区间中从l 到r 每隔v 有一个信号站. 考虑一次construct 操作,会添加一个新的区间,并可能将一个已经存在的区间分裂为两个 ...
- JZOJ5821手机信号
用set维护,(l,r,v),注意边界,保证了两个端点l,r一定有信号站 增加有三种可能,1.直接加(没有影响),2.将原本的一个区间变成两个 3.将原本的一个区间变成三个 删除有三种情况,1.全包含 ...
- Android Telephony —— 手机信号实时变化源码分析过程记录
源码版本:4.4 跳过InCallActivity等UI实现.先看service以及底层. 1, 在frameworks/opt下面会发现如下文件列表: ./telephony/src/java/co ...
- 手机信号G、E、O、3G代表什么意思?
G指GPRS,是2.5G网络,属于GSM网络,也就是说这项技术位于第二代(2G)和第三代(3G)移动通讯技术之间,GPRS的传输速率可提升至56甚至114Kbps,已经将2017年确定为关闭GSM网络 ...
- [set]JZOJ 5821 手机信号
Description
- android 获取手机GSM/CDMA信号信息,并获得基站信息
本文转自:http://software.intel.com/zh-cn/blogs/2011/12/16/android-gsmcdma/ 在Android中我们常用的轻松获取WIFI信号列表,那如 ...
- 手机定位室内gps没信号
手机定位一般分3种,gps,手机信号基站,上网地点,其中gps信号一般只有户外有,所以在室外的时候只开启定位和gps就可以定位了,但是在室内没有gps的情况,就需要开网络定位了.
- 手机信号强度单位dB、dBm和asu
dB.dBm都是功率增益的单位,不同之处如下: dB是一个表征相对值的值,纯粹的比值,只表示两个量的相对大小关系,没有单位,当考虑甲的功率相比于乙功率大或小多少个dB时,按下面的计算公式:10log( ...
- 酷派大神F2系列使用QPST进行nv备份和恢复,解决无信号问题(附备份文件)
测试机器: 大神F2联通版 8675_W00 系统COOLUI55 写贴原因: 自己无意间刷错了包,结果手机无信号,进入工程模式怎么设置都没有用.尝试过系统还原(备份过).刷新的ROM.线刷, ...
随机推荐
- 2016-2017-2 《Java 程序设计》课堂实践项目
目录 基本工具 基础内容 Hello World 和 模块分解 数组的使用 命令行参数 递归 分支语句 String类的使用 类的定义与测试 多态 IO与异常 数据库 网络与安全 数据结构应用 And ...
- 结对编程1-基于GUI的四则运算生成器
201421123016郑怀勇 201421123017康建灿 程序代码 / 康建灿 一.需求分析 记录用户的对错总数. 程序退出再启动的时候,能把以前的对错数量保存并在此基础上增量计算. 有 ...
- 201521123054 《Java程序设计》第7周学习总结
1. 本周学习总结 2. 书面作业 ArrayList代码分析 1.1 解释ArrayList的contains源代码 //contains()方法 public boolean contains(O ...
- 学号:201521123116 《java程序设计》第七周学习总结
1. 本周学习总结 2. 书面作业 Q1 ArrayList代码分析 1.1 解释ArrayList的contains源代码ArrayList的contains源代码 1.2 解释E remove(i ...
- 201521123050 《Java程序设计》第5周学习总结
1. 本周学习总结 2. 书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 答:不 ...
- 201521123065 《Java程序设计》第3周学习总结
1. 本周学习总结 2. 书面作业 Q1:代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; ...
- 201521123062《Java程序设计》第9周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己以前编写的代码中经常出现 ...
- **********MySql查询方法重要**********
分析问题要分步,查询每一步的结果,最后连起来 例如下面有四张表让你查询 查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录. 第一部,找到课程编号为3-105的记录中学号为109 ...
- php单例连接数据库
mysql_connect() 后续的php就不支持了,所以会报错. 现在改为使用mysqli_connect(),需要开启php扩展哟! <?php /** * 设计模式之单例模式 * $_i ...
- python只re模块
while True: phone_number=input('please input your phone number:') if len(phone_number)==11 \ and pho ...