わかさぎのブログ

プログラミング、Atcoderの勉強とか

python サビツキゴレイフィルターの実装

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy import linalg

df=pd.read_csv("R895_Connector.csv")
y=df.iloc[:,1].values.tolist()

win=251
poly=7

def sav_gol(y,win,poly):
    n=win//2
    m=poly
    X=[]
    for i in range(-n,n+1):
        gyou=[]
        for j in range(m+1):
            gyou.append(i**j)
        X.append(gyou)
    print(X)
    X=np.array(X)
    answer=[]
    for s in range(n+1,len(y)-n):
        yy=y[s-n:s+n+1]
        A=np.dot(X.T, X)
        print(A)
        A_inv=np.linalg.pinv(A)
        XX=np.dot(A_inv, X.T)
        ans=np.dot(yy,XX[0])
        answer.append(ans)
    
    return answer


a=sav_gol(y,win,poly)
ind=[i for i,j in enumerate(a)]
plt.plot(ind,a)
plt.show()
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy import linalg

df=pd.read_csv("R895_Connector.csv")
y=df.iloc[:,1].values.tolist()

win=251
poly=7

def sav_gol(y,win,poly):
    n=win//2
    m=poly
    x=[i for i in range(-n,n+1)]
    ans=[]
    for s in range(n+1,len(y)-n):
        yy=y[s-n:s+n+1]
        coef=np.polyfit(x,yy,m)[-1]
        ans.append(coef)
    return ans

a=sav_gol(y,win,poly)
ind=[i for i,j in enumerate(a)]
plt.plot(ind,a)
plt.show()

#xの要素の数をyにそろえる
#x=x[n+1:-n]

AtCoder Beginner Contest 204 C - Tour

BFS

N,M=map(int,input().split())
ab=[]
for i in range(M):
    tmp=list(map(int,input().split()))
    ab.append(tmp)


from collections import defaultdict,deque

graph=defaultdict(list)

for i in range(M):
    l=ab[i][0]
    r=ab[i][1]
    graph[l].append(r)
    #graph[r].append(l)



que=deque()


def BFS(x):
    S=set()
    que.append(x)
    S.add(x)
    
    while que:
        v=que.popleft()
        for i in graph[v]:
            if not i in S:
                que.append(i)
                S.add(i)
    return S

ans=0
for i in range(1,N+1):
    tmp=len(BFS(i))
    ans+=tmp

print(ans)

DFS

N,M=map(int,input().split())
ab=[]
for i in range(M):
    tmp=list(map(int,input().split()))
    ab.append(tmp)


graph=[[] for i in range(N)]

for i in range(M):
    a=ab[i][0]
    b=ab[i][1]
    graph[a-1].append(b-1)

def DFS(x):
    if temp[x]:
        return
    temp[x]=True
    for v in graph[x]:
        DFS(v)

ans=0

for i in range(N):
    temp=[False]*N
    DFS(i)
    ans+=sum(temp)


print(ans)

AtCoder Beginner Contest 068 Cat Snuke and a Voyage

N,M=map(int,input().split())
ab=[]
for i in range(M):
    tmp=list(map(int,input().split()))
    ab.append(tmp)


from collections import defaultdict

graph=defaultdict(list)

for i in range(M):
    l=ab[i][0]
    r=ab[i][1]
    graph[l].append(r)
    graph[r].append(l)

S=set()

for i in graph[1]:
    S.add(i)
    for j in graph[i]:
        S.add(j)

print("POSSIBLE") if N in S else print("IMPOSSIBLE")

AtCoder Beginner Contest 116 C - Grand Garden

N=int(input())
H=list(map(int,input().split()))

inf=1000
ans=0
def func(L,R):
    global H,ans
    if L>=R: return
    
    mi=inf
    for i in range(L,R): mi=min(mi,H[i])
    ans+=mi
    for i in range(L,R): H[i]-=mi
    
    zero=[]
    zero.append(-1)

    for i in range(L,R):
        if H[i]==0:
            zero.append(i)
    zero.append(R)

    n=len(zero)

    for i in range(n-1):
        func(zero[i]+1,zero[i+1])

func(0,N)

print(ans)