Skip to content

Instantly share code, notes, and snippets.

View tjkendev's full-sized avatar
🛌
oyasumi

yaketake08 tjkendev

🛌
oyasumi
View GitHub Profile
@tjkendev
tjkendev / DPL_2_B.py
Last active June 6, 2016 14:35
中国人郵便配達問題 (from AOJ, DPL_2-B : Permutation/Path - Chinese Postman Problem)
# AC (http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=1843026#1)
# [方針]
# オイラー閉路を持つ --> 全ての頂点の次数が偶数である
# => 奇数次数の頂点に対して、追加コストが最小になるように辺を追加する
V, E = map(int, raw_input().split())
INF = 10**9
e = [[INF]*V for i in xrange(V)]
deg = [0] * V
su = 0
@tjkendev
tjkendev / GRL_2_B.py
Last active June 10, 2016 11:01
最小全域有向木問題 (from AOJ, GRL_2_B: Minimum-Cost Arborescence)
# AC (http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=1850894#1)
V, E, r = map(int, raw_input().split())
es = [map(int, raw_input().split()) for i in xrange(E)]
# 以下を参考にさせていただきました
# http://ti2236.hatenablog.com/entry/2012/12/07/175841
# Chu-Liu/Edmonds' Algorithm
# 最小全域有向木を再帰的に求める
# V: 頂点数, es: 辺集合, r: 根となる頂点番号
@tjkendev
tjkendev / GRL_3_A.cpp
Created June 11, 2016 09:44
橋と関節点 (from AOJ: GRL_3-A Discussion Solution Statistics Submit Connected Components - Articulation Points, GRL_3-B Discussion Solution Statistics Submit Connected Components - Bridges)
// AC (http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=1852309)
#include<iostream>
#include<string>
#include<vector>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<algorithm>
#include<functional>
@tjkendev
tjkendev / GRL_3-C.cpp
Created June 19, 2016 16:01
強連結成分分解 (From AOJ: GRL_3-C Discussion Solution Statistics Submit Connected Components - Strongly Connected Components)
// AC (http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=1867905#1)
#include<iostream>
#include<string>
#include<vector>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<algorithm>
#include<functional>
@tjkendev
tjkendev / AOJ2598.cpp
Last active June 19, 2016 17:58
AOJ: Volume25-2598 Website Tour
// AC (http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=1867998)
// 方針
// 1. 閉路で何回も見れるやつを見つけるために強連結成分分解して、閉路の頂点を1頂点としてまとめる
// 2. DAGとして繋がっているそれらの頂点をDFSで探索しながら個数制約付きナップサック問題として計算していく
// (計算する際、まとめた頂点に1つの頂点しか含まれず、自己辺を含まない場合は高々一回しか見れないことに注意する)
#include<iostream>
#include<string>
#include<vector>
#include<queue>
#include<stack>
@tjkendev
tjkendev / .vimrc
Last active June 22, 2016 11:18
プラグインなしのvimrc
" .vimrc settings without plugin
scriptencoding utf-8
"" editor
" tabをshiftに置き換え
" tab幅4を想定した記述
set smarttab
set tabstop=4
set shiftwidth=4
set expandtab
@tjkendev
tjkendev / A.cpp
Last active June 24, 2016 17:28
ACM-ICPC 2016 国内予選 - team: nikku (A: AC, B: AC, C: AC, D: WA, E: WA)
#include<bits/stdc++.h>
using namespace std;
void solve(int n){
vector<long long> a(n);
for(int i=0;i<n;i++) cin>>a[i];
long long ans = 3000000;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
ans = min(ans,abs(a[i]-a[j]));
@tjkendev
tjkendev / CGL_1_A.py
Last active December 14, 2017 18:33
AOJ: Library of Computational Geometry (CGL)
# AC (http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=1893746#1)
# P(x1, y1), Q(x2, y2)が通る直線上にR(x, y)を写像した先をSとする
# r = (x-x1, y-y1), p = (x2-x1, y2-y1) とすると、Sの座標は(x1, y1) + a*pで表される
# この時、a = |r|cosθ/|p|で計算できる
# この値は内積を利用し、|r||p|cosθ = r・p → |r|cosθ/|p| = r・p / |p|^2 で計算すると楽
from math import sqrt
x1, y1, x2, y2 = map(int, raw_input().split())
dx = x2 - x1
dy = y2 - y1
for i in xrange(input()):
@tjkendev
tjkendev / ccs_random-process.py
Last active February 28, 2017 08:46
a Calculus of Communicating System(CCS)のプロセス関係判定のために書いたプログラム (某講義用につくったもの)
# encoding: utf-8
# a Calculus of Communicating System(CCS)に関して、
# プロセスの関係を判定するために書いたプログラム
# たぶんあってる
import random
random.seed()
randint = random.randint
# τ(プロセスの内部action)をプロセス生成に含めるか(ここでは't'で表現)
tau = True
@tjkendev
tjkendev / kSAT.py
Last active April 12, 2017 02:53
kSATを解く
# encoding: utf-8
import random, itertools
random.seed()
randint = random.randint
choice = random.choice
shuffle = random.shuffle
# n変数によるm個のclauseから成る論理式Fを生成
def make(n, m):