Skip to content

Instantly share code, notes, and snippets.

@knuu
knuu / AlmostFibonacciKnapsack.py
Created April 8, 2016 16:52
SRM687 div1 easy
class AlmostFibonacciKnapsack:
def getIndices(self, x):
A = [2, 3]
while A[-1] + A[-2] - 1 <= x:
A.append(A[-1] + A[-2] - 1)
N = len(A)
ans = []
while x > 0:
i = bisect.bisect_left(A, x)
if i == N or A[i] > x:
@knuu
knuu / ImportantSequence.py
Last active April 8, 2016 17:33
SRM540 div.1 250 ImportantSequence
class ImportantSequence:
def getCount(self, B, operators):
INF = 10**18
lb, ub = 1, INF
sign = 1 # if sign == 1 then '+' else '-'
c = 0
for b, ope in zip(B, operators):
if ope == '+':
sign ^= 1
c = b - c
@knuu
knuu / qupc2014_d.cpp
Created April 14, 2016 21:12
QUPC2014 D. 切符分割
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
#define FOR(i,s,x) for(int i=s;i<(int)(x);i++)
#define REP(i,x) FOR(i,0,x)
#define ALL(c) c.begin(), c.end()
#define DUMP( x ) cerr << #x << " = " << ( x ) << endl
#define INF (int)1e9
@knuu
knuu / qupc2014_f.cpp
Created April 14, 2016 22:40
QUPC2014 F: 設備移転
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
#define FOR(i,s,x) for(int i=s;i<(int)(x);i++)
#define REP(i,x) FOR(i,0,x)
const ll mod = 1000000009;
int main() {
@knuu
knuu / EllysXors.py
Created April 22, 2016 17:20
SRM543 div.1 250 EllysXors
class EllysXors:
def getXor(self, L, R):
max_bitlen = (4*10**9).bit_length()
def count_bit_sum(N):
bit = [0] * max_bitlen
if N == 0:
return bit[:]
for i in range(N.bit_length() - 1):
bit[i] = 1 << (N.bit_length() - 2)
bit[N.bit_length()-1] = N - (1 << (N.bit_length() - 1)) + 1
@knuu
knuu / abc038_a.nim
Created May 30, 2016 00:04
ABC038A
let S = stdin.readline
echo(if S[^1] == 'T': "YES" else: "NO")
@knuu
knuu / abc038_b.nim
Created May 30, 2016 00:05
ABC038B
import strutils, sequtils
let
A = stdin.readline.split.map(parseInt)
B = stdin.readline.split.map(parseInt)
var flag = false
for a in A:
for b in B:
if a == b:
echo("YES")
@knuu
knuu / abc038_c.nim
Created May 30, 2016 00:06
ABC038C
import strutils, sequtils
let N = stdin.readline.parseInt
var
A = stdin.readline.split.map(parseInt)
left, ans = 0.int64
A.add(0)
while left < N:
var right = left + 1
while A[right.int-1] < A[right.int]: right.inc
@knuu
knuu / abc038_d.nim
Last active October 15, 2016 18:13
ABC038D
import sequtils, strutils, algorithm, tables
type
SegTree[T] = object
dat: seq[T]
size: int
real_size: int
default: T
proc initSegTree[T](size: int, default = 0): SegTree[T] =
@knuu
knuu / abc038_d_2.nim
Created May 30, 2016 00:07
ABC038D その2
import strutils, algorithm, sequtils
let N = stdin.readline.parseInt
var boxes: seq[(int, int)] = @[]
for _ in 1..N:
let t = stdin.readline.split.map(parseInt)
boxes.add((t[0], -t[1]))
boxes.sort(cmp)
var lis: seq[int] = @[]
for i, box in boxes:
let