2017-03-01から1ヶ月間の記事一覧

ABC029_C

'a','b','c'から構成できるn文字の文字列を全て挙げる問題. n=2ならaa,ab,ac,ba,bb,bc,ca,cb,cc文字が増えていくので文字列と文字列の長さを引数にした関数を作ればよい. #include <bits/stdc++.h> using namespace std; char alphabet[4] = {'a','b','c'}; int n; void sol</bits/stdc++.h>…

C++ setの要素の検索

C++

setにある要素が含まれているか否かを判定するにはS.find(value)を用いる. 要素が含まれていない場合はS.end()を返す. よって if(S.find(x)!=S.end())cout<<"要素あり"; else cout<<"要素なし"; のように判定すればよい. #include <bits/stdc++.h> using namespace std; int</bits/stdc++.h>…

レポート表紙

TeX

過去のGISTが見れなくなったので再掲 \documentclass[a4j]{jarticle} \usepackage{color} \usepackage{listings,jlisting} \usepackage{ascmac} \usepackage{url} % \lstset{ language={python}, backgroundcolor={\color[gray]{.85}}, basicstyle={\small},…

Project Euler 83 Path sum: four ways

問題を見た時からdijkstra法だと分かっていたが集中してやりたかったので敢えて取っておいた問題 #include <bits/stdc++.h> using namespace std; static const int WHITE = 1; static const int GRAY = 2; static const int BLACK = 3; static const int INF = 1<<21; stat</bits/stdc++.h>…

ABC020_C

2分探索と単一始点最短経路問題の問題 dijkstra法は二次元配列と頂点の番号を対応させて考えればよい. #include <bits/stdc++.h> using namespace std; /* 考え方 1.2文探索でtmp<=tを満たす最大のtmpを見つける 2.dijkstra法で'#'の移動コストがtmpであるとして'S'->'G'へ</bits/stdc++.h>…

単一始点最短経路 dijkstra法

C++

#include <bits/stdc++.h> using namespace std; static const int MAX_N = 100; static const int WHITE = 0;//未踏 static const int GRAY = 1;//確定している点と隣接 static const int BLACK = 2;//確定 static const int INF = 1<<21; int M[MAX_N][MAX_N] = {0};//隣</bits/stdc++.h>…

スクレイピング

imgタグのみを抽出する. # encoding : utf-8 # for python3 import urllib.request import os.path import pyquery as pq import requests from bs4 import BeautifulSoup import urllib.request from urllib.request import Request, urlopen #def download…

Python3で画像スクレイピング

指定したサイトで画像を一括ダウンロードできる. 備忘録とかそんな感じ — python3.xでweb上の画像を一括ダウンロード # encoding : utf-8 # for python3 import urllib.request import os.path import pyquery as pq import requests def download(url, fold…

全探索 整数を作れるかの問題

C++

配列の要素から整数を作れるかを判定する関数 #include <bits/stdc++.h> using namespace std; static const int MAX_N = 1000; int n;//配列Aの大きさ int m;//判定する整数 int A[MAX_N]; bool solve(int i,int m){ /* 整数mが作れるか否かの再起関数 */ if(m==0)return t</bits/stdc++.h>…

Ubuntu16.04 でTeXを編集する

TeX

qiita.com1.リポジトリのインストール sudo apt-add-repository ppa:texlive-backports/ppa2.TeX Liveインストール sudo apt-get install texlive-lang-cjk3.エディタでtest.texを作る ¥documentclass{jarticle} ¥begin{document} Hello World ¥end{document…

便利ワザ4

C++

INT_MIN,INT_MAXがint型の最大,最小値の定数らしい. #include <bits/stdc++.h> using namespace std; int main() { int a = INT_MAX; int b = INT_MIN; cout<</bits/stdc++.h>

MySQL2

#テーブルの作成 create database sample; #作成されたテーブルを確認 show databases; #操作するテーブルを選択 use sample; #データの型を入力 CREATE TABLE T01Prefecture ( PREF_CD INT(3), PREF_NAME VARCHAR(10), PRIMARY KEY (PREF_CD) ); #中身を見…

MySQL1

MySQLの起動 $mysql -u root -pデータベースの表示 SHOW DATABASES; データベースの作成 CREATE DATABASE SampleDB001; データベースの選択 USE SampleDB001; データベースの中身表示 SHOW TABLES; 操作の終了 exit;

クラスタリング

k-means法を用いてクラスタリングを行った. 元画像 2色 4色 8色 16色 32色 64色 128色 256色 1024色 1024色までいくとかなり立体感のあるものとなった. 1ピクセルあたり3バイト = (2^8)^3色を表現できるから1024色だからといって元画像に近くは難しい.

ABC033_C

1+2*3+0+5*6+7 のように+か*で繋がった式が与えられる. 式の結果が0となるように,式のある値を0に入れ替える. この時最小の入れ替え回数を求めるという問題.足し算はそれぞれの値で0と入れ替えなければならない. 掛け算はひとつ0があればよい. 掛け算のほう…

ABC036_C

連想配列mapを使う問題 map M; M[key] = value; とし, keyを与えられた数値にvalueをその数値が何番目に大きいのかを記録TLE解法 #include <bits/stdc++.h> using namespace std; static const int MAX_N = 100000; int main() { int n,x; set<int> s; int a[MAX_N],b[MAX_N]; ci</int></bits/stdc++.h>…

ABC038_C

二重ループの効率化の問題TLEだったやつ #include <bits/stdc++.h> using namespace std; static const int MAX_N = 100000; int main() { int n,a[MAX_N+1],l,r,ans = 0; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=1;i</bits/stdc++.h>

ABC039_C

文字列一致の問題 鍵盤の右20個の文字列が与えられるので今いる場所を当てるというやつ. #include <bits/stdc++.h> using namespace std; string func(string str,int n){ /* 文字列strを整数n倍し文字列を返す関数 */ string tmp = str; for(int i=1;i<n;i++){ str += tmp; } return str; } int main() { string s; cin>>s; string keyboard </n;i++){></bits/stdc++.h>…

ABC040_C

典型的DP問題 #include <bits/stdc++.h> using namespace std; static const int MAX_N = 100000; int main() { int dp[MAX_N+1] = {0};//i本目の柱までにかかる最小コスト int n,x,height[MAX_N+1]; cin>>n; for(int i=1;i<=n;i++){ cin>>height[i]; } dp[1]=0; dp[2]=abs(</bits/stdc++.h>…

Iterator並列処理

alphabet_list = ['a','c','e','b'] ascii_code_list = [0x61,0x63,0x65,0x62] max_ascii_code = 0x00 for alphabet,ascii_code in zip(alphabet_list,ascii_code_list): if ascii_code>max_ascii_code: max_alphabet = alphabet max_ascii_code= ascii_code…

enumerate

alphabet_list = ['a','b','c','d','e'] for i in range(len(alphabet_list)): print(alphabet_list[i]) for i,alphabet in enumerate(alphabet_list): print('%d %s'%(i+1,alphabet)) 上のようにC++やJavaのように添字に対応させるのではなく下のようにenum…

ABC035_C

一列に並んだオセロ(最初は全て黒)を指定された左と右の位置で反転を繰り返すという問題. 普通にやっていたら配列サイズ200,000、指定位置の個数や左,右の範囲が大きい場合でTLEを起こす. 普通にやった場合の解 #include <bits/stdc++.h> using namespace std; int main() {</bits/stdc++.h>…

分割統治法

C++

分割統治法を用いて最大値を求める. #include <bits/stdc++.h> using namespace std; int findMaximum(int A[],int left,int right) { int u,v,m,x,l=left,r=right; m = (l+r)/2; if(l==r-1){ return A[l]; }else{ u = findMaximum(A,l,m); v = findMaximum(A,m,r); x = max</bits/stdc++.h>…

lower_bound()

C++

lower_bound()について int A[14] = {1,1,2,2,2,4,5,5,6,8,8,8,10,15}; int *pos; int idx; pos = lower_bound(A,A+14,3);//3以上の値の先頭のものを指す idx = distance(A,pos);//Aは0番目, posは5番目を指しているので5 ちなみに要素の最大値よりも大きい…

二分探索

#include <bits/stdc++.h> using namespace std; #define NOT_FOUND -1 int binary_search(int A[],int n,int key) { int left = 0; int right =n; while(left</bits/stdc++.h>

ABC037_C

二重ループ中の計算 #include <bits/stdc++.h> using namespace std; static const int MAX_N = 100000; int main() { int n,k,a[MAX_N],tmp; int *s; long long int res = 0; cin>>n>>k; for(int i=0;i<n;i++){ cin>>a[i]; } for(int i=0;i</n;i++){></bits/stdc++.h>

画像二値化

ithat.me このサイトを参考にしてPythonで実装した. PILでGlayScaleにする方法はあるそうだが今回は敢えて使わずに実装した. #coding:utf-8 from PIL import Image from PIL import ImageDraw from random import randint from os.path import exists from o…

ABC051_C

背の順に並べるという問題 #include <bits/stdc++.h> using namespace std; static const int MAX_N = (int)1e5; int main() { int n,x; priority_queue<pair<int,int> > pq; cin>>n; for(int i=1;i<=n;i++){ cin>>x; pq.push(make_pair(x,i)); } while(!pq.empty()){ cout<</pair<int,int></bits/stdc++.h>

ABC028_C

A < B < C < D < E の入力に対して考えうる3つの和の中で3番目に大きい物を答えるという問題 #include <bits/stdc++.h> using namespace std; int main() { priority_queue<int> pq; set<int> s; int a[5]; for(int i=0;i<5;i++){ cin>>a[i]; } sort(a,a+5); do{ int x = a[0]+a[1]+a[</int></int></bits/stdc++.h>…

ABC054_C

階乗して並び変えたもののうち島1から始まるPATHを数える. グラフを隣接リストから隣接行列に変形する. はじめから島1が最初になるようにvector<> islandを作ったためnext_permutatino()しても時間的に問題ない. #include <bits/stdc++.h> using namespace std; template <class ForwardIterator, class T> v</class></bits/stdc++.h>…