Dangling work on O and R solution
This commit is contained in:
parent
578f914819
commit
dd8f44e727
5 changed files with 122 additions and 0 deletions
38
ayb.py
Executable file
38
ayb.py
Executable file
|
@ -0,0 +1,38 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
def ayb(s):
|
||||
A = [None] * 128
|
||||
Q = []
|
||||
c = 1
|
||||
for i in range(len(s)):
|
||||
code = ord(s[i])
|
||||
if A[code] is None:
|
||||
A[code] = c
|
||||
if c == 1:
|
||||
c = 0
|
||||
elif c == 0:
|
||||
c = 2
|
||||
else:
|
||||
c += 1
|
||||
Q.append((A[code],i))
|
||||
|
||||
if c == 1:
|
||||
c = 0
|
||||
if c == 0:
|
||||
c = 2
|
||||
|
||||
num = 0
|
||||
for tup in Q:
|
||||
value, position = tup
|
||||
num += value * (c ** (len(s) - position - 1))
|
||||
|
||||
return str(num)
|
||||
|
||||
|
||||
def main():
|
||||
t = int(input())
|
||||
for i in range(1, t + 1):
|
||||
print("Case #" + str(i) + ": " + ayb(input()))
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
4
ayb.txt
Normal file
4
ayb.txt
Normal file
|
@ -0,0 +1,4 @@
|
|||
3
|
||||
11001001
|
||||
cats
|
||||
zig
|
5
tree.c
Normal file
5
tree.c
Normal file
|
@ -0,0 +1,5 @@
|
|||
// vim: set ts=4 sw=4 et tw=80 :
|
||||
#include <stdio.h>
|
||||
|
||||
int main() {
|
||||
|
60
tree.py
Executable file
60
tree.py
Executable file
|
@ -0,0 +1,60 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
def min_remove(D):
|
||||
m = len(D)
|
||||
for k in range(1, len(D)):
|
||||
BT = []
|
||||
V = [None] * len(D)
|
||||
r = len(D) - 1 - max_edges(D, BT, V, k)
|
||||
if m is None or r < m:
|
||||
m = r
|
||||
return m
|
||||
|
||||
|
||||
def max_edges(D, BT, V, k):
|
||||
if V[k] is None:
|
||||
BT.append(k)
|
||||
if len(D[k]) <= 1: # Either one edge (parent) or two (parent and one child)
|
||||
BT.remove(k)
|
||||
V[k] = 1
|
||||
else:
|
||||
m1 = None
|
||||
m2 = None
|
||||
for e in D[k]:
|
||||
if e in BT:
|
||||
continue
|
||||
d = max_edges(D, BT, V, e)
|
||||
if m1 is None or d > m1:
|
||||
m2 = m1
|
||||
m1 = d
|
||||
elif m2 is None or d > m2:
|
||||
m2 = d
|
||||
BT.remove(k)
|
||||
if m2 is None:
|
||||
V[k] = 1
|
||||
else:
|
||||
V[k] = 1 + m1 + m2
|
||||
return V[k]
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
t = int(input())
|
||||
for i in range(1, t+1):
|
||||
n = int(input())
|
||||
D = [None] * (n+1)
|
||||
for j in range(n-1):
|
||||
string = input().split(' ')
|
||||
a, b = int(string[0]), int(string[1])
|
||||
|
||||
if D[a] is None:
|
||||
D[a] = [b]
|
||||
else:
|
||||
D[a].append(b)
|
||||
|
||||
if D[b] is None:
|
||||
D[b] = [a]
|
||||
else:
|
||||
D[b].append(a)
|
||||
|
||||
print("Case #" + str(i) + ": " + str(min_remove(D)))
|
||||
|
15
tree.txt
Normal file
15
tree.txt
Normal file
|
@ -0,0 +1,15 @@
|
|||
3
|
||||
3
|
||||
2 1
|
||||
1 3
|
||||
7
|
||||
4 5
|
||||
4 2
|
||||
1 2
|
||||
3 1
|
||||
6 4
|
||||
3 7
|
||||
4
|
||||
1 2
|
||||
2 3
|
||||
3 4
|
Reference in a new issue