首页 > 其他分享 >Atcoder 11.17

Atcoder 11.17

时间:2024-11-17 11:40:52浏览次数:1  
标签:Atcoder cnt 11.17 ls ans 字符串 append dq

这是11.17号的题单
4.第四题是字符串的问题,只需要找到规律即可,对于每个查询 k[i],首先计算 a 和 aa:
a 是 (k[i] - 1) // ls,即 k[i] - 1 除以字符串长度 ls 的商。这相当于确定 k[i] 在重复字符串中属于第几个完整的字符串块。
aa 是 bin(a).count("1") % 2,即 a 的二进制表示中 "1" 的个数取模 2。这用于判断 a 是否是奇数。
然后计算 b,它是 (k[i] - 1) % ls,即 k[i] - 1 除以字符串长度 ls 的余数。这相当于确定 k[i] 在当前字符串块中的具体位置。
最后代码如下:

s = input()
q = int(input())
k = list(map(int, input().split()))

ls = len(s)

for i in range(q):
  a = (k[i] - 1) // ls
  aa = bin(a).count("1") % 2
  b = (k[i] - 1) % ls
  if aa % 2 == 0:
    print(s[b], end = " ")
  elif s[b].isupper():
    print(s[b].lower(), end = " ")
  else:
    print(s[b].upper(), end = " ")

3.这道题其实不难,只要把给定第几个字符串块与前面的0块调换位置即可。代码如下:

from collections import deque
n, k = map(int, input().split())
s = input()
v=[[s[0]]]
for i in range(1,n):
    if s[i]==s[i-1]:
        v[-1].append(s[i])
    else:
        v.append([s[i]])

cnt=0
ans=[]

def f(x):
    for xx in x: ans.append(xx[0])
    return len(x)

dq=deque(v)
while dq:
    x=dq.popleft()

    if x[0][0]=='1': k-=1

    if k==1:
  
        ans.append(s[:cnt])
        y=dq.popleft()
        z=dq.popleft()
        cnt+=f(x)+f(z)+f(y)
        ans.append(s[cnt:])
        break
    else:
        cnt+=len(x)
print(*ans, sep='')

标签:Atcoder,cnt,11.17,ls,ans,字符串,append,dq
From: https://www.cnblogs.com/mandala2/p/18550383

相关文章

  • AtCoder Beginner Contest 380
    A-123233题意给个\(6\)位数,判断是否是\(1\)个\(1\),\(2\)个\(2\),\(3\)个\(3\)。思路模拟。代码点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongtypedefpair<int,int>pii;constintmxn=1e6+5;voidsolve(){ s......
  • AtCoder Grand Contests 杂做
    感觉AGC003及以前的题做了大部分,所以从AGC004开始,选一些我觉得合适的题做。AGC004E-*3200一直在往静态的几何(或者代数)限制想,结果没想到可以动态规划。为了更加直观可以看作出口在移动,然后到过的点加分,某些出界的点就被ban掉了。我们可以直接考虑定义\(f_{l,r,u,d}\)......
  • Toyota Programming Contest 2024#11(AtCoder Beginner Contest 379)题解总结
    AtCoderBeginnerContest379Rated:\(770\)A-Cyclic简单模拟。B-Strawberries字符串模拟,substr函数秒了C-Repeating中等模拟。思路:判断是否合法很简单,重点在计算花费。假设我们是\(0\)号点有\(N\)个棋子,然后移动到每个点上,显然花费为\(\frac{N(N+1)}{......
  • AtCoder Beginner Contest 379
    省流版A.模拟即可B.贪心,有\(k\)个就吃,模拟即可C.维护已经有棋子的格子,有多个棋子往右推,代价等差数列求和,模拟即可D.注意到植物高度=当前天-种植天,维护植物的种植天然后二分找对应高度的植物即可E.考虑最终答案每一个数位的值,然后处理进位即可F.单调栈处理建筑\(r\)......
  • Atcoder ABC 216 G 01Sequence 题解 [ 蓝 ] [ 差分约束 ]
    01Sequence:比较板的差分约束,但有一个很妙的转化。朴素差分约束设\(x_i\)表示第\(i\)位的前缀和。我们要最小化\(1\)的个数,就要求最小解,就要求最长路。因为约束条件都是大于等于号,所以求最长路才能满足所有条件。求最大解也是同理。我们可以对于每一个条件,列出如下不等式......
  • Atcoder Beginner Contest 379 (A-F)
    AtcoderBeginnerContest379(A-F)题目链接A-Cyclic#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;voidShowball(){chara,b,c;cin>>a>>b>>c;cout<<b<<c<<a<<""<......
  • AtCoder Beginner Contest 353 - VP 记录
    Preface这次比赛蛮简单的,就是黄题有点多,少了区分度。而且SigmaProblemAnotherSigmaProblemYetAnotherSigmaProblem是什么奇妙的题目名称?SigmaProblemAnotherSigmaProblemYetAnotherSigmaProblem\(\texttt{\scriptsizeYet\footnotesizeA......
  • AtCoder 板刷记录
    话说为啥这些场都没有G题的说[ABC200F]MinflipSummation显然的策略是把全部都是一个数的段变成全不都是另一个数,然后考虑进行dp设一个dp[i][0/1][0/1]表示一下前i个字符中奇偶性为j填的数是k时j的总和然后直接做就行了,需要矩阵快速幂加速一下[ABC201F]Insert......
  • 11.17
    [实验任务一]:双向适配器实现一个双向适配器,使得猫可以学狗叫,狗可以学猫抓老鼠。实验要求:画出对应的类图;提交源代码;packageadapter;//Cat接口interfaceCat{voidcry();voidcatchMouse();}//Dog接口interfaceDog{voidwang();voida......
  • AtCoder Beginner Contest 378 题解
    AtCoderBeginnerContest378题解比赛链接A-Pairing贪心#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;voidShowball(){vector<int>a(5);for(inti=0;i<4;i++){intx;cin>>x;a[x]++;......