hihocoder74-

https://hihocoder.com/contest/offers74/problem/2
题目2 : 取球游戏
思路:union-find,同一个x对应的点连在一起,同一个y对应的点连在一起,并且一个联通区域最后一定可以只剩下一个点

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

def find(p):
    while fa[p]!=p: p=fa[p]
    return p
def union(p,q):
    fa[find(p)]=find(q)
    
a.sort()
for i in range(1,n):
    if a[i][0]==a[i-1][0]: union(a[i][2],a[i-1][2])
a.sort(key=lambda t:t[1])
for i in range(1,n):
    if a[i][1]==a[i-1][1]: union(a[i][2],a[i-1][2])

res=n
for i,v in enumerate(fa):
    if i==v: res-=1
print res

https://hihocoder.com/contest/offers70/problem/3
题目3 : 拼三角形
思路:排序,然后从小到大遍历,能组成就标记为用过,可AC

n=int(raw_input())
a=map(int,raw_input().strip().split(' '))
res=0
a.sort()
vis=[False]*n
for i in range(n):
    if vis[i]: continue
    ok=False
    for j in range(i+1,n):
        if vis[j]: continue
        for k in range(j+1, n):
            if vis[k]: continue
            if a[i]+a[j]>a[k]:
                vis[i]=vis[j]=vis[k]=True
                res+=1
                ok=True
            if ok: break
        if ok: break
print res    

更严谨的方法是状压DP
先讲一下状压dp好了。它通常使用在n十分小的情况下(比如n<=20),虽然是指数级别的复杂度,但速度比搜索快,其思想非常之优秀。所以看到n非常小时,就要想到99%是状压dp。
状压dp的适用情况就是当状态可以由0或者1来表示时,我们所需状态数组无法满足。将状态表示成二进制数转化成十进制通过位运算的处理来进行状态的转移。所以位运算在状压dp中有着重要的作用。

n=int(raw_input())
a=map(int,raw_input().strip().split(' '))
a.sort()

b=[]
for i in range(n):
    for j in range(i+1,n):
        for k in range(j+1,n):
            if a[i]+a[j]>a[k]:
                b.append((1<<i)|(1<<j)|(1<<k))
       
dp=[0]*(1<<(n+1))
for i,t in enumerate(b):
    for j in range(len(dp)-1,-1,-1):
        if t&j==0:
            dp[j]=max(dp[j],dp[j|t]+1)

print max(dp)

这里要先构造所有的3元数组合,用来状态转移

https://hihocoder.com/contest/offers69/problem/2
题目2 : 特工配对
用优先队列是OK的,或者数学上理解一下的话,可以发现如果最大值小于sum的一半的话,一定是可以全部match的

import heapq
n=int(raw_input())
a=map(int,raw_input().strip().split(' '))
pq=[-t for t in a]
heapq.heapify(pq)
res=0

while len(pq)>1:
    if len(pq)==2:
        res+=-min(pq)
        break
    
    m1,m2=-heapq.heappop(pq),-heapq.heappop(pq)
    if m1==m2:
        res+=m1
        continue
    
    m3=-pq[0]
    t=m2-m3+1
    res+=t
    if m1-t>0: heapq.heappush(pq, -(m1-t))
    if m2-t>0: heapq.heappush(pq, -(m2-t))

print res
n=int(raw_input())
a=map(int,raw_input().strip().split(' '))
ma=max(a)
su=sum(a)
if ma*2<=su:
    print su//2
else:
    print su-ma

https://hihocoder.com/contest/offers69/problem/3
题目3 : 阶乘问题
思路:直接求有多少个k的因子是错误的,比如20!有多少个10,其中2和5可以组合起来弄成一个10,所以应该先因式分解,然后求每个因子有多少个

n,k=map(int,raw_input().strip().split(' '))

d={}
for i in range(2,k+1):
    if i*i>n: break
    while k%i==0: 
        d[i]=d.get(i,0)+1
        k//=i
if k!=1: d[k]=d.get(k,0)+1

def cal(t,s):
    cnt=0
    while t:
        cnt+=t//s
        t//=s
    return cnt

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

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,663评论 0 33
  • 小麦田边刺角花, 臀大腰细紫头发。 纤细长腿婷婷立, 更有蝴蝶来安家。
    星空之美阅读 433评论 1 7
  • 华灯初上,夜未央 尘雾缓起 烟雨迷离 晚风在窗沿轻拂 喃声细语 絮说,昏黄。 黛瓦白檐 细雨翻飞 那一墙被雨水洗白...
    遥涔阅读 294评论 5 6
  • W:对于焦虑,我又有了新的思考。 I:说来听听。 W:其实,这次的结论很简单,以前我也听过,但重新去推敲,体验是不...
    三叶日行记阅读 239评论 1 1