Skip to content

Commit 2dc4502

Browse files
author
lebesgue
committed
re-organization; remove conflicted
1 parent 3867603 commit 2dc4502

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+2709
-1
lines changed

BZOJ/1013.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,4 +62,4 @@ int main ()
6262
printf ("%.3lf%c", sol[i], i==n? '\n' : ' ');
6363
}
6464
return 0;
65-
}
65+
}

Codeforces/341B_198.cpp

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#include <cstdio>
2+
#include <map>
3+
#include <cmath>
4+
5+
using namespace std;
6+
7+
int main () {
8+
int i, j, k;
9+
map<int, int>M;
10+
int n, ans = 0;
11+
scanf ("%d", &n);
12+
M[0] = 0;
13+
for (i = 1; i <= n; ++i) {
14+
scanf ("%d", &j);
15+
map<int, int>::iterator it = M.lower_bound(j);
16+
k = (--it)->second + 1;
17+
for (++it; it != M.end(); ) {
18+
if(it->second <= k)
19+
M.erase(it++);
20+
else
21+
break;
22+
}
23+
M[j] = k;
24+
ans = max(ans, k);
25+
}
26+
printf("%d\n", ans);
27+
return 0;
28+
}
29+
30+
31+

Codeforces/CF340C_198.scala

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
object CF340C_198 extends App{
2+
def gcd (x : Long, y : Long) : Long = {
3+
if (x % y == 0) y else gcd (y, x % y)
4+
}
5+
val n = Console.readLine.toInt
6+
val a = Console.readLine.split(' ').map(_.toLong).sorted.zip(1 to n).map{case (x, i) =>
7+
(4 * i - 2 * n - 1) * x
8+
}.reduce(_ + _)
9+
val d = gcd(a, n)
10+
printf("%d %d\n", a/d, n/d)
11+
}

PKU/PKU_3468_AC.cpp

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
#include <iostream>
2+
#include <cstdio>
3+
4+
#define LL(x) ((x)<<1)
5+
#define RR(x) ((x)<<1|1)
6+
#define X(rt) seg[(rt)].x
7+
#define Y(rt) seg[(rt)].y
8+
#define S(rt) seg[(rt)].sum
9+
#define D(rt) seg[(rt)].d
10+
11+
using namespace std;
12+
13+
const int N = 100010;
14+
15+
struct node{
16+
int x, y;
17+
long long sum, d;
18+
}seg[N<<2];
19+
20+
void build(int rt, int be, int en)
21+
{
22+
X(rt) = be;
23+
Y(rt) = en;
24+
D(rt) = 0;
25+
if(be == en){
26+
scanf("%lld",&seg[rt].sum);
27+
// printf("reading %d %lld\n", be, S(rt));
28+
return;
29+
}
30+
31+
int mid = (be + en) >> 1;
32+
build(LL(rt), be, mid);
33+
build(RR(rt), mid + 1, en);
34+
S(rt) = S(LL(rt)) + S(RR(rt));
35+
}
36+
37+
void insert(int rt, int be, int en, long long inc)
38+
{
39+
if(be <= X(rt) && en >= Y(rt))
40+
{
41+
D(rt) += inc;
42+
S(rt) += inc * (Y(rt) - X(rt) + 1);
43+
return;
44+
}
45+
if(D(rt)){
46+
insert(LL(rt), X(rt), Y(rt), D(rt));
47+
insert(RR(rt), X(rt), Y(rt), D(rt));
48+
D(rt) = 0;
49+
}
50+
int mid = (X(rt) + Y(rt) ) >> 1;
51+
if(be <= mid)
52+
insert(LL(rt), be, en, inc);
53+
if(en > mid)
54+
insert(RR(rt), be, en, inc);
55+
S(rt) = S(LL(rt)) + S(RR(rt));
56+
}
57+
58+
long long qry(int rt, int be, int en)
59+
{
60+
if(be <= X(rt) && en >= Y(rt))
61+
return S(rt);
62+
if(D(rt)){
63+
insert(LL(rt), X(rt), Y(rt), D(rt));
64+
insert(RR(rt), X(rt), Y(rt), D(rt));
65+
D(rt) = 0;
66+
}
67+
long long ans = 0;
68+
int mid = (X(rt) + Y(rt)) >> 1;
69+
if(be <= mid)
70+
ans += qry(LL(rt), be, en);
71+
if(en > mid)
72+
ans += qry(RR(rt), be, en);
73+
return ans;
74+
}
75+
76+
int main()
77+
{
78+
int i, j, n, q;
79+
long long k;
80+
char ch;
81+
82+
scanf("%d%d",&n, &q);
83+
build(1, 1, n);
84+
for(; q; q--)
85+
{
86+
getchar();
87+
scanf("%c%d%d",&ch, &i, &j);
88+
if(ch == 'C'){
89+
scanf("%lld",&k);
90+
insert(1, i, j, k);
91+
}
92+
else
93+
printf("%lld\n", qry(1, i, j));
94+
}
95+
return 0;
96+
}
97+
98+
99+
100+

