Codeforces Round #704 (Div. 2) 题解

Codeforces Round #704 (Div. 2)

A. Three swimmers
int main()
{
	ios;
	int t;
	cin >> t;
	while (t--)
	{
		ll p,a,b,c;
		cin >> p >> a >> b >> c;
		ll t1=p/a+(p%a==0?0:1);
		ll t2=p/b+(p%b==0?0:1);
		ll t3=p/c+(p%c==0?0:1);
		t1=t1*a-p;
		t2=t2*b-p;
		t3=t3*c-p;
		cout << min(t1,min(t2,t3)) << endl;
	}
}

B. Card Deck
int p[maxn];
map<int,int> book;
int main()
{
	ios;
	int t;
	cin >> t;
	while (t--)
	{
		book.clear();
		int n;
		cin >> n;
		int maxx=-1;
		for(int i=1;i<=n;i++)
		{
			cin >> p[i];
			book[p[i]]=i;
		}
		int pre=n+1,num=0;
		for(int i=n;i>=1;i--)
		{
			if(book[i]>pre) continue;
			for(int j=book[i];j<pre;j++) cout << p[j] << ' ';
			num+=pre-book[i];
			if(num==n) break;
			pre=book[i];
		}
		cout << endl;
	}
}

C. Maximum width

正向和逆向都找一遍,取第一个符合条件的字符串,做差找最大值即可。

char s[maxn],t[maxn];
int p1[maxn],p2[maxn];
int m,n;
void solve()
{
	for(int i=1,j=1;i<=n && j<=m;i++)
		if(s[i]==t[j]) p1[j++]=i;
	for(int i=n,j=m;i>=1 && j>=1;i--)
		if(s[i]==t[j]) p2[j--]=i;
	int ans=1;
	for(int i=2;i<=m;i++)
		ans=max(ans,p2[i]-p1[i-1]);
	cout << ans << endl;
}
int main()
{
	cin >> n >> m;
	scanf("%s%s",s+1,t+1);
	int pos=1;
	solve();
}

D. Genius’s Gambit

构造,10-01=01,100-001=011,这样我们可以构造任意数量的1。
根据这个去模拟构造即可。

int main() {
    ios;
    int a,b,k,aa,bb;
    cin >> a >> b >> k;
    aa=a,bb=b;
    if(b==1)
    {
        if(k==0)
        {
            cout << "YES" << endl;
            cout << 1;
            for(int i=1;i<a+b;i++) cout << 0;
            cout << endl;
            cout << 1;
            for(int i=1;i<a+b;i++) cout << 0;
            cout << endl;
        }
        else cout << "NO" << endl;
    }
    else if(k>a+b-2) cout << "NO" << endl;
    else
    {
        string s1="",s2="";
        if(k!=0)
        {
            s1="11";
            s2="10";
            b-=2;
            for(int i=1;i<k;i++)
            {
                if(a>1)
                {
                    a--;
                    s1+="0";
                    s2+="0";
                }
                else
                {
					b--;
					s1+="1";
					s2+="1";
				}
            }
            s1+="0";
            s2+="1";
            a-=1;
        }
        for(int i=1;i<=b;i++) { s1+="1"; s2+="1"; }
        for(int i=1;i<=a;i++) { s1+="0"; s2+="0"; }
        int num0=0,num1=0;
        for(int i=0;i<s1.length();i++)
        {
            if(s1[i]=='1') num1++;
            else num0++;
        }
        if(num1!=bb || num0!=aa) { cout << "NO" << endl; return 0; }
        cout << "YES" << endl;
        cout << s1 << endl;
        cout << s2 << endl;
    }
}
抱歉,根据提供的引用内容,我无法理解你具体想要问什么问题。请提供更清晰明确的问题,我将竭诚为你解答。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Codeforces Round 860 (Div. 2)题解](https://blog.csdn.net/qq_60653991/article/details/129802687)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【CodeforcesCodeforces Round 865 (Div. 2) (补赛)](https://blog.csdn.net/t_mod/article/details/130104033)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Codeforces Round 872 (Div. 2)(前三道](https://blog.csdn.net/qq_68286180/article/details/130570952)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值