yuwj  

这场战况:5min过了个A,然后B写了40min没过,开始烦躁了,然后没什么进展,差不多1h15min就睡觉了,然后掉了21min,这个分段还能掉分...

目前只补到B题,C题已经吃力了,题解也没怎么看明白,明天再琢磨一下
其实前面两题没什么好讲得,就直接放代码了
这两题感受就是,一眼看穿本质就很简单了

A:

点击查看代码
#include <bits/stdc++.h>
using namespace std;

void solve(){
    int n; cin >> n;
    vector<int> a(n+1);
    set<int> st;
    for(int i = 1; i <= n; i++){
        cin >> a[i];
        st.insert(a[i]);
    }
    cout << st.size() << '\n';
}

int main(){
    int t;
    cin >> t;
    while(t--){
        solve();
    }
    return 0;
}

B:

点击查看代码
#include <bits/stdc++.h>
using namespace std;

void solve(){
    int n; cin >> n;
    string s; cin >> s;
    
    int len = 0;
    for(int i = 0; i < n - 1; i++){
        if(s[i] != s[i+1])len++;
    }

    //101010101010
    //011010101010 
    //01010101010
    //100110101010
    //1010101010 9 + 1
    //
    //cout <<"len:" << len << '\n';
    int ans = n;
    if(len>=3){
        ans += len;
        if(s[0] == '1')ans++;
        cout << ans - 2 << '\n';
    }else if(len == 0){
        if(s[0] == '1')ans += 1;
        //cout << len << ' ' << ans << '\n';
        cout << ans << '\n';
    }else if(len == 1){
        //if(s[0] == '1') ans += 1;
        ans += len;
        cout << ans << '\n';
    }else if(len == 2){ // 101 011
        len -= 1;
        ans += len;
        cout << ans << '\n';
    }
}

int main(){
    ios::sync_with_stdio(0);cin.tie(0);
    int t;
    cin >> t;
    while(t--){
        solve();
    }
    return 0;
}

C:

先贴个代码:

点击查看代码
#include <bits/stdc++.h>

#define F first
#define S second
#define all(x) x.begin(), x.end()
#define pb push_back
#define FIO ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)

using namespace std;

typedef long long ll;
typedef pair <ll, ll> pii;

void task() {
	int n, k; cin >> n >> k;
	vector <int> a(n), b(n+1, 0), c(2*n+1, 0);
	for (int i = 0; i < n; i++) cin >> a[i], b[i+1] = b[i] + 2*(a[i] <= k)-1;
	int fo = 0;
	c[b[1]+n]++;
	for (int i = 2; i < n; i++) {
		if (b[n]-b[i] < 0) {
			if (b[i] > 0 || (b[i] == 0 && c[n])) fo = 1;
		}
		else {
			if (b[i] >= 0 || c[b[i]+n] || c[n]) fo = 1;
		}
		c[b[i]+n]++;
	}
	if (fo) cout << "YES\n";
	else cout << "NO\n";
}

int main () {
	FIO;
	int tt; cin >> tt;
	while (tt--) task();

	return 0;
}


待竣工...

复习去了,run~

posted on 2025-04-22 20:15  xiaowang524  阅读(20)  评论(0)    收藏  举报