2023天梯赛

 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;
 } 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值