Add exam
This commit is contained in:
parent
1c80215edb
commit
472d5c4610
11
2024/05/29-05-24-Exam/a.py
Normal file
11
2024/05/29-05-24-Exam/a.py
Normal file
@ -0,0 +1,11 @@
|
||||
def main():
|
||||
n, stu_num = map(int, input().split())
|
||||
res = [list(map(int, input().split())) for _ in range(n)]
|
||||
|
||||
res.sort(key=lambda x:x[1], reverse=True)
|
||||
dico = {res[i][0]:i+1 for i in range(len(res))}
|
||||
print(dico[stu_num])
|
||||
|
||||
|
||||
for _ in range(int(input())):
|
||||
main()
|
25
2024/05/29-05-24-Exam/b.py
Normal file
25
2024/05/29-05-24-Exam/b.py
Normal file
@ -0,0 +1,25 @@
|
||||
import math
|
||||
def isPrime(num):
|
||||
if(num==1):
|
||||
return False
|
||||
if(num==2):
|
||||
return True
|
||||
if(num%2==0):
|
||||
return False
|
||||
|
||||
i = 3
|
||||
while(i<math.sqrt(num)+1):
|
||||
if num%i==0:
|
||||
return False
|
||||
i += 2
|
||||
return True
|
||||
|
||||
def main():
|
||||
n = int(input())
|
||||
ids = list(map(int, input().split()))
|
||||
|
||||
print(len([i for i in ids if isPrime(i)]))
|
||||
|
||||
|
||||
for _ in range(int(input())):
|
||||
main()
|
79
2024/05/29-05-24-Exam/c.py
Normal file
79
2024/05/29-05-24-Exam/c.py
Normal file
@ -0,0 +1,79 @@
|
||||
class GFG:
|
||||
def __init__(self,graph):
|
||||
|
||||
# residual graph
|
||||
self.graph = graph
|
||||
self.ppl = len(graph)
|
||||
self.jobs = len(graph[0])
|
||||
|
||||
# A DFS based recursive function
|
||||
# that returns true if a matching
|
||||
# for vertex u is possible
|
||||
def bpm(self, u, matchR, seen):
|
||||
|
||||
# Try every job one by one
|
||||
for v in range(self.jobs):
|
||||
|
||||
# If applicant u is interested
|
||||
# in job v and v is not seen
|
||||
if self.graph[u][v] and seen[v] == False:
|
||||
|
||||
# Mark v as visited
|
||||
seen[v] = True
|
||||
|
||||
'''If job 'v' is not assigned to
|
||||
an applicant OR previously assigned
|
||||
applicant for job v (which is matchR[v])
|
||||
has an alternate job available.
|
||||
Since v is marked as visited in the
|
||||
above line, matchR[v] in the following
|
||||
recursive call will not get job 'v' again'''
|
||||
if matchR[v] == -1 or self.bpm(matchR[v],
|
||||
matchR, seen):
|
||||
matchR[v] = u
|
||||
return True
|
||||
return False
|
||||
|
||||
# Returns maximum number of matching
|
||||
def maxBPM(self):
|
||||
'''An array to keep track of the
|
||||
applicants assigned to jobs.
|
||||
The value of matchR[i] is the
|
||||
applicant number assigned to job i,
|
||||
the value -1 indicates nobody is assigned.'''
|
||||
matchR = [-1] * self.jobs
|
||||
|
||||
# Count of jobs assigned to applicants
|
||||
result = 0
|
||||
for i in range(self.ppl):
|
||||
|
||||
# Mark all jobs as not seen for next applicant.
|
||||
seen = [False] * self.jobs
|
||||
|
||||
# Find if the applicant 'u' can get a job
|
||||
if self.bpm(i, matchR, seen):
|
||||
result += 1
|
||||
return result
|
||||
|
||||
|
||||
def main():
|
||||
n, m = map(int, input().split())
|
||||
friendships = [list(map(int, input().split())) for _ in range(m)]
|
||||
|
||||
graph = []
|
||||
for i in range(n):
|
||||
line = [0]*(2*n)
|
||||
graph.append(line)
|
||||
|
||||
for a, b in friendships:
|
||||
graph[a-1][n+b-1] = 1
|
||||
|
||||
for i in range(n):
|
||||
line = [0]*(2*n)
|
||||
graph.append(line)
|
||||
|
||||
print(GFG(graph).maxBPM())
|
||||
|
||||
|
||||
for _ in range(int(input())):
|
||||
main()
|
25
2024/05/29-05-24-Exam/e.py
Normal file
25
2024/05/29-05-24-Exam/e.py
Normal file
@ -0,0 +1,25 @@
|
||||
"""PARTIEL BUG: les rendus 3, 2 et 2, 3 sont considérés comme distincts"""
|
||||
m = 1000000007
|
||||
|
||||
def main():
|
||||
n, target = map(int, input().split())
|
||||
dollars = [int(i) for i in input().split() if int(i) != 0]
|
||||
|
||||
manieres = [0 for _ in range(target+1)]
|
||||
manieres[0] = 1
|
||||
|
||||
for k in range(1, target+1):
|
||||
man = 0
|
||||
for coin in dollars:
|
||||
if coin <= k:
|
||||
#print("coin:", coin)
|
||||
man += manieres[k-coin]
|
||||
|
||||
#print(k, man)
|
||||
manieres[k] = man%m
|
||||
|
||||
print(manieres)
|
||||
return manieres[target]
|
||||
|
||||
for _ in range(int(input())):
|
||||
print(main())
|
32
2024/05/29-05-24-Exam/g.py
Normal file
32
2024/05/29-05-24-Exam/g.py
Normal file
@ -0,0 +1,32 @@
|
||||
m = 15546404183
|
||||
|
||||
def main():
|
||||
n = int(input())
|
||||
s = input()
|
||||
|
||||
left_rolling_hash = 0
|
||||
right_rolling_hash = 0
|
||||
pw = 1
|
||||
|
||||
def roll_left(h, l):
|
||||
return (h*37+l)%m
|
||||
|
||||
def roll_right(h, l, pw):
|
||||
rs = (h+l*pw)%m
|
||||
pw = (pw*37)%m
|
||||
return rs, pw
|
||||
|
||||
total = 0
|
||||
for i in range(n-1):
|
||||
left_rolling_hash = roll_left(left_rolling_hash, ord(s[i]))
|
||||
right_rolling_hash, pw = roll_right(right_rolling_hash, ord(s[-1-i]), pw)
|
||||
if left_rolling_hash == right_rolling_hash:
|
||||
total += 1
|
||||
|
||||
# print(left_rolling_hash, right_rolling_hash)
|
||||
|
||||
return total
|
||||
|
||||
|
||||
for _ in range(int(input())):
|
||||
print(main())
|
76
2024/05/29-05-24-Exam/h.py
Normal file
76
2024/05/29-05-24-Exam/h.py
Normal file
@ -0,0 +1,76 @@
|
||||
"""PARTIEL BUG"""
|
||||
from collections import defaultdict
|
||||
import heapq
|
||||
|
||||
class Graph:
|
||||
def __init__(self, n):
|
||||
self.graph = defaultdict(list)
|
||||
self.n = n
|
||||
self.seats = None
|
||||
|
||||
def set_seats(self, seats, n):
|
||||
self.seats = [(i in seats) for i in range(n)]
|
||||
|
||||
def add_edge(self, u, v, weight=1):
|
||||
self.graph[u].append((weight, v))
|
||||
|
||||
def bfs(self, s):
|
||||
heap = []
|
||||
|
||||
visited = [False] * (self.n + 1)
|
||||
|
||||
heapq.heappush(heap, (0, s))
|
||||
visited[s] = True
|
||||
|
||||
while heap:
|
||||
prio, s = heapq.heappop(heap)
|
||||
if self.seats[s]:
|
||||
return prio
|
||||
|
||||
for w, v in self.graph[s]:
|
||||
if not visited[v]:
|
||||
heapq.heappush(heap, (w+prio, v))
|
||||
visited[v] = True
|
||||
|
||||
return float("inf")
|
||||
|
||||
def main():
|
||||
# nb of seats, V, E
|
||||
k, n, m = map(int, input().split())
|
||||
|
||||
# Prepare Graph
|
||||
students = [int(i)-1 for i in input().split()]
|
||||
seats = [int(i)-1 for i in input().split()]
|
||||
|
||||
g = Graph(n)
|
||||
g.set_seats(seats, n)
|
||||
|
||||
for i in range(m):
|
||||
a, b, c = input().split()
|
||||
g.add_edge(int(a)-1, int(b)-1, weight=int(c))
|
||||
|
||||
|
||||
# BFS from each of the students to determine the fastest
|
||||
dists = []
|
||||
for st in students:
|
||||
dists.append(g.bfs(st))
|
||||
|
||||
mini = float("inf")
|
||||
best = -1
|
||||
for i in range(k):
|
||||
if dists[i] < mini:
|
||||
mini = dists[i]
|
||||
best = i
|
||||
elif dists[i] == mini:
|
||||
return "impossible"
|
||||
|
||||
if best == -1:
|
||||
return "impossible"
|
||||
|
||||
return students[best]+1
|
||||
|
||||
|
||||
|
||||
|
||||
for _ in range(int(input())):
|
||||
print(main())
|
12
2024/05/29-05-24-Exam/h_fuzz.py
Normal file
12
2024/05/29-05-24-Exam/h_fuzz.py
Normal file
@ -0,0 +1,12 @@
|
||||
import random
|
||||
|
||||
print(1)
|
||||
k, n, m = random.randint(2, 20), random.randint(2, 100), random.randint(0, 1000)
|
||||
|
||||
print(k, n, m)
|
||||
|
||||
print(" ".join([str(i) for i in random.choices(range(0, n), k=k)]))
|
||||
print(" ".join([str(i) for i in random.choices(range(0, n), k=k)]))
|
||||
|
||||
for i in range(m):
|
||||
print(random.choice(range(0, n)), random.choice(range(0, n)), random.randint(0, 1000))
|
Loading…
Reference in New Issue
Block a user