import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
for (int i = 0; i < N; i++) {
int L = sc.nextInt();
int M = sc.nextInt();
int[] arr = new int[L+1];
int num = 0;
for (int j = 0; j < M; j++) {
int x = sc.nextInt();
int y = sc.nextInt();
for (int k = x; k <= y; k++) {
arr[k] = 1;
}
}
for (int k = 0; k < arr.length; k++) {
if (arr[k] != 1) {
num++;
}
}
System.out.println(num);
}
}
}
相关推荐
ZZULIOJ 1154: 校门外的树,Java
已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。某校大门外长度为L 的马路上有一排树,每两棵相邻的树之间的间隔都是1 米。我们可以把马路看成一个数轴,马路的一端在数轴0 的位置,另一端在L 的位置;每组测试数据的第一行有两个整数L(1
zzulioj 1154: 校门外的树
题目描述 某校大门外长度为L 的马路上有一排树,每两棵相邻的树之间的间隔都是1 米。我们可以把马路看成一个数轴,马路的一端在数轴0 的位置,另一端在L 的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。 由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。 输入 输入第一行是一个整数N,表示有
Spring 源码系列(23): SpringApplication.run() 启动全流程
本文深入解析了SpringApplication.run()的核心流程,通过源码拆解揭示了从启动到容器就绪的完整生命周期。文章重点分析了三个关键阶段:prepareEnvironment的配置加载逻辑(系统属性>环境变量>配置文件)、createApplicationContext的容器类型推断机制(基于classpath判断Web/Reactive/普通应用),以及callRunners的启动后回调特性(按@Order执行初始化任务)。同时澄清了常见误区,如内嵌Tomcat实际在refresh阶段的onR
简单讲解Java--queue--三组成对出现的方法的区别
操作类型异常派(失败抛异常)特殊值派(失败返null/false)核心选型原则插入add(e)offer(e)生产者:优先用offer做流控;初始化填充用add做断言取出remove()poll()消费者:永远用pollnull判断;原子操作且确定非空时才用remove查看element()peek()只读场景:99%情况用peek;需要强制非空前置条件时用element终极避坑指南不要用remove()element()做轮询——异常栈生成代价极高(填充StackTrace),比if。
Java大厂面试实录:Spring Boot与微服务、Redis缓存、JWT安全、Prometheus监控全解析——记谢飞机的一次硬核面试
周六下午,互联网大厂“星河科技”的会议室里,阳光透过落地窗洒在长桌上。面试官李总眉头微蹙,翻看着眼前这位候选人的简历——谢飞机,三年Java开发经验,自我评价“精通全家桶”。对面,谢飞机正襟危坐,嘴角带着一丝自信到发光的微笑。李总推了推眼镜,语气平淡:“谢飞机先生,我们开始吧。今天聊电商后端场景,你平时写代码用什么Java版本?
Micrometer 系列【66】上下文传播工具库 | 案例演示
context-propagation 是 Micrometer 生态的跨线程上下文搬运协议层,本身零运行时依赖、不依赖 Spring、Micrometer 其他组件。
Java 并发灵魂拷问:notify/signal 唤醒顺序是规范还是实现?
本文探讨了Java中Object.notify()和Condition.signal()唤醒线程的顺序问题。关键结论如下: Object.notify(): JVM规范未规定唤醒顺序,HotSpot实现虽采用FIFO(从WaitSet头部取线程),但这属于实现细节而非规范要求 由于synchronized是非公平锁,被唤醒线程需重新竞争锁,最终执行顺序无法保证 严禁业务代码依赖该顺序 Condition.signal(): 严格按FIFO顺序唤醒(AQS等待队列头部线程) 是设计约定,业务可合理依赖该特性
【Spring Cloud Alibaba】Sentinel(三)
这里有个关键点:不是 “前 10 秒”,是。
[Java]-微服务面试题
服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用,确保服务不会崩溃。微服务的负载均衡主要使用了一个组件Ribbon,比如,我们在使用feign远程调用的过程中,底层的负载均衡就是。2,我们还在skywalking设置了告警规则,特别是在项目上线以后,如果报错,我们分别设置了可以给相关负责人。简历上写的微服务,只要是发生了多个服务之间的写操作,都需要进行分布式事务控制。2,在客户端的配置文件中,可以配置某一个服务调用的负载均衡策略(局部)
49. 【Java】JDK 21的虚拟线程(上):革命性的并发模型
本文深入解析JDK 21引入的虚拟线程(Virtual Threads)技术,从传统平台线程的资源瓶颈出发,阐述虚拟线程的轻量级特性、M:N调度模型及其工作原理。详细介绍了两种创建虚拟线程的方法,并通过性能对比实验展示其在I/O密集型场景下的显著优势。总结了虚拟线程的适用场景、使用注意事项以及与平台线程的核心差异,帮助开发者掌握这一革命性的并发编程工具。
Java Spring 批量修改,实体、接口、方法的定义
本文描述了一个批量更新车辆类型的接口实现。该功能通过Controller层接收包含出库单ID列表和车辆类型的请求参数,调用Service层进行处理。实现层采用事务管理,首先验证参数有效性,然后查询对应出库单数据并批量更新车辆类型字段,最后返回操作结果(成功更新记录数或错误信息)。该接口主要用于快递业务中其他出库单的车辆类型批量修改操作,包含完整的参数校验、异常处理和事务管理机制。
并发 13 · 异步编排
摘要:本文探讨了异步编排在秒杀下单场景中的应用,分析了传统Future的局限性,并介绍了CompletableFuture如何通过链式调用解决任务依赖与并行问题。文章详细讲解了创建异步任务、串联任务(thenApply/thenCompose)、合并任务(thenCombine/allOf)以及异常处理等核心方法,强调使用独立线程池避免阻塞公共资源。最后结合秒杀案例,展示了如何构建高效、清晰的异步流水线,优化响应时间。全文提供代码示例和选型建议,帮助开发者实现高性能异步流程编排。
家政派单系统开发实战:架构设计与派单算法指南
家政派单系统是连接用户需求与上门服务人员的核心调度平台,其开发难点并不在于简单的CRUD,而是在于如何设计一套能支撑“多角色、多任务类型、高并发抢单”的架构,以及一套能让订单和师傅效率化的派单算法。一旦师傅手动拒绝系统派单,近1小时的接单权重下降50%,防止师傅只接高价单而忽略普通单,导致用户体验受损。建议优先搭建一个可配置化的规则引擎,将派单距离、服务类目、师傅等级做成后台可调整的配置项,这样后期运营调整策略时,无需修改代码。师傅接单后的轨迹追踪,是提升用户体验的关键,也是开发的难点。
零信任架构实战:基于天远企业年报信息核验构建自动化供应商准入网关
破解供应商准入核查痛点:从传统人工资质初筛到自动化数据穿透 在大型 B2B 供应链采购平台的微服务架构中,供应商准入尽职调查(KYC)是保障平台交易生态健康的核心防线。传统的准入流程往往依赖业务人员手工收取企业营业执照、年度审计报告等纸质或电子扫描件,并登录多平台逐一核对。这种模式不仅流程繁琐、效率极低,而且难以实时防范非存续异常主体或信息不匹配资质的问题,
Helm Chart依赖管理实战
在kind: Podmetadata:spec:关键注解说明:标记为测试 Hook:测试成功后自动删除 Pod。
全国计算机二级Java选择题高频真题20道精选与试题解析
全国计算机等级考试二级Java语言程序设计选择题20道高频真题与标准试题解析,深度剖析二叉树度数计算、异常捕获匹配、多态向上转型、位运算、集合框架与多线程接口。
@Value与@ConfigurationProperties注解使用记录
本文探讨了从YAML配置文件中获取Map类型数据的两种方案:使用@Value注解和@ConfigurationProperties注解。作者首先尝试@Value方案,发现其无法直接注入Map且扩展性差,只能获取单个键值。随后转向@ConfigurationProperties方案,但遇到Map键中的冒号被自动过滤的问题。最终解决方案是调整YAML结构为列表形式,并创建包含key-value对的内部类Item,通过转换方法toMap()获取所需Map结构。文章强调了YAML配置项需采用kebab-case(短
Semaphore 源码解析
摘要: Semaphore是Java并发编程中的计数信号量工具,基于AQS(AbstractQueuedSynchronizer)实现,提供共享模式下的线程同步功能。其核心特性包括: 通过acquire/release方法获取/释放许可,许可数量可动态调整; 支持公平/非公平两种模式(FairSync/NonfairSync),公平模式保证先到先得; 内部使用CAS操作和自旋机制保证线程安全; 提供tryAcquire、drainPermits等扩展方法; 任何线程均可释放许可,不要求先获取许可。

187



被折叠的 条评论
为什么被折叠?



