蓝桥杯-每日一练03

题目描述(绝世武功)

小明在练习绝世武功, nn 个练功桩排成一排,一开始每个桩的损伤为 00。

接下来小明会练习 mm 种绝世武功,每种武功都会对 [l,r][l,r] 区间分别造成 [s,e][s,e] 的伤害。

这个伤害是一个等差序列。例如 l=1,r=4,s=2,e=8l=1,r=4,s=2,e=8 ,则会对 1−41−4 号练功桩造成2,4,6,82,4,6,8 点损伤。

小明想让你统计一下所有练功桩的损伤的和。

输入描述

第一行输入 n,mn,m,代表练功桩的数量和绝世武功的种类数。

接下来 mm 行输入 44 个整数 l,r,s,el,r,s,e 。

1≤n≤107,1≤m≤3×105,1≤l,r≤n1≤n≤107,1≤m≤3×105,1≤l,r≤n

输出描述

输出一个整数代表所有练功桩的损伤和, 题目保证所有输入输出都在 [0,9×1018][0,9×1018]

输入输出样式

代码显示

import os
import sys

# 请在此输入您的代码
su=0
n,m=map(int,input().split())
for i in range(m):
  l,r,s,e=map(int,input().split())
  su+=(s+e)*(r-l+1)//2
print(su)    
#等差数列求和((上底+下底)*高)/2      

题目描述(骑士)

小明是蓝桥王国的骑士,他喜欢不断突破自我。

这天蓝桥国王给他安排了 NN 个对手,他们的战力值分别为 a1,a2,...,ana1,a2,...,an,且按顺序阻挡在小明的前方。对于这些对手小明可以选择挑战,也可以选择避战。

身为高傲的骑士,小明从不走回头路,且只愿意挑战战力值越来越高的对手。

请你算算小明最多会挑战多少名对手。

输入描述

输入第一行包含一个整数 NN,表示对手的个数。

第二行包含 NN 个整数 a1,a2,...,ana1​,a2​,...,an​,分别表示对手的战力值。

1≤N≤3×1051≤N≤3×105,1≤ai≤1091≤ai​≤109。

输出描述

输出一个整数表示答案。

输入输出样式

代码显示

import os
import sys

# 请在此输入您的代码
n = int(input())
a = list(map(int, input().split()))
ans = 0
for x in a:
    l, r = 0, ans
    while l < r:
        mid = l + r + 1 >> 1
        if a[mid] < x:
            l = mid
        else:
            r = mid - 1
    a[r + 1] = x
    ans = max(ans, r + 1)
print(ans)

题目描述(侦探)

小明是蓝桥王国的侦探。

这天,他接收到一个任务,任务的名字叫分辨是非,具体如下:

蓝桥皇宫的国宝被人偷了,犯罪嫌疑人锁定在 NN 个大臣之中,他们的编号分别为 1∼N1∼N。

在案发时这 NN 个大臣要么在大厅11,要么在大厅22,但具体在哪个大厅他们也不记得了。

审讯完他们之后,小明把他们的提供的信息按顺序记了下来,一共 MM 条,形式如下:

  • x y,表示大臣 xx 提供的信息,信息内容为:案发时他和大臣 yy 不在一个大厅。

小明喜欢按顺序读信息,他会根据信息内容尽可能对案发时大臣的位置进行编排。

他推理得出第一个与先前信息产生矛盾的信息提出者就是偷窃者,但推理的过程已经耗费了他全部的脑力,他筋疲力尽的睡了过去。作为他的侦探助手,请你帮助他找出偷窃者!

输入描述

第 11 行包含两个正整数 N,MN,M,分别表示大臣的数量和口供的数量。

之后的第 2∼M+12∼M+1 行每行输入两个整数 x,yx,y,表示口供的信息。

1≤N,M≤5×1051≤N,M≤5×105,1≤x,y≤N1≤x,y≤N。

输出描述

输出一个整数代表偷窃者的编号。

输入输出样式

代码显示

import os
import sys

# 请在此输入您的代码
N,M=map(int,input().split())
a=[list(map(int,input().split())) for i in range (M)]
for i in range (M):
    if a[i][1]==a[i+1][1]:
      print(a[i+1][0])
      break
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值