当前位置: 首页 > news >正文

线段树解决-----P1161 开灯 P1047 [NOIP2005 普及组] 校门外的树 python解法

# [NOIP2005 普及组] 校门外的树

## 题目描述

某校大门外长度为 l 的马路上有一排树,每两棵相邻的树之间的间隔都是 1 米。我们可以把马路看成一个数轴,马路的一端在数轴 0 的位置,另一端在 l的位置;数轴上的每个整数点,即0,1,2,...,l,都种有一棵树。


由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

## 输入格式

第一行有两个整数,分别表示马路的长度 l 和区域的数目 m。

接下来 m 行,每行两个整数 u, v,表示一个区域的起始点和终止点的坐标。

## 输出格式

输出一行一个整数,表示将这些树都移走后,马路上剩余的树木数量。

## 样例 #1

### 样例输入 #1

```
500 3
150 300
100 200
470 471
```

### 样例输出 #1

```
298
```

## 提示

**【数据范围】**

  • 对于 20% 的数据,保证区域之间没有重合的部分。
  • 对于 100% 的数据,保证 1≤l≤104,1≤m≤100,0≤u≤v≤l。

**【题目来源】**

NOIP 2005 普及组第二题

n,m=map(int, input().split())
ar=[1 for x in range(n+1)]  #生成0~n个共计n+1棵树
for i in range(m):a,b=map(int,input().split())for j in range(a,b+1):ar[j]=0  #范围内挖掉的树置0,若区间有重合也不过是重复置0
print(sum(ar))

题目描述

在一条无限长的路上,有一排无限长的路灯,编号为 1,2,3,4,…1,2,3,4,…。

每一盏灯只有两种可能的状态,开或者关。如果按一下某一盏灯的开关,那么这盏灯的状态将发生改变。如果原来是开,将变成关。如果原来是关,将变成开。

在刚开始的时候,所有的灯都是关的。小明每次可以进行如下的操作:

指定两个数,a,t(a 为实数,t 为正整数)。将编号为 ⌊a⌋,⌊2×a⌋,⌊3×a⌋,…,⌊t×a⌋ 的灯的开关各按一次。其中 ⌊k⌋ 表示实数 k 的整数部分。

在小明进行了 n 次操作后,小明突然发现,这个时候只有一盏灯是开的,小明很想知道这盏灯的编号,可是这盏灯离小明太远了,小明看不清编号是多少。

幸好,小明还记得之前的 n 次操作。于是小明找到了你,你能帮他计算出这盏开着的灯的编号吗?

输入格式

第一行一个正整数 n,表示 n 次操作。

接下来有 n 行,每行两个数,ai​,ti​。其中 ai​ 是实数,小数点后一定有 6 位,ti​ 是正整数。

输出格式

仅一个正整数,那盏开着的灯的编号。

输入输出样例

输入 #1复制

3
1.618034 13
2.618034 7
1.000000 21

输出 #1复制

20

说明/提示

记 T=i=1∑n​ti​=t1​+t2​+t3​+⋯+tn​。

  • 对于 30% 的数据,满足 T≤1000;
  • 对于 80% 的数据,满足 T≤200000;
  • 对于 100% 的数据,满足 T≤2000000;
  • 对于 100% 的数据,满足 n≤5000,1≤ai​<1000,1≤ti​≤T。

数据保证,在经过 n 次操作后,有且只有一盏灯是开的,不必判错。而且对于所有的 i 来说,ti​×ai​ 的最大值不超过 2000000。

n=int(input())
arr=[0 for i in range(2000000)] 
'''
开线段树 关灯状态为0,开灯为1,因为题目说了最后只有一盏灯亮,那么
就找到那一盏灯的编号
'''
for i in range(n):a,t=map(float,input().split())for j in range(1,int(t)+1):#原来亮现在暗if arr[int(j*a)]==0:arr[int(j*a)]=1#原来暗现在亮elif arr[int(j*a)]==1:arr[int(j*a)]=0
print(arr.index(1))

http://www.lryc.cn/news/300167.html

相关文章:

  • 学习总结16
  • 问题:从完整的问题解决过程来看,( )是首要环节。A.理解问题 B.提出假设C.发现问题 D.检验假设 #学习方法#学习方法
  • 服务器感染了.mallox勒索病毒,如何确保数据文件完整恢复?
  • Android java基础_多态性
  • 面试前的准备
  • 前端架构: 本地调试脚手架的2种方式
  • 现阶段适用于 单一架构 还是 分布式架构 ?
  • 掌握Go并发:Go语言并发编程深度解析
  • 创建一个多进程服务器和多线程服务器
  • 相机图像质量研究(18)常见问题总结:CMOS期间对成像的影响--CFA
  • 18.谈谈你对JSON的理解
  • 绝地求生:“觉醒之旅”通行证曝光,西游主题通行证及成长型武器即将上线
  • JS如何判断普通函数与异步(async)函数
  • ndk-r20b 编译 boost 1.74。
  • 尚硅谷最新Node.js 学习笔记(四)
  • 掌握XGBoost:GPU 加速与性能优化
  • 【2024年毕设系列】如何使用Anaconda和Pycharm
  • Blazor OIDC 单点登录授权实例5 - 独立SSR App (net8 webapp ) 端授权
  • 基于蒙特卡洛的电力系统可靠性分析matlab仿真,对比EDNS和LOLP
  • Spring boot整合redisson报错
  • 【AIGC】Stable Diffusion的ControlNet插件
  • 【蓝桥杯单片机入门记录】认识单片机
  • Rust 数据结构与算法:3栈:用栈实现符号匹配
  • 用ESP8266快速实现WIFI红外遥控器(SoC模式)
  • 微服务OAuth 2.1认证授权可行性方案(Spring Security 6)
  • Maui blazor ios 按设备类型设置是否启用safeArea
  • C#系列-使用 Minio 做图片服务器实现图片上传 和下载(13)
  • 生活篇——华为手机去除负一屏
  • 2024牛客寒假算法基础集训营2-c Tokitsukaze and Min-Max XOR
  • C语言:指针的基础详解