第七届东南大学短码竞赛初赛 总结

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

哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)D - 数圈圈

哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)A - 所有情况的和