Codeforces Round #806 (Div. 4)A-E--python

第一次用python写codeforces

A.

输入方式,input()直接输入字符串,还有大小写转换函数lower(),upper()

import os
T=int(input())
for i in range(T):
    A=input()
    A_low=A.lower()
    if A_low=="yes":
        print("YES")
    else:
        print("NO")

B.

{}(dict)可当map用

import os
T=int(input())
for i in range(T):
    n=int(input())
    s=input()
    mp={}
    sum=0
    for si in s:
        if(mp.get(si)==None):
            mp[si]=1
            sum+=2
        else:
            mp[si]+=1
            sum+=1
    print(sum)

用counter函数也是一样的

import os
import collections
T=int(input())
for i in range(T):
    n=int(input())
    s=input()
    cnt=collections.Counter(s)
    sum=0
    for key,val in cnt.items():
        sum+=val+1
    print(sum)

C.

学习list(map(int,input().split()))用法即可
参考链接

import os
import collections
import math
import sys

T = int(input())
for _ in range(T):
    n = int(input())
    # int在这里是函数,把输入的东西int化
    a = list(map(int, input().split()))
    for i in range(n):
        B = input().split()
        for j in range(int(B[0])):
            if B[1][j] == 'U':
                a[i] -= 1
                if a[i] == -1:
                    a[i] = 9
            elif B[1][j] == 'D':
                a[i] += 1
                if a[i] == 10:
                    a[i] = 0
    print(*a)

D.

用切片代替C++中的substr
参考链接

一个是要注意切片时end_index是不包括自身的,所以下面是s1 = ss[:j + 1],但是start_index包括自身,另外,dict看键值元素是否存在是get方法,见B题,set看元素是否存在是用 in或者not in

import os
import collections
import math
import sys

T = int(input())
for _ in range(T):
    n = int(input())
    mp = []
    sets = set()
    for i in range(n):
        s = input()
        mp.append(s)
        sets.add(s)
    ans = ''
    for ss in mp:
        f = 0
        for j in range(len(ss)):
            s1 = ss[:j + 1]
            s2 = ss[j + 1:]
            # print(s1+'-----------'+s2)
            if s1 in sets and s2 in sets:
                f = 1
                break
        if f == 1:
            ans += '1'
        else:
            ans += '0'
    print(ans)

E.

import os
import collections
import math
import sys

T = int(input())
for _ in range(T):
    n = int(input())
    A = []
    for i in range(n):
        s = input()
        A.append(s)
    r = int(n / 2)
    sum = 0
    for i in range(r):
        for j in range(r):
            num0 = 0
            num1 = 0
            tmp1 = A[i][j]
            tmp2 = A[j][n - 1 - i]
            tmp3 = A[n - 1 - j][i]
            tmp4 = A[n - 1 - i][n - 1 - j]
            if tmp1 == '0':
                num0 += 1
            else:
                num1 += 1
            if tmp2 == '0':
                num0 += 1
            else:
                num1 += 1
            if tmp3 == '0':
                num0 += 1
            else:
                num1 += 1
            if tmp4 == '0':
                num0 += 1
            else:
                num1 += 1
            sum += min(num0, num1)
    if(n&1==1):
        for j in range(r):
            num0 = 0
            num1 = 0
            tmp1 = A[r][j]
            tmp2 = A[j][n - 1 - r]
            tmp3 = A[n - 1 - j][r]
            tmp4 = A[n - 1 - r][n - 1 - j]
            if tmp1 == '0':
                num0 += 1
            else:
                num1 += 1
            if tmp2 == '0':
                num0 += 1
            else:
                num1 += 1
            if tmp3 == '0':
                num0 += 1
            else:
                num1 += 1
            if tmp4 == '0':
                num0 += 1
            else:
                num1 += 1
            sum += min(num0, num1)
    print(sum)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

eeemmm123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值