Codeforces Round #767 (Div. 2)

A

#include <bits/stdc++.h>
using namespace std;
int n, k;
struct node {
	int a, b;
}p[110];
bool cmp(node x, node y)
{
	if (x.a == y.a)	return x.b > y.b;
	return x.a < y.a;
}
int main() {
	int T;
	cin >> T;
	while (T -- ) {
		cin >> n >> k;
		for (int i = 1; i <= n; i ++ )
			cin >> p[i].a;
		for (int i = 1; i <= n; i ++ )
			cin >> p[i].b;
		sort(p + 1, p + 1 + n, cmp);
		for (int i = 1; i <= n; i ++ ) {
			if (k >= p[i].a) {
				k += p[i].b;
			}
			else	break;
		}
		cout << k << endl;
	}
	return 0;
}

B

#include <bits/stdc++.h>
using namespace std;
int l, r, k;
int main() {
	int T;
	cin >> T;
	while (T -- ) {
		cin >> l >> r >> k;
		int len = r - l + 1;
		int sum = r / 2 - (l - 1) / 2;
		if (k >= len - sum) 
			cout << "YES" << endl;
		else if (r == l && l != 1)
			cout << "YES" << endl;
		else 
			cout << "NO" << endl;
	}
	return 0;
}

C

#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n;
int a[N];
int main() {
	int T;
	cin >> T;
	while (T -- ) {
		cin >> n;
		map<int, int> Map;
		vector<int> p;
		for (int i = 1; i <= n; i ++ )	{
			cin >> a[i];
			if (!Map.count(a[i]))	p.push_back(a[i]);
			Map[a[i]] ++;
		}
		sort(p.begin(), p.end());
		int pos = -1;
		for (int i = 0; i < p.size(); i ++ ) {
			if (p[i] == i)	pos = i;
			else break;
		}
		vector<int> ans;
		for (int i = 1; i <= n; ) {
			if (pos == -1)	{
				for (int j = i; j <= n; j ++ )
					ans.push_back(0); 
				break;
			}
			int j = i;
			set<int> s;	
			bool flag = 0;
			while (j <= n) {
				int num = a[j];
				Map[num] --;
				if (num >= 0 && num <= p[pos]) s.insert(num);
				if (s.size() == p[pos] + 1) {
					i = j + 1;
                                        ans.push_back(p[pos] + 1);
                                        bool ok = 0;
                                        int last = pos;
					for (int k = 0; k <= last; k ++ ) {
						if (Map[p[k]] != 0) {
							pos = k;
							ok = true;
						}
						else break;
					}
					if (ok == 0) pos = -1;
					flag = 1;
					break;
				}
				j ++;
			}
			if (!flag) {
				int num = 0;
				for (auto it = s.begin(); it != s.end(); it ++ ) {
					if (*it == num)	{num ++; continue;}
					else break;
				}
				ans.push_back(num);
				i = j + 1;
			}
		}
		cout << ans.size() << endl;
		for (auto x : ans)
			cout << x << " ";
		cout << endl;
	}
	return 0;
}

D

#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int T, n;
string s[N];
int main() {
    cin >> T;
    while (T -- ) {
        cin >> n;
        string s1, s2;
        map<string, int> Map;
        for (int i = 1; i <= n; i ++ )  cin >> s[i], s1 += s[i];
        s2 = s1;
        reverse(s1.begin(), s1.end());
        if (s1 == s2) {
            cout << "YES" << endl;
            continue;
        }
        bool flag = 0;
        for (int j = 1; j <= n; j ++ ) {
            Map[s[j]] ++;
            if (s[j].size() == 1) {
                flag = 1;
                break;
            }
            else if (s[j].size() == 2) {
                string str = s[j];
                string _str = str;
                reverse(_str.begin(), _str.end());
                if (Map.count(_str)) {
                    flag = 1;
                    break;
                }
                for (char i = 'a'; i <= 'z'; i ++ ) {
                    string ss = _str + i;
                    if (Map.count(ss)) {
                        flag = 1;
                        break;
                    }
                }
                if (flag)   break;
            }
            else {
                string str = s[j];
                string _str = str;
                reverse(_str.begin(), _str.end());
                if (Map.count(_str)) {
                    flag = 1;
                    break;
                }
                _str = str.substr(1, 2);
                reverse(_str.begin(), _str.end());
                if (Map.count(_str)) {
                    flag = 1;
                    break;
                }
            }
        }
        if (flag)   cout << "YES" << endl;
        else    cout << "NO" << endl;
    }
    return 0;
}

剩下的题目待补

posted @ 2022-01-23 16:05  Angels_of_Death  阅读(30)  评论(0)    收藏  举报