AtCoder Beginner Contest 449

A - π

考点:模拟

思路:

按圆的面积公式计算即可。

复杂度:O(1)

python 复制代码
import sys
input=sys.stdin.readline
d=int(input())
pai=3.141592653589793
print(pai*((d/2)**2))

B - Deconstruct Chocolate

考点:模拟

思路:

按题意模拟输出即可。

复杂度:O(1)

python 复制代码
import sys
input=sys.stdin.readline
h,w,q=map(int,input().split())
hr=h
wr=w
for _ in range(q):
    n,m=map(int,input().split())
    
    if n==2:
        print(m*hr)
        wr-=m
        
    else:
        
        print(m*wr)
        hr-=m
        

C - Comfortable Distance

考点:贪心,二分

思路:

题目条件是:

所以我想到固定i,来枚举j的值,将条件变形为:

于是我们可以设

对这两边做两次二分,找出第一个大于等于left的数字和第一个大于right的数字,然后将两个数字想减就能得到当前字母的对数了。

最后累加求和即可。

复杂度:O(n)

python 复制代码
import sys
input=sys.stdin.readline
from bisect import bisect_left,bisect_right
n,l,r=map(int,input().split())
a=input().strip()
p=[[] for _ in range(26)]
for i in range(n):
    p[ord(a[i])-ord('a')].append(i)
ans=0
for i in range(n):
    L=l+i
    R=r+i
    b=p[ord(a[i])-ord('a')]
    x=bisect_left(b,L)
    y=bisect_right(b,R)
    ans+=y-x
print(ans)

D - Make Target 2

考点:贪心,数学

思路:

很明显我们不能真的去双循环枚举每个点判断是不是偶数。

于是我们可以想到固定x轴上的点,然后进行求y。这样对y进行分类讨论:

的时候:

我们取的是(原因在上面已经展开了)

的时候:

我们先统计整个的偶数个数,再减去刚刚中间部分的偶数个数。

最后将两部分的和相加就得到了最终答案。

复杂度:O(n)

python 复制代码
import sys
input=sys.stdin.readline
l,r,d,u=map(int,input().split())
def fdel(x,y):
    if x>y:
        return 0
    return y//2-(x-1)//2
s=0
for x in range(l,r+1):
    a=abs(x)
    left=max(d,-a+1)
    right=min(u,a-1)
    min_zj=0
    if left<=right and a%2==0:
        min_zj=right-left+1
    zt=fdel(d,u)
    zj=fdel(left,right)
    sy=zt-zj
    s+=sy+min_zj
print(s)
相关推荐
复杂网络9 小时前
AI 不睡觉,但它比你更会做实验
算法
贵慜_Derek9 小时前
MAI-04|干净数据在工程上意味着什么:MAI 预训练数据治理
人工智能·算法·llm
用户8356290780511 天前
Python 实现 PDF 文件加密与解密方法
后端·python
用户8356290780511 天前
使用 Python 冻结与拆分 Excel 窗格教程
后端·python
vibecoding日记1 天前
双非如何快速入职字节等大厂大模型?真实案例分析:推理优化和投机解码
算法·求职·大模型工程师
yszaygr21381 天前
Verilog参数化游程编码RLE模块
算法
望易1 天前
刚设计的大模型架构-双域耦合认知框架
算法·架构
复杂网络1 天前
多个 Claude Code 与多个 Codex 协同工作:设计与实现方案
算法