hihocoder 微软相关

https://hihocoder.com/contest/mstest2015octpractice/problem/1
思路:肯定是吧联系的天数补签了啊,这样结果才能最长

cases=int(raw_input())
for _ in range(cases):
    n,m=map(int,raw_input().strip().split(' '))
    a=map(int,raw_input().strip().split(' '))
    if m>=n: 
        print 100
        continue
    ma=a[m]-1
    for i in range(m,n-1):
        ma=max(ma,a[i+1]-1-a[i-m])
    ma=max(ma,100-a[n-m])
    print ma

https://hihocoder.com/contest/mstest2015octpractice/problem/3
思路:直接DFS肯定不行,有博客是说用bitset表示当前位置可以到达的地方,这样DFS遍历的时候就可以prune很多
https://blog.csdn.net/ldw201510803006/article/details/71272679
https://blog.csdn.net/lisong_jerry/article/details/76474781
目前写出来的代码有bug,不知道哪里错了,有点泄气啊,明明秋招都开始了,自己还是半吊子水平,真的很难受

from collections import defaultdict
T=int(raw_input())

def getChild(p,c,bitset,adj):
    bitset[c]|=1<<c
    for t in adj[c]:
        if t==p: continue
        getChild(c, t, bitset,adj)
        bitset[c]|=bitset[t]
        
def dfs(p,c,bitset,m,idx,vis,adj):
#    print(idx)
    if c==m[idx]: idx+=1
    if idx==len(m): return True
    for t in adj[c]:
        if bitset[t]&(1<<m[idx]) and not vis[t]:
            # if current is in latter m: break 
            vis[t]=True
            if dfs(c,t,bitset,m,idx,vis,adj): return True
#            vis[t]=False
    return False
        
for _ in range(T):
    n=int(raw_input())
    adj=defaultdict(set)
    for t in range(n-1):
        i,j=map(int,raw_input().strip().split(' '))
        adj[i].add(j)
        adj[j].add(i)
    mt=int(raw_input())
    m=map(int,raw_input().strip().split(' '))
    
    bitset=[0]*(n+1)
    getChild(-1,1,bitset,adj)
    vis=[False]*(1+n)
    vis[1]=True
    print 'YES' if dfs(-1,1,bitset,m,0,vis,adj) else 'No'

https://hihocoder.com/contest/mstest2017april/problems
题目1 : Queen Attack
思路:统计x,y,x+y(把点沿着对角线平移到x轴),x-y(沿着例外一个对角线平移)

from collections import Counter

n=int(raw_input())
a=[(0,0)]*n
for i in range(n):
    t=map(int,raw_input().strip().split(' '))
    a[i]=(t[0],t[1])

res=0
dx=Counter([t[0] for t in a])
for k in dx.values():
    res+=k*(k-1)/2
dy=Counter([t[1] for t in a])
for k in dy.values():
    res+=k*(k-1)/2
dxy=Counter([t[1]-t[0] for t in a])
for k in dxy.values():
    res+=k*(k-1)/2
dyx=Counter([t[0]+t[1] for t in a])
for k in dyx.values():
    res+=k*(k-1)/2

print res

题目2 : Diligent Robots
http://www.cnblogs.com/ECJTUACM-873284962/p/7136061.html
https://www.cnblogs.com/zufezzt/p/6683153.html
每个轮回要么所有robot复制,要么都用来生产

n,q=map(int,raw_input().strip().split(' '))
c,r=1,0
res=n

while 1:
    t=n//c+r
    if n%c: t+=1
    res=min(res,t)
    c=2*c
    r+=q
    if c>n: break
    
print res

题目3 : A Box of Coins
思路:贪心:
从最左边考虑,如果上下之间有一个有盈余,必定是相互补充最优。
其次 如果上下两个都有富余,则都往右边输送
再者 如果上下之间都缺乏,则都向左借
模拟即可 ,感觉自己成智障了,woc,这样的题也不会了

n=int(raw_input())
a,b=[0]*n,[0]*n
for i in range(n):
    a[i],b[i]=map(int,raw_input().strip().split(' '))