SGU/187_simul.cpp

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#include <cstdio>
2+
#include <algorithm>
3+
4+
using namespace std;
5+
6+
const int N = 4011;
7+
8+
struct seg {
9+
int be, en;
10+
}a[N];
11+
int n;
12+
13+
void rev (int s, int t) {
14+
int i, j;
15+
for (i = s, j = t; i <= j; ++i, --j) {
16+
swap (a[i], a[j]);
17+
swap (a[i].be, a[i].en);
18+
if (i != j) swap (a[j].be, a[j].en);
19+
}
20+
}
21+
22+
int getPos (int x) {
23+
int j, k, i = 1;
24+
while (x > 0) {
25+
int size = abs (a[i].be - a[i].en) + 1;
26+
if (x >= size) {
27+
x -= size;
28+
i++;
29+
}
30+
else {
31+
int sgn = a[i].en >= a[i].be ? 1 : -1;
32+
for (j = (++n); j > i + 1; a[j] = a[j - 1], --j);
33+
a[i+1].be = a[i].be + sgn * x; a[i+1].en = a[i].en; a[i].en = a[i].be + sgn * (x - 1);
34+
return i + 1;
35+
}
36+
}
37+
return i;
38+
}
39+
40+
int main () {
41+
int i, j, k, m;
42+
scanf ("%d%d", &k, &m);
43+
n = 1;
44+
a[1].be = 1; a[1].en = k;
45+
for (; m; --m) {
46+
scanf ("%d%d", &i, &j);
47+
int x = getPos (i - 1);
48+
int y = getPos (j);
49+
rev (x, y - 1);
50+
}
51+
for (k = 1; k <= n; ++k)
52+
if (a[k].be <= a[k].en)
53+
for (j = a[k].be; j <= a[k].en; printf ("%d ", j++));
54+
else
55+
for (j = a[k].be; j >= a[k].en; printf ("%d ", j--));
56+
printf ("\n");
57+
return 0;
58+
}
59+
60+

SGU/187_splay.cpp

Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
/*
2+
* SplayTree_econ.cpp
3+
*
4+
* Created on: Jan 6, 2013
5+
* Author: shuo
6+
*/
7+
8+
#include <iostream>
9+
#include <cstdio>
10+
#include <algorithm>
11+
#include <cstring>
12+
13+
using namespace std;
14+
15+
const int N = 130011;
16+
17+
struct Node {
18+
// ch[0]: left child; ch[1]: right child
19+
Node *ch[2], *p;
20+
int v, size;
21+
bool rvs;
22+
Node () : v(0), size(0){}
23+
24+
/* Static */
25+
bool R() {return this == p->ch[1];}
26+
27+
/* Static */
28+
void setch (bool c, Node *x) {
29+
ch[c] = x;
30+
x->p = this;
31+
}
32+
33+
/* Task specific */
34+
void push_down () {
35+
if (rvs) {
36+
swap (ch[0], ch[1]);
37+
ch[0]->rvs ^= 1;
38+
ch[1]->rvs ^= 1;
39+
rvs = false;
40+
}
41+
}
42+
43+
/* Task specific */
44+
void update () {
45+
size = ch[0]->size + ch[1]->size + 1;
46+
}
47+
}memo[N];
48+
49+
Node *snt, *root;
50+
int n, mpt = 0;
51+
52+
/* Static */
53+
void rotate (Node *x) {
54+
Node *f = x->p;
55+
int c = x->R();
56+
f->push_down (); x->push_down (); // is it necessary for x ?
57+
f->setch (c, x->ch[!c]);
58+
f->p->setch (f->R(), x);
59+
x->setch (!c, f);
60+
f->update ();
61+
if (f == root) root = x;
62+
63+
}
64+
65+
/* Static */
66+
void splay (Node *x, Node *t) {
67+
for (x->push_down (); x->p != t; ) {
68+
if (x->p->p == t)
69+
rotate (x);
70+
else
71+
(x->R() == x->p->R()) ? (rotate (x->p), rotate (x)) : (rotate (x), rotate(x));
72+
}
73+
x->update ();
74+
}
75+
76+
77+
/* Task specific */
78+
Node* newNode (int val) {
79+
Node* u = &memo[mpt++];
80+
u->v = val;
81+
u->p = u->ch[0] = u->ch[1] = snt;
82+
u->size = 1; u->rvs = false;
83+
return u;
84+
}
85+
86+
/* Task specific: probably interval operation */
87+
Node* build (int l, int r) {
88+
if (l > r) return snt;
89+
90+
int mid = (l + r) / 2;
91+
Node *u = newNode (mid);
92+
if (l < r) {
93+
u->setch (0, build (l, mid - 1));
94+
u->setch (1, build (mid + 1, r));
95+
}
96+
u->update ();
97+
return u;
98+
}
99+
100+
Node* select (int rk) {
101+
Node *u = root;
102+
while (true) {
103+
u->push_down (); // cannot be delayed
104+
int j = u->ch[0]->size + 1;
105+
if (rk == j) return u;
106+
else if (rk > j) {
107+
u = u->ch[1];
108+
rk -= j;
109+
}
110+
else u = u -> ch[0];
111+
112+
}
113+
return u;
114+
}
115+
116+
void init () {
117+
snt = &memo[mpt++];
118+
root = build (0, n + 1);
119+
snt->setch (0, root);
120+
}
121+
122+
void reverse (int l, int r) {
123+
Node *a = select (l);
124+
Node *b = select (r + 2);
125+
splay (a, snt); splay (b, a);
126+
b->ch[0]->rvs ^= 1;
127+
splay (b->ch[0], snt); // still got AC if removed
128+
}
129+
130+
131+
void go (Node *u) {
132+
if (u == snt) return;
133+
u->push_down ();
134+
go (u->ch[0]);
135+
if (u->v != 0 && u->v != n + 1)
136+
printf ("%d ", u->v);
137+
go (u->ch[1]);
138+
}
139+
void output () {
140+
go (root);
141+
printf ("\n");
142+
}
143+
144+
int main () {
145+
int i, j, m;
146+
//freopen ("in.txt", "r", stdin);
147+
scanf ("%d%d", &n, &m);
148+
init ();
149+
for (; m; m--) {
150+
scanf ("%d%d", &i, &j);
151+
reverse (i, j);
152+
}
153+
output ();
154+
return 0;
155+
}
156+
157+
158+
159+
160+
161+
162+

Topcoder/.idea/.name

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)