第七届东南大学短码竞赛初赛 总结
Posted mollnn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第七届东南大学短码竞赛初赛 总结相关的知识,希望对你有一定的参考价值。
几句废话
第一次尝试完全用 Python 答题
(然后发现了自己的垃圾
A
显然答案以 9 为循环节
exec(int(input())*"print((input()-1)%9+1);")
B
暴力即可
exec(int(input())*"s=input();print(‘NO‘ if sum([((i&1&(ord(s[i])%2))|(~i&1&~(ord(s[i])%2)))for i in range(len(s))]) else ‘YES‘);")
C
参见 CF1118C
def f():
n=int(input());D=list(map(int,input().split()));a=[[0]*20 for i in range(20)];C=[0]*1007;F=[];R=range((n+1)//2)
for i in D:C[i]+=1
for i in R:
for j in R:
if(i!=n-i-1)&(j!=n-j-1):F.append((4,(i,j)))
elif(i!=n-i-1)^(j!=n-j-1):F.append((2,(i,j)))
else:F.append((1,(i,j)))
for E in [4,2,1]:
L=1
for G in F:
if G[0]!=E:continue
while(L<1005)&(C[L]<E):L+=1
if L==1005:print("NO");return
i=G[1][0];j=G[1][1];a[i][j]=a[n-i-1][j]=a[i][n-j-1]=a[n-i-1][n-j-1]=L;C[L]-=E
print("YES")
for i in range(n):print(*a[i][:n])
exec(int(input())*"f();")
D
利用 bisect 模块即可
注意输出要一起输出,如果边操作变输出就会 T 掉(原因未知)
from bisect import bisect,insort
I=input;T=int(I())
for _ in range(T):
a=[-1];b=[];q=int(I())
for i in range(q):
x,y=map(int,I().split())
if x<2:insort(a,y)
else:
z=bisect(a,y)-1;b+=[a[z]]
if a[z]>0:del a[z]
for i in b:print(i)
E
显然我们可以给出一个 (O(m)) 的拉格朗日插值,做 (k) 次,总复杂度 (O(mk))
当然也可以写多项式多点求值
翻译成 python 后的插值至今未调出来
后记
第一次参加短码竞赛,策略不当
以及不知道 from xx import *
这种操作导致的懵逼
以上是关于第七届东南大学短码竞赛初赛 总结的主要内容,如果未能解决你的问题,请参考以下文章
(最短路)第七届福建省大学生程序设计竞赛 Problem J- X
ZZUOJ-1195-OS Job Scheduling(郑州大学第七届ACM大学生程序设计竞赛E题)
河南省第七届大学生程序设计竞赛 问题 A: 物资调度简单dfs