牛客网编程题python输入输出_牛客网算法题目记录
車站建設(shè)問題
有10^8個村莊排在一條公路上,依次編號為0~10^8-1,相鄰村莊距離為1,其中有n個村莊居住著牛牛,居住著牛牛的村莊從小到大依次為a0~an-1,其中保證a0=0.
現(xiàn)在需要建設(shè)車站,有兩個要求必須被滿足:
1、每個有牛牛居住的村莊必須修建車站。
2、相鄰車站的距離必須為1或為某個質(zhì)數(shù)。
現(xiàn)給出n和a數(shù)組,求需要建設(shè)車站的最小數(shù)量。
實例:
輸入:3,[0,7,11]
輸出:4
Python3解決:
# 判斷是否是質(zhì)數(shù)
import math
class Solution:
def if_n(self, num):
if num == 0 or num == 1:
return False
if num == 2:
return True
for i in range(2,int(math.sqrt(num) + 1)): #注意使用平方根來判別,否則超時。
if num%i == 0:
return False
return True
def work(self, n, a):
need_a = 0
for i in range(n - 1):
# 兩個站之間的距離
temp = a[i+1] - a[i]
if self.if_n(temp) or (temp) == 1:
continue
else:
if temp%2 == 0:
need_a += 1
continue
else:
if self.if_n(temp - 2):
need_a += 1
continue
else:
need_a += 2
continue
return n + need_a
主要是用到了哥德巴赫猜想:
(1)一個大于2的偶數(shù),必然可以表示為兩個質(zhì)數(shù)之和。
(2)一個大于2的奇數(shù)p,可以表示為p = p -?2 + 2
如果p-2 為質(zhì)數(shù)則p可以表示為兩個奇數(shù)之和,否則p可以表示為三個質(zhì)數(shù)之和。
回路問題1
牛牛在一個迷宮中,迷宮有?nn個格子,有?m條通道,每條通道連接兩個格子?u,?v,編號為?u的格子可到達編號為?v?的格子,每人每條通道只能走一次。
牛牛想知道,他是否能從?11?號格子出發(fā)回到?11?號格子。
輸入
第一行給定兩個整數(shù)?nn?,?mm?。
接下來?mm?行,每行有兩個整數(shù)?uu,vv?。
1 \leq n \leq 100,000 \quad 0 \leq m \leq 100,000\quad 0 \leq L \leq m1≤n≤100,0000≤m≤100,0000≤L≤m
m對 u, v 互不相同
輸出
若能回到?11?號格子則返回Yes,否則返回No。
Python3解答:
class Solution:
# 獲取下一個點的集合
def get_next(self, key, p):
res = []? # 剔除的邊
res1 = []? # 剔除已經(jīng)選取的邊之后
for t in p:
if t.x is key:
res.append(t)
if t.x is not key:
res1.append(t)
return res, res1
# 從具有相同起點的點之中計算是否可行
def chexh(self, res, res1):
for th in res:
if th.y is 1:
return "Yes"
res, res1 = self.get_next(th.y, res1)
if res is []:
return "No"
rest = self.chexh(res, res1)
if rest is "Yes":
return "Yes"
return "No"
def solve(self, param, edge):
# write code here
ned, ned1 = self.get_next(1, edge)
return self.chexh(ned, ned1)
總結(jié)
以上是生活随笔為你收集整理的牛客网编程题python输入输出_牛客网算法题目记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么ajax请求进不来后端路由_为什么
- 下一篇: python二级多少分过_python二