题目描述(绝世武功)
小明在练习绝世武功, 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