2012-06-16から1日間の記事一覧

ARC#004 B - 2点間距離の最大と最小 ( Maximum and Minimum )

2点間距離の最大と最小 ( Maximum and Minimum )最大は辺の長さの総和。最小は、(最長の辺の長さ)-(それ以外の辺の長さの和)。最小が0以下になるなら、2点を重ねられる。 N = input() d = [input()for x in range(N)] print sum(d) print max(0,2*max(d)-su…

ARC#004 A - 2点間距離の最大値 ( The longest distance )

2点間距離の最大値 ( The longest distance )問題サイズが小さいので全ての組合わせを試せば良い。 import math N = input() P = [map(float,raw_input().split())for x in range(N)] print "%.10f"%max(math.hypot(p[0]-q[0],p[1]-q[1]) for p in P for q in…

SRM546 Div2 Medium(500) TwoRectangles

TwoRectanglesX軸とY軸で分けるとわかりやすい。 #include <string> #include <vector> using namespace std; int intersect( int a1, int a2, int b1, int b2 ) { if ( a2<b1 || b2<a1 ) return 0; if ( a2==b1 || b2==a1 ) return 1; return 2; } class TwoRectangles{public: string describeIntersection( vector <int> A, vector </b1></vector></string>

SRM546 Div2 Easy(250) ContestWinner

ContestWinner #include <vector> using namespace std; class ContestWinner{public: int getWinner( vector <int> events ) { const int N = 1000001; vector<int> num(N), last(N); for ( int i=0; i<(int)events.size(); i++ ) num[events[i]]++, last[events[i]]=i; int a</int></int></vector>…

SRM546 Div1 Medium(500), Div2 Hard(1000) FavouriteDigits

FavouriteDigitsMがNより大きいとき、ある桁pについて、pより上位の桁ではNとMが等しく、p桁ではMの数字がNの数字より大きく、pより下位の桁は何でも良い。pより下位の桁は、digit1(d1)<digit2(d2)ならば、0 0 … 0 d1 d1 … d1 d2 d2 … d2と並べるのが最も小…

SRM546 Div1 Easy(250) KleofasTail

KleofasTail2進数で考えると、最下位ビットが0なら右シフト、1なら最下位ビットを0にする。なので、Kを尻尾に含むのは、最上位ビットにKがある数。Kが偶数なら、K+1も。 #include <algorithm> using namespace std; long long f( long long K, long long A) { if ( A<0 </algorithm>…

SRM546

Easy (250) 100.75 Medium (500) 0 Hard (1000) 0 Challenge +50 結果 264位 2165→2120変動幅いっぱいまで下がりそうだったから、一か八かコードにbfsという関数が見えた500に特攻したら、成功した(´・ω・`)v 久しぶりにチャレンジした。