Skip to content

Commit ffb7a15

Browse files
committed
add more problems
1 parent 132319e commit ffb7a15

File tree

32 files changed

+2624
-10
lines changed

32 files changed

+2624
-10
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"files.associations": {
3+
"tuple": "cpp"
4+
}
5+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
template<typename T> ostream& operator<<(ostream &os, const vector<T> &v) { os << "{"; for (typename vector<T>::const_iterator vi = v.begin(); vi != v.end(); ++vi) { if (vi != v.begin()) os << ", "; os << *vi; } os << "}"; return os; }
5+
template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { os << '(' << p.first << ", " << p.second << ')'; return os; }
6+
7+
typedef long long ll;
8+
typedef long double ld;
9+
typedef pair<int,int> pii;
10+
11+
#define optimize ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
12+
#define endl "\n"
13+
14+
#define fi first
15+
#define se second
16+
#define pb push_back
17+
18+
#define all(x) x.begin(),x.end()
19+
#define ms(x,a) memset(x,a,sizeof(x))
20+
21+
#define INF 0x3f3f3f3f
22+
#define INFLL 0x3f3f3f3f3f3f3f3f
23+
24+
#define mod 1000000007LL
25+
#define MAXN 200010
26+
27+
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
28+
29+
//#define _DEBUG
30+
// #ifdef _DEBUG
31+
// #endif
32+
33+
/* -------------------------------- Solution starts below -------------------------------- */
34+
35+
ll T,N,M,K;
36+
37+
vector<tuple<int,int,int>> A;
38+
vector<string> B;
39+
40+
void solve(){
41+
42+
sort(all(A));
43+
44+
cout << B[get<2>(A[0])] << endl;
45+
}
46+
47+
int main(){
48+
49+
optimize;
50+
51+
cin >> T;
52+
53+
while(T--){
54+
cin >> N;
55+
56+
string s;
57+
58+
for(int i = 0, u , v ; i < N ; i++){
59+
cin >> s >> u >> v;
60+
A.emplace_back(- u, v, i);
61+
B.pb(s);
62+
}
63+
64+
solve();
65+
A.clear();
66+
B.clear();
67+
}
68+
69+
return 0;
70+
}
Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
template<typename T> ostream& operator<<(ostream &os, const vector<T> &v) { os << "{"; for (typename vector<T>::const_iterator vi = v.begin(); vi != v.end(); ++vi) { if (vi != v.begin()) os << ", "; os << *vi; } os << "}"; return os; }
5+
template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { os << '(' << p.first << ", " << p.second << ')'; return os; }
6+
7+
typedef long long ll;
8+
typedef long double ld;
9+
typedef pair<int,int> pii;
10+
11+
#define optimize ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
12+
#define endl "\n"
13+
14+
#define fi first
15+
#define se second
16+
#define pb push_back
17+
18+
#define all(x) x.begin(),x.end()
19+
#define ms(x,a) memset(x,a,sizeof(x))
20+
21+
#define INF 0x3f3f3f3f
22+
#define INFLL 0x3f3f3f3f3f3f3f3f
23+
24+
#define mod 1000000007LL
25+
#define MAXN 200010
26+
27+
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
28+
29+
//#define _DEBUG
30+
// #ifdef _DEBUG
31+
// #endif
32+
33+
/* -------------------------------- Solution starts below -------------------------------- */
34+
35+
ll T,N,M,K;
36+
string str;
37+
int sR[MAXN], sP[MAXN], sS[MAXN];
38+
39+
void solve(){
40+
41+
for(int i = 0 ; i < N ; i++) {
42+
int r = 0, p = 0, s = 0;
43+
44+
if(str[i] == 'R') r = 1;
45+
if(str[i] == 'P') p = 1;
46+
if(str[i] == 'S') s = 1;
47+
48+
sR[i + 1] = sR[i] + r;
49+
sP[i + 1] = sP[i] + p;
50+
sS[i + 1] = sS[i] + s;
51+
}
52+
53+
int ans = 0;
54+
55+
for(int i = 0; i <= N ; i++){
56+
for(int j = 0; j <= N - i; j++){
57+
int k = N - i - j;
58+
59+
int aux = 0, aux2 = 0;
60+
aux += sS[i];
61+
aux += sR[j + i] - sR[i];
62+
aux += sP[N] - sP[j + i];
63+
64+
aux2 += sR[i];
65+
aux2 += sP[j + i] - sP[i];
66+
aux2 += sS[N] - sS[j + i];
67+
68+
if(aux > N - aux - aux2) ans++;
69+
}
70+
}
71+
72+
cout << ans << endl;
73+
}
74+
75+
int main(){
76+
77+
optimize;
78+
79+
cin >> T;
80+
81+
while(T--){
82+
cin >> N >> str;
83+
84+
solve();
85+
}
86+
87+
return 0;
88+
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
template<typename T> ostream& operator<<(ostream &os, const vector<T> &v) { os << "{"; for (typename vector<T>::const_iterator vi = v.begin(); vi != v.end(); ++vi) { if (vi != v.begin()) os << ", "; os << *vi; } os << "}"; return os; }
5+
template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { os << '(' << p.first << ", " << p.second << ')'; return os; }
6+
7+
typedef long long ll;
8+
typedef long double ld;
9+
typedef pair<int,int> pii;
10+
11+
#define optimize ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
12+
#define endl "\n"
13+
14+
#define fi first
15+
#define se second
16+
#define pb push_back
17+
18+
#define all(x) x.begin(),x.end()
19+
#define ms(x,a) memset(x,a,sizeof(x))
20+
21+
#define INF 0x3f3f3f3f
22+
#define INFLL 0x3f3f3f3f3f3f3f3f
23+
24+
#define mod 1000000007LL
25+
#define MAXN 200010
26+
27+
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
28+
29+
//#define _DEBUG
30+
// #ifdef _DEBUG
31+
// #endif
32+
33+
/* -------------------------------- Solution starts below -------------------------------- */
34+
35+
ll T,N,M,K;
36+
int A[MAXN];
37+
38+
void solve(){
39+
40+
int ans = 0;
41+
42+
for(int i = 0 ; i < N ; i++) {
43+
if(i + 1 < N && !A[i] && !A[i + 1]){
44+
A[i] = 2;
45+
A[i + 1] = 1;
46+
if(i + 2 < N && !A[i + 2] ) A[i + 2] = 2;
47+
48+
ans++;
49+
}
50+
else if(i + 1 < N && !A[i] && A[i + 1] == 1){
51+
A[i] = 2;
52+
if(i + 2 < N && !A[i + 2] ) A[i + 2] = 2;
53+
}
54+
else if(i + 1 >= N && !A[i]){
55+
A[i] = 1;
56+
ans++;
57+
}
58+
else if(A[i] == 1){
59+
if(i + 1 < N && A[i + 1] != 1) A[i + 1] = 2;
60+
}
61+
}
62+
63+
cout << ans << endl;
64+
}
65+
66+
int main(){
67+
68+
optimize;
69+
70+
cin >> T;
71+
72+
while(T--){
73+
cin >> N;
74+
75+
for(int i = 0; i < N ; i++) {
76+
char k;
77+
cin >> k;
78+
79+
if(k == '*') A[i] = 1;
80+
else A[i] = 0;
81+
}
82+
83+
solve();
84+
}
85+
86+
return 0;
87+
}
Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
#include<bits/stdc++.h>
2+
using namespace std;
3+
4+
template<typename T> ostream& operator<<(ostream &os, const vector<T> &v) { os << "{"; for (typename vector<T>::const_iterator vi = v.begin(); vi != v.end(); ++vi) { if (vi != v.begin()) os << ", "; os << *vi; } os << "}"; return os; }
5+
template<typename A, typename B> ostream& operator<<(ostream &os, const pair<A, B> &p) { os << '(' << p.first << ", " << p.second << ')'; return os; }
6+
7+
typedef long long ll;
8+
typedef long double ld;
9+
typedef pair<int,int> pii;
10+
11+
#define optimize ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
12+
#define endl "\n"
13+
14+
#define fi first
15+
#define se second
16+
#define pb push_back
17+
18+
#define all(x) x.begin(),x.end()
19+
#define ms(x,a) memset(x,a,sizeof(x))
20+
21+
#define INF 0x3f3f3f3f
22+
#define INFLL 0x3f3f3f3f3f3f3f3f
23+
24+
#define mod 1000000007LL
25+
#define MAXN 100100
26+
27+
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
28+
29+
//#define _DEBUG
30+
// #ifdef _DEBUG
31+
// #endif
32+
33+
/* -------------------------------- Solution starts below -------------------------------- */
34+
35+
ll T,N,M,K;
36+
37+
string s;
38+
39+
int dp[MAXN], seg[4 * MAXN];
40+
41+
int init(){
42+
ms(dp,0);
43+
ms(seg, 0x3f);
44+
}
45+
46+
int query(int p, int tl, int tr, int a, int b){
47+
48+
if(tr < a || b < tl) return INF;
49+
50+
if(tl >= a && tr <= b){
51+
return seg[p];
52+
}
53+
54+
int e = (p << 1);
55+
int d = (p << 1) | 1;
56+
int tm = (tl+tr)/2;
57+
58+
return min(query(e,tl,tm,a,b), query(d,tm+1,tr,a,b));
59+
}
60+
61+
void update(int p, int tl, int tr, int a, int b, int x){
62+
63+
if(tr < a || b < tl){
64+
return;
65+
}
66+
if(tl == tr){
67+
seg[p] = x;
68+
return;
69+
}
70+
71+
int e = (p << 1);
72+
int d = (p << 1) | 1;
73+
int tm = (tl+tr)/2;
74+
75+
update(e,tl,tm,a,b,x);
76+
update(d,tm+1,tr,a,b,x);
77+
78+
seg[p] = min(seg[e], seg[d]);
79+
}
80+
81+
void upd(int l, int x){
82+
update(1, 1, N + 1, l + 1, l + 1, x);
83+
}
84+
85+
int qry(int l, int r){
86+
return query(1, 1, N + 1, l + 1, r + 1);
87+
}
88+
89+
void solve(){
90+
91+
init();
92+
93+
deque<int> trocas;
94+
95+
upd(N, 0);
96+
97+
dp[N - 1] = 1;
98+
upd(N - 1, dp[N - 1]);
99+
100+
for(int i = N - 2; i >= 0 ; i--){
101+
if(s[i] == s[i+1]) trocas.push_back(i);
102+
103+
if(!trocas.empty() && trocas.front() >= i + K) trocas.pop_front();
104+
105+
dp[i] = INF;
106+
107+
if(!trocas.empty()) {
108+
int u = trocas.back();
109+
dp[i] = 1 + qry(u + 2, min(N, i + K));
110+
}
111+
112+
dp[i] = min(dp[i], 1 + dp[i + 1]);
113+
114+
upd(i, dp[i]);
115+
}
116+
117+
cout << dp[0] - 1 << endl;
118+
}
119+
120+
int main(){
121+
122+
optimize;
123+
124+
cin >> T;
125+
126+
while(T--){
127+
cin >> N >> K >> s;
128+
129+
solve();
130+
}
131+
132+
return 0;
133+
}

0 commit comments

Comments
 (0)