L1-1
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <vector>
#define x first
#define y second
using namespace std;
using LL = long long;
typedef pair<int, int> PII;
void solve()
{
cout << "Good code is its own best documentation." << endl;
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
while (_--) solve();
return 0;
}
L1-2
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <vector>
#define x first
#define y second
using namespace std;
using LL = long long;
typedef pair<int, int> PII;
int a, b;
void solve()
{
cin >> a >> b;
cout << a + b - 16 << endl;
cout << a + b - 3 << endl;
cout << a + b - 1 << endl;
cout << a + b << endl;
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
while (_--) solve();
return 0;
}
L1-3
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <vector>
#define x first
#define y second
using namespace std;
using LL = long long;
typedef pair<int, int> PII;
int n, m, k;
string x;
void solve()
{
cin >> n >> x >> m >> k;
if (k == n) cout << "mei you mai " << x << " de" << endl;
else if (k == m) cout << "kan dao le mai " << x << " de" << endl;
else cout << "wang le zhao mai " << x << " de" << endl;
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
while (_--) solve();
return 0;
}
L1-4
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <vector>
#define x first
#define y second
using namespace std;
using LL = long long;
typedef pair<int, int> PII;
int n;
void solve()
{
cin >> n;
while(n--)
{
int a,b,c;
cin >> a >> b >> c;
if (c == a * b) cout << "Lv Yan" << endl;
else if (c == a + b) cout << "Tu Dou" << endl;
else cout << "zhe du shi sha ya!" << endl;
}
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
while (_--) solve();
return 0;
}
L1-5
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <vector>
#define x first
#define y second
using namespace std;
using LL = long long;
typedef pair<int, int> PII;
const int N = 110;
int n,m;
int a[N];
void solve()
{
cin >> n;
for (int i = 1;i <= n;i++)
cin >> a[i];
cin >> m;
while(m--)
{
bool all_no = false;
bool wrong = false;
bool no_win =false;
for (int i = 1;i <= n;i++)
{
int x;
cin >> x;
if (x == a[i])
{
all_no = true;
no_win = true;
}
if (x + a[i] == 3)
{
wrong = true;
all_no = true;
}
}
if (wrong == false && no_win) cout << "Da Jiang!!!" << endl;
if (!all_no || wrong) cout << "Ai Ya" << endl;
}
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
while (_--) solve();
return 0;
}
L1-6 (寄了)
s.substr(a,b),a是所截取的子串在原始字符串的起始位置,而b则是截取长度,不是子串的终止位置!
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <map>
#include <vector>
#define x first
#define y second
using namespace std;
using LL = long long;
typedef pair<int, int> PII;
const int N = 210;
string s;
string tp[N];
int n;
int a,b;
string s1,s2;
void solve()
{
cin >> s;
cin >> n;
for (int i = 1;i <= n;i++)
{
cin >> a >> b >> s1 >> s2;
tp[i] = s.substr(a - 1,b - 1);
s.erase(a - 1,b - 1); // 删除与截取一样[]
int st = s.find(s1);
int ed = s.find(s2);
// cout << st << endl;
// cout << ed << endl;
// cout << s << endl;
// s.insert((st + ed) / 2 + 1,tp[i]);
// cout << s << endl;
if (st == -1) //找不到返回-1
{
s.insert(s.size(),tp[i]); //在下标为s.size()处插入
// cout << s << endl;
}
else
{
s.insert((st + ed) / 2 + 1,tp[i]);
}
}
cout << s << endl;
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
while (_--) solve();
return 0;
}
改正后
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <map>
#include <set>
#include <string>
#include <vector>
#define x first
#define y second
using namespace std;
using LL = long long;
typedef pair<int, int> PII;
const int N = 210;
string s;
int n;
int a,b;
string s1,s2;
void solve()
{
cin >> s;
cin >> n;
while(n--)
{
cin >> a >> b >> s1 >> s2;
string s3 = s.substr(a - 1,b - a + 1); //开始下标,长度
s.erase(s.begin() + a - 1,s.begin() + b); // 删除[)
int len = s1.length();
string tmp = s1 + s2;
int pos = s.find(tmp);
if(pos != s.npos) s.insert(pos + len, s3); // 从下标pos + len 处插入 s3
else s.insert(s.length(), s3);
}
cout << s << endl;
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
while (_--) solve();
return 0;
}
二次
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <string>
#include <vector>
#define x first
#define y second
#define endl '\n'
using namespace std;
using LL = long long;
typedef pair<int, int> PII;
string s;
int n;
string tmp1,tmp2;
int st,ed;
string t;
void solve()
{
cin >> s;
cin >> n;
for (int i = 0;i < n; i++)
{
cin >> st >> ed;
cin >> tmp1 >> tmp2;
int len = tmp1.size();
tmp1 += tmp2;
t = s.substr(st - 1,ed - st + 1);
// cout << t << endl;
// cout << tmp1 << endl;
s.erase(st - 1,ed - st + 1);
// cout << s << endl;
// cout << s.find(tmp1) << endl;
int id = s.find(tmp1); // 第一次出现的下标
// cout << id << endl;
if (id != -1)
{
s.insert(id + len,t);// 从下标开始插入
}
else s.insert(s.size(),t);
}
cout << s << endl;
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
while (_--) solve();
return 0;
}
L1-7 19分(wa了1分)
#include <iostream>
#include <algorithm>
#include <cstring>
#include <queue>
#include <map>
#include <vector>
#define x first
#define y second
using namespace std;
using LL = long long;
typedef pair<int, int> PII;
const int N = 100010;
int n,m,s;
vector <int> a;
vector <int> b;
// map<int,PII> mp;
void solve()
{
cin >> n >> m>> s;
for (int i = 1;i <= n / i;i++)
{
if (n % i) continue;
a.push_back(i);
if (i != n / i) a.push_back(n / i);
}
sort(a.begin(),a.end());
a.erase(unique(a.begin(),a.end()),a.end());
// for (auto&t : a)
// cout << t << " ";
// cout << endl;
for (int i = 1;i <= m / i;i++)
{
if (m % i) continue;
b.push_back(i);
if (i != m / i) b.push_back(m / i);
}
sort(b.begin(),b.end());
b.erase(unique(b.begin(),b.end()),b.end());
// for (auto&t : b)
// cout << t << " ";
// cout << endl;
int minn = 1e9;
int tp1 = -1,tp2 = -1;
for (int i = 0;i < a.size();i++)
for (int j = 0;j < b.size();j++)
{
if ((n / a[i] + m / b[j]) == s)
{
if (abs(a[i] - b[j]) < minn)
{
minn = abs(a[i] - b[j]);
tp1 = n / a[i],tp2 = m / b[j];
}
// mp[abs(a[i] - b[j])] = {a[i],b[j]};
// printf("%d %d %d %d\n",a[i],n / a[i],b[j],m / b[j]);
}
}
if (tp1 == -1 && tp2 == -1) cout << "No Solution" << endl;
else
cout << tp1 << " " << tp2 << endl;
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int _ = 1;
while (_--) solve();
return 0;
}
3小时才做到这
撒狗粮
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#include <string>
#include <map>
#define endl '\n'
#define x first
#define y second
using namespace std;
typedef long long LL;
typedef pair<int,int> PII ;
const int N = 50010, M = 80010;
int n,m;
int a[M];
int b[N];
int p[N];
map<int,int> mp;
struct Node
{
int a,b;
}nodes[N];
void insert(int l,int r,int c)
{
b[l] += c;
b[r + 1] -= c;
}
void solve()
{
cin >> n;
for (int i = 0;i < n;i ++)
{
int a,b;
cin >> a >> b;
// p[a] = b;p[b] = a;
nodes[i]= {a,b};
}
cin >> m;
for (int i = 1;i <= m;i ++)
{
cin >> a[i];
mp[a[i]] = i;
// insert(i,i,a[i]);
}
for (int i = 0;i < n;i ++)
{
int a = nodes[i].a,b = nodes[i].b;
if (mp[a] >= 1 && mp[a] <= m && mp[b] >= 1 && mp[b] <= m)
{
if (abs(mp[a] - mp[b]) <= 1)
{
if (mp[a] > mp[b])
{
insert(mp[b] - 1,mp[b] - 1,1);
insert(mp[a] + 1,mp[a] + 1,1);
}
else
{
insert(mp[b] + 1,mp[b] + 1,1);
insert(mp[a] - 1,mp[a] - 1,1);
}
}
else
{
if (mp[a] > mp[b])
insert(mp[b] + 1,mp[a] - 1,1);
else
insert(mp[a] + 1,mp[b] - 1,1);
}
}
}
for (int i = 1;i <= m;i ++) b[i] += b[i - 1];
for (int i = 1;i <= m;i ++) cout << b[i] << ' ';
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int _ = 1;
while(_--) solve();
return 0;
}
L2-1 堆宝塔
#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
const int N = 1010;
vector<int> a,b;
//vector<int> c[N];
int n;
int cnt;
int maxn;
void solve()
{
cin >> n;
for (int i = 0;i < n;i ++)
{
int x;
cin >> x;
if (i == 0) a.push_back(x);
else
{
if (x < a.back()) a.push_back(x);
else
{
if (b.size() == 0 || x > b.back()) b.push_back(x);
else
{
maxn = max(maxn,(int)a.size());
a.clear();cnt++;
for (int i = b.size() - 1;i >= 0;i--)
if (b[i] > x)
{
a.push_back(b[i]);
b.pop_back();
}
a.push_back(x);
}
}
}
}
if (a.size()) maxn = max(maxn,(int)a.size()),cnt++;
if (b.size()) maxn = max(maxn,(int)b.size()),cnt++;
cout << cnt << ' ' << maxn << endl;
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int _ = 1;
while(_--) solve();
return 0;
}
L2-2 天梯赛的赛场安排 寄
#include <bits/stdc++.h>
using namespace std;
using LL = long long;
const int N = 5010, M = 60;
int n,m;
int cnt;
map<string,int> mp;
string s[N];
void solve()
{
cin >> n >> m;
for (int i = 0;i < n;i ++)
{
string sp;
int cp;
cin >> sp >> cp;
int tmp = cp / m;
if (cp % m) tmp++;
mp[sp] = cp;s[i] = sp;
cout << sp << " " << tmp << endl;
}
// for (int i = 0;i < n;i ++)
// {
// cout << s[i] << ' ' << mp[s[i]] << endl;
// }
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int _ = 1;
while(_--) solve();
return 0;
}
L2-4 寻宝图 24/25 (内存超限1个点)
#include <bits/stdc++.h>
#define endl '\n'
#define x first
#define y second
using namespace std;
using LL = long long;
typedef pair<int,int> PII;
const int N = 10010;
char g[N][N];
bool st[N][N];
queue<PII> q;
int n,m;
int cnt1,cnt2;
int dx[] = {-1,0,1,0},dy[] = {0,1,0,-1};
void bfs(int sx,int sy)
{
q.push({sx,sy});
st[sx][sy] = true;
bool has_bao = false;
while(q.size())
{
auto t = q.front();
q.pop();
for (int i = 0;i < 4;i ++)
{
int a = t.x + dx[i],b = t.y + dy[i];
if (a < 0 || a >= n || b < 0 || b >= m) continue;
if (st[a][b]) continue;
if (g[a][b] == '0') continue;
if (g[a][b] >= '2' && g[a][b] <= '9') has_bao = true;
st[a][b] = true;
q.push({a,b});
}
}
if (has_bao) cnt2 ++;
}
void solve()
{
cin >> n >> m;
for (int i = 0;i < n;i ++)
for (int j = 0;j < m;j ++)
cin >> g[i][j];
for (int i = 0;i < n;i ++)
for (int j = 0;j < m;j ++)
{
if (!st[i][j] && g[i][j] != '0')
{
cnt1 ++;bfs(i,j);
}
}
cout << cnt1 << " " << cnt2 << endl;
}
int main()
{
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int _ = 1;
while(_--) solve();
return 0;
}