Kickstart Round A 2018

https://code.google.com/codejam/contest/9234486/dashboard#s=p0&a=2
官方题解:https://code.google.com/codejam/contest/9234486/dashboard#s=a&a=2

Problem A. Even Digits
从高位往低位遍历,遇到第一个奇数就停下来,然后要么这个奇数减一,后面变成888...;要么这个奇数加1,后面变成0000...

#file = 'small'
file = 'large'

ques = 'A'

fp = open('%s-%s-practice.in'%(ques, file), 'r')
#print(fp.read().split('\n'))
cs = list(map(int,fp.read().strip().split('\n')))
n = cs[0]
res = []

def slove(c):
    s=str(c)
    i=0
    while i<len(s):
        if int(s[i])%2!=0: break
        i+=1
    if i==len(s): return 0
    
    tt = str(int(s[i])-1)+str('8'*(len(s)-i-1))
    ret = int(s[i:])-int(tt)
    
    if s[i]=='9':
        tt = str('20')+str('0'*(len(s)-i-1))
        ret = min(ret,int(tt)-int(s[i:]))
    else:
        tt = str(int(s[i])+1)+str('0'*(len(s)-i-1))
        ret = min(ret,int(tt)-int(s[i:]))
    
    return ret
        

for i,c in enumerate(cs[1:]):
    print(i)
    res.append(slove(c))
    
fp = open('%s-%s-practice.out'%(ques, file), 'w')
for i,c in enumerate(res):
    fp.write('Case #%d: %d\n'%(i+1,c))

Problem B. Lucky Dip
DP,dp[i]表示有k次交换机会的情况下的均值,转移方程就要枚举i位置所有可能的值,然后跟dp[i-1]比,去max
大数据情况下,需要对数组先排序,然后二分或者用pointer

import sys
from itertools import accumulate
#file = 'test'
#file = 'small'
file = 'large'

ques = 'B'

res = []

def slove(a,n,k):
    if k==0: return sum(a)/n
    
    # pre-cal sum && BS or two pointers
    a.sort()
    acc = [0]+list(accumulate(a))
    p = 0
    
    dp = [0]*(k+1)
    dp[0] = sum(a)/n
    for i in range(1,k+1):
        while p<n and a[p]<=dp[i-1]: p+=1
        dp[i] = (acc[-1]-acc[p]+dp[i-1]*p)/n
    return dp[-1]
    
sys.stdin = open('%s-%s-practice.in'%(ques, file), 'r')
cases = int(input())
for i_ in range(cases):
    n,k=list(map(int,input().strip().split(' ')))
    a=list(map(int,input().strip().split(' ')))
    res.append(slove(a,n,k))
    
fp = open('%s-%s-practice.out'%(ques, file), 'w')
for i_,c in enumerate(res):
    fp.write('Case #%d: %.7f\n'%(i_+1,c))

Problem C. Scrambled Words
Note: We do not recommend using interpreted/slower languages for the Large dataset of this problem.所以用Python还是不行么?
只用暴力过了小数据

import sys
#file = 'test'
#file = 'small'
file = 'large'

ques = 'C'

res = []

def slove(a,n,s1,s2,N,A,B,C,D):
    s=['']*N
    s[0],s[1]=s1,s2
    x=[0]*N
    x[0],x[1]=ord(s1),ord(s2)
    for i in range(2,N):
        x[i] = (A*x[i-1]+B*x[i-2]+C)%D
        s[i]=chr(97+x[i]%26)
    s=''.join(s)
    
    ret = 0
    for ss in a:
        for i in range(len(s)-len(ss)+1):
            st = s[i:i+len(ss)]
            if st[0]==ss[0] and st[-1]==ss[-1] and (len(ss)<=2 or sorted(ss[1:-1])==sorted(st[1:-1])):
                ret+=1
                break
    return ret
    
sys.stdin = open('%s-%s-practice.in'%(ques, file), 'r')
cases = int(input())
for i_ in range(cases):
    n=int(input())
    a=input().strip().split(' ')
    b=input().strip().split(' ')
    s1,s2,N,A,B,C,D=b[0],b[1],int(b[2]),int(b[3]),int(b[4]),int(b[5]),int(b[6])
    res.append(slove(a,n,s1,s2,N,A,B,C,D))
    
fp = open('%s-%s-practice.out'%(ques, file), 'w')
for i_,c in enumerate(res):
    fp.write('Case #%d: %d\n'%(i_+1,c))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343