hihocoder 微軟相關(guān)

https://hihocoder.com/contest/mstest2015octpractice/problem/1
思路:肯定是吧聯(lián)系的天數(shù)補(bǔ)簽了啊盒延,這樣結(jié)果才能最長

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表示當(dāng)前位置可以到達(dá)的地方宦棺,這樣DFS遍歷的時(shí)候就可以prune很多
https://blog.csdn.net/ldw201510803006/article/details/71272679
https://blog.csdn.net/lisong_jerry/article/details/76474781
目前寫出來的代碼有bug,不知道哪里錯(cuò)了肠仪,有點(diǎn)泄氣啊,明明秋招都開始了,自己還是半吊子水平喝滞,真的很難受

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
思路:統(tǒng)計(jì)x,y膏秫,x+y(把點(diǎn)沿著對角線平移到x軸)右遭,x-y(沿著例外一個(gè)對角線平移)

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
每個(gè)輪回要么所有robot復(fù)制,要么都用來生產(chǎn)

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
思路:貪心:
從最左邊考慮缤削,如果上下之間有一個(gè)有盈余窘哈,必定是相互補(bǔ)充最優(yōu)。
其次 如果上下兩個(gè)都有富余亭敢,則都往右邊輸送
再者 如果上下之間都缺乏滚婉,則都向左借
模擬即可 ,感覺自己成智障了帅刀,woc让腹,這樣的題也不會(huì)了

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就是個(gè)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數(shù)锥余,但是這樣你根本無法狀態(tài)轉(zhuǎn)移案鼓伞!G獭嘲恍!因?yàn)閐p[i]根本就沒有表示出狀態(tài)信息!着绷!
因?yàn)橹皇遣荒芟噜徎赘疲杂胐p[i][j]表示到i位置未知,以j結(jié)尾的最小delete數(shù)
感覺老是刷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])
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吁脱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子彬向,更是在濱河造成了極大的恐慌兼贡,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件娃胆,死亡現(xiàn)場離奇詭異遍希,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)里烦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門凿蒜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來禁谦,“玉大人,你說我怎么就攤上這事废封≈莶矗” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵漂洋,是天一觀的道長遥皂。 經(jīng)常有香客問我,道長刽漂,這世上最難降的妖魔是什么演训? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮贝咙,結(jié)果婚禮上样悟,老公的妹妹穿的比我還像新娘。我一直安慰自己颈畸,他們只是感情好乌奇,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著眯娱,像睡著了一般礁苗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上徙缴,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天试伙,我揣著相機(jī)與錄音,去河邊找鬼于样。 笑死疏叨,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的穿剖。 我是一名探鬼主播蚤蔓,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼糊余!你這毒婦竟也來了秀又?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤贬芥,失蹤者是張志新(化名)和其女友劉穎吐辙,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蘸劈,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡昏苏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贤惯。...
    茶點(diǎn)故事閱讀 39,932評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡洼专,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出救巷,到底是詐尸還是另有隱情壶熏,我是刑警寧澤句柠,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布浦译,位于F島的核電站,受9級特大地震影響溯职,放射性物質(zhì)發(fā)生泄漏精盅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一谜酒、第九天 我趴在偏房一處隱蔽的房頂上張望叹俏。 院中可真熱鬧,春花似錦僻族、人聲如沸粘驰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝌数。三九已至,卻和暖如春度秘,著一層夾襖步出監(jiān)牢的瞬間顶伞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工剑梳, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留唆貌,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓垢乙,卻偏偏與公主長得像锨咙,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子追逮,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,127評論 25 707
  • 偶然發(fā)現(xiàn)稠茂,用過一些,分享給大家 { "XcodeChaJian": [ { "Dname":"...
    MonkeyHan閱讀 6,504評論 0 4
  • 170609——洛陽 羅小美 堅(jiān)持分享 第28天 《親密關(guān)系》讀后感—— “過去的事雖然已被我們拋在身后,卻如同魅...
    無敵羅小美閱讀 293評論 0 0
  • 開始挑戰(zhàn)復(fù)雜睬关,顏色豐富且鮮艷的顏色诱担,不過我比較懶,買回來的鉛筆沒有全部削尖电爹,很多細(xì)節(jié)的地方蔫仙,一個(gè)不留神就一筆掩蓋了...
    小妖耳子閱讀 207評論 0 0
  • 一窗之隔,C美女瞥了一眼窗戶外的A丐箩,并沒有特別的關(guān)心摇邦。這是手機(jī)的鈴聲響了起來,兩人四目對視屎勘。就這樣A狼狽的出現(xiàn)在了...
    導(dǎo)演張升志閱讀 402評論 0 0