su=sum(a)+sum(b)
ta=su//2//n
res=0
for i in range(n-1):
    ai,bi=a[i],b[i]
    if (ai>=ta and bi>=ta):
        res+=ai-ta+bi-ta
        a[i+1]+=ai-ta
        b[i+1]+=bi-ta
    elif ai<=ta and bi<=ta: 
        res+=abs(ai-ta+bi-ta)
        a[i+1]+=ai-ta
        b[i+1]+=bi-ta
    elif ai<ta:
        if ai+bi>=2*ta:
            res+=bi-ta
            b[i+1]+=bi-ta-(ta-ai)
        else:
            res+=ta-ai
            a[i+1]-=ta-ai-(bi-ta)
    else:
        if ai+bi>=2*ta:
            res+=ai-ta
            a[i+1]+=ai-ta-(ta-bi)
        else:
            res+=ta-bi
            b[i+1]-=ta-bi-(ai-ta)
print res+abs(a[-1]-ta)

题目4 : EL SUENO
思路:树状DP,就是边DFS,边DP,每次DP就是个01背包问题
https://blog.csdn.net/viphong/article/details/70163053

from collections import defaultdict
inf=float('inf')
n=int(raw_input())
xs=defaultdict(list)
boss=-1
inf0,inf1,c=[0]*(n+1),[0]*(n+1),[0]*(n+1)
for i in range(1,n+1):
    f,inf0[i],inf1[i],c[i]=map(int,raw_input().strip().split(' '))
    if f==0: boss=i
    else: xs[f].append(i)

def dfs(b):
    dp=[inf]*(1+inf0[b])
    dp[0]=0
    for x in xs[b]:
        t=dfs(x)
        for j in range(len(dp)-1,0,-1):
            dp[j]=min(dp[j], dp[max(j-inf1[x],0)]+t+c[x])
    return dp[-1]
        

res=dfs(boss)+c[boss]
print res if res!=inf else -1

https://hihocoder.com/contest/mstest2016oct/problem/2
题目2 : Composition
思路:DP,最开始想直接用dp[i]表示到i位置需要的最小delete数,但是这样你根本无法状态转移啊!!!因为dp[i]根本就没有表示出状态信息!!
因为只是不能相邻,所以用dp[i][j]表示到i位置未知,以j结尾的最小delete数
感觉老是刷LC,都快overfitting了

from collections import defaultdict
n=int(raw_input())
s=raw_input()
m=int(raw_input())
d=defaultdict(set)
for _ in range(m):
    t=raw_input()
    t0=ord(t[0])-ord('a')
    t1=ord(t[1])-ord('a')
    d[t0].add(t1)
    d[t1].add(t0)

# 
dp=[[float('inf') for _ in range(26)] for _ in range(n)]
dp[0]=[1]*26
dp[0][ord(s[0])-ord('a')]=0

for i in range(1,n):
    for j in range(26):
        dp[i][j]=dp[i-1][j]+1
    j=ord(s[i])-ord('a')
    for k in range(26):
        if k in d[j]: continue
        dp[i][j]=min(dp[i][j], dp[i-1][k])

print min(dp[-1])
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,421评论 25 707
  • 偶然发现,用过一些,分享给大家 { "XcodeChaJian": [ { "Dname":"...
    MonkeyHan阅读 6,451评论 0 4
  • 170609——洛阳 罗小美 坚持分享 第28天 《亲密关系》读后感—— “过去的事虽然已被我们抛在身后,却如同魅...
    无敌罗小美阅读 290评论 0 0
  • 开始挑战复杂,颜色丰富且鲜艳的颜色,不过我比较懒,买回来的铅笔没有全部削尖,很多细节的地方,一个不留神就一笔掩盖了...
    小妖耳子阅读 203评论 0 0
  • 一窗之隔,C美女瞥了一眼窗户外的A,并没有特别的关心。这是手机的铃声响了起来,两人四目对视。就这样A狼狈的出现在了...
    导演张升志阅读 395评论 0 0