QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#822012#9051. ABC StringLaVuna47#AC ✓120ms3828kbC++172.2kb2024-12-19 20:31:232024-12-19 20:31:24

Judging History

This is the latest submission verdict.

  • [2024-12-19 20:31:24]
  • Judged
  • Verdict: AC
  • Time: 120ms
  • Memory: 3828kb
  • [2024-12-19 20:31:23]
  • Submitted

answer

/** gnu specific **/
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
/** contains everything I need in std **/
#include <bits/stdc++.h>

#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define sz(S) ((int)S.size())
#define FOR(i, st_, n) for(int i = st_; i < n; ++i)
#define RFOR(i, n, end_) for(int i = (n)-1; i >= end_; --i)
#define x first
#define y second
#define pb push_back
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
typedef pair<double, double> pdd;
typedef unsigned long long ull;
typedef long double LD;
typedef pair<ull, ull> pull;
using namespace __gnu_pbds;
typedef tree<ll, null_type, less<>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
using namespace std;
#ifdef ONPC
mt19937 rnd(228);
#else
mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
#endif


bool ok(int x, const string& s)
{
	int n=sz(s);
	vector<int> C(1<<3,0);
	ll SC=0;
	FOR(i,0,n)
	{
		int t=s[i]-'A';
		bool ok=false;
		FOR(mask,1,(1<<3)-1)
		{
			if(__popcount(mask)==2 && C[mask]!=0)
			{
				if(!((mask>>t)&1))
				{
					SC -= 1;
					C[mask]-=1;
					ok=true;
					break;
				}
			}
		}
		if(!ok)
		{
			FOR(mask,1,(1<<3)-1)
			{
				if(__popcount(mask)==1 && C[mask]!=0)
				{
					if(!((mask>>t)&1))
					{
						C[mask]-=1;
						ok=true;
						C[mask|(1<<t)] += 1;
						break;
					}
				}
			}
		}
		if(!ok)
		{
			++SC;
			C[1<<t]+=1;
		}
		if(SC > x) return false;
	}
	return true;
}

int solve()
{
	string s;
	if(!(cin>>s))return 1;
	
	int l=0, r=sz(s)/3;
	while(r-l>1)
	{
		int mid=(l+r)/2;
		if(ok(mid,s))
			r=mid;
		else
			l=mid;
	}
		
	cout<<r<<'\n';
    return 0;
}

int32_t main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    int TET = 1e9;
    //cin >> TET;
    for (int i = 1; i <= TET; i++)
    {
        if (solve())
        {
            break;
        }
#ifdef ONPC
        cout << "__________________________" << endl;
#endif
    }
#ifdef ONPC
    cerr << endl << "finished in " << clock() * 1.0 / CLOCKS_PER_SEC << " sec" << endl;
#endif
}

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3540kb

input:

ABACBCAACCBB

output:

2

result:

ok single line: '2'

Test #2:

score: 0
Accepted
time: 55ms
memory: 3788kb

input:

BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...

output:

100000

result:

ok single line: '100000'

Test #3:

score: 0
Accepted
time: 56ms
memory: 3692kb

input:

BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB...

output:

99999

result:

ok single line: '99999'

Test #4:

score: 0
Accepted
time: 104ms
memory: 3820kb

input:

CBBCABACCCCBBBACCBBCBCCCBBCBACBABBABBCCBBAACBCBAABAACCCCABBACCCCACCBBABBABABCCABBBBAABABAACBACBBCCBBBCBAABBAAAACCCABAABACAACBACABABBCAACBBBBBAAACBCACAACBCAACCACCBBAABACAACAAABCBAACBCACCCAABACBAABAAABACCAAAABCCAABBBACBCCCBCCBCABCCAAABCAACAABBABBAABBBACBBCABAAACACCABABCCBACACCBCCAABBBAACCAABCBBACACACB...

output:

548

result:

ok single line: '548'

Test #5:

score: 0
Accepted
time: 120ms
memory: 3828kb

input:

ACBACBBCAABCBACCBACBAABCABCABCBCABCAACBCBAACBCABCABABCACBACBACBABCCABCABABCBCABCABACCABACBCBAACBACBCBAACBBCABACBCACBAABCACBBACACBACBBCABACBACBCACBACBAACBCABBACACBABCCABACBBACCABBCAACBACBABCBCABCABACCABBACABCABCCABCBABCABACCABBACACBBACBCAABCBACBACACBCABCABACBBACBACABCCABCBAABCCBAACBBCACABACBABCACBCBA...

output:

1

result:

ok single line: '1'

Test #6:

score: 0
Accepted
time: 99ms
memory: 3760kb

input:

BCBABCCBBCBCABCBBBCBACAAACCCBCBBACCAACBAABCBBACCAABBCBBBCBABABCACBBCCCBBBAAABBABCBACBCBBBCBACABABBCCBCBABBACBABBAACBBABCCBBABABCCCAABBBACBCBBABABCABBABBBCCBABCACBBACBCABAABCBCABCABABCACCCBACBABBABCBBACAABBACACCABCACCBABCCBCCACBAAAACAABCCACACABCBAACBBBCCAABCCBBCCABAABACBACACCCCACCABCCBABCBACAAACACCBB...

output:

276

result:

ok single line: '276'

Test #7:

score: 0
Accepted
time: 103ms
memory: 3772kb

input:

AAAACBCBBAAAAACCCCCBCBCCAAACCBAACCCACBCCABCBCCCCCBCBAACCABCCBABCCCCABABACBABCBAACCCCBCCCAAABCBCBCCBCCBCCCACCCCCCBACBCBBCCCCCCAACBCCBCABACCBCBAABCACACBCACBACCCBABCBCCCABBCCACCAACCBCCCCBCCCBCCBBCCCACCACACCCBABBABCCCBACCACBABCBBCAACCBBCCCCCACBBCACCAABCAAACCCBBCABCCBBCCBACACCCCCCBACBBCBBCCCBCBCAACCCCBBB...

output:

26495

result:

ok single line: '26495'

Test #8:

score: 0
Accepted
time: 0ms
memory: 3576kb

input:

AAAACABCAABBBBCBBCBCCBACCCABAC

output:

6

result:

ok single line: '6'

Test #9:

score: 0
Accepted
time: 0ms
memory: 3492kb

input:

CAB

output:

1

result:

ok single line: '1'