首页 > 其他分享 >Educational Codeforces Round 160 (Rated for Div. 2)

Educational Codeforces Round 160 (Rated for Div. 2)

时间:2023-12-19 13:22:40浏览次数:46  
标签:Educational Rated ++ Codeforces else break -- cnt 数目

基本情况

A题秒了。

B题卡了实在太久,BC题最后虽然都过了,但是耗时太久。感觉C对我来说更好写。

B. Swap and Delete

经典+3。

总是一条路偏要走到黑了才会想着换思路,早该换了。

一开始想了一大堆乱七八糟的思路,但都错了。

后面往简单了想,这题毕竟最后必须要左对齐的,直接从左往右比对,从这角度出发想做法,终于想出来了。

我们从左到右逐位处理, 对不用删除的数目 \(t\) 进行统计:

if (s[i] == '0')
{
	if (cnt[1] > 0)
		cnt[1]--, t++; 
	else
    	break;
}
  • 前半部分思路很简单,其实我前面乱试的时候也有想到:

    从左往右比对,如果这一位是 \(0\),那肯定需要 \(1\),如果此时 \(1\) 的数目够,就直接给,然后把不用删除的数目加一。

  • 但是当 \(1\) 的数目不够时,是个难点,我前面没有抓住这个问题:

    事实上,一旦需要的 \(1\) 已经没有了,那么后面所有的数必然都是 \(0\),那么怎样操作都无法让这一位变成 \(1\) 了,只能把后面的数全删了。因此直接退出对不用删的数目的统计,输出答案。

void solve()
{
	std::string s;
	std::cin >> s;
	int n = s.length(), t = 0;//不用删除,只靠移动就可以的数目
	cnt[1] = cnt[0] = 0;
	for (int i = 0; i < n; i++) if (s[i] == '1') cnt[1] ++; else cnt[0]++;
	for (int i = 0; i < n; i++)
	{
		if (s[i] == '0')
		{
			if (cnt[1] > 0)
				cnt[1]--, t++; 
			else
    			break;
		}
		else
		{
			if (cnt[0] > 0)
				cnt[0]--,t++;
            else
				break;
		}
	}
	std::cout << n - t <<std::endl;
}

标签:Educational,Rated,++,Codeforces,else,break,--,cnt,数目
From: https://www.cnblogs.com/kdlyh/p/17913506.html

相关文章

  • 【题解】CodeForces-1913
    CodeForces-1913ARatingIncrease依题意模拟。提交记录:Submission-CodeForcesCodeForces-1913BSwapandDelete交换免费就是能任意重排,从头开始尽量填相反的,剩下只能删去了。提交记录:Submission-CodeForcesCodeForces-1913CGamewithMultiset从大到小能减则减一定......
  • 【题解】CodeForces-1905
    CodeForces-1905AConstructiveProblems发现沿着对角线放就行了,答案是\(\max(n+m)\)。提交记录:Submission-CodeForcesCodeForces-1905BBegginer'sZelda最优操作每次删两个叶子(除了最后一次只剩两个节点),所以答案是叶子个数除以二上取整。提交记录:Submission-CodeForc......
  • k8s - error: 0/1 nodes are available: 1 node(s) had untolerated taint
     WarningFailedScheduling89sdefault-scheduler0/1nodesareavailable:1node(s)haduntoleratedtaint{node.cloudprovider.kubernetes.io││/uninitialized:true}.preemption:0/1nodesareavailable:1Preemptionisnothelpf......
  • class sun.reflect.GeneratedConstructorAccessor2 cannot access its superclass sun
    在启动JFinal程序时报错classsun.reflect.GeneratedConstructorAccessor2cannotaccessitssuperclasssun.reflect.Constructor问题所在因为这个项目的原作者是使用eclipse编写的,idea和eclipse的启动机制不一样,由于eclipse并没有自动实现热加载机制,因此这里我们需要加上......
  • Codeforces Round 834 (Div. 3)
    CodeforcesRound834(Div.3)A.Yes-Yes?题意:就是Y后面跟e,e后面跟s,s后面跟Y#include<iostream>usingnamespacestd;voidsolve(){stringx;cin>>x;intl=x.size();if(l==1){if(x[0]!='Y'&&x[0]!='e&#......
  • Codeforces Round 839 (Div. 3)
    CodeforcesRound839(Div.3)A.A+B?跳过太水了、、、、、#include<bits/stdc++.h>usingnamespacestd;intmain(){intt;cin>>t;while(t--){inta,b;scanf("%d+%d",&a,&b);cout<<a+......
  • Educational Codeforces Round 131 (Rated for Div. 2)
    基本情况AB秒了。C知道是二分答案,check死活写不出来。C.ScheduleManagementProblem-C-Codeforces错误分析这题比较绕,搞了一个对应关系,大脑转不过来。写check的时候完全想不出合理的思路。很明显的要用桶来计数,但是怎么用不知道了。看了题解后发现,check不能遍历任......
  • Educational Codeforces Round 159 (Rated for Div. 2)
    EducationalCodeforcesRound159(RatedforDiv.2)A-BinaryImbalance解题思路:有一对\((0,1)\),那么\(0\)就能无限增长。代码:#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;constintN=2e5+10;typedefpair<ll,ll>pii;constllm......
  • Codeforces Round 915 (Div. 2)
    基本情况A题还没进入状态,卡了快10分钟。B题一开始想复杂了,以为是树的直径,后面推出来发现针对叶子数目讨论就行了,正确思路出来太慢了(一个半小时)。C题留了半个多小时,随便口胡了一个LIS思路,但是判断无解没思路。C.LargestSubsequenceProblem-C-Codeforces首先我们把字......
  • Educational Codeforces Round 134 (Rated for Div. 2)
    基本情况AB秒了。C搞了一个错的二分答案,虽然过样例了。C.Min-MaxArrayTransformation错误分析没有进一步推导性质,而是觉得数据单调递增估计是二分,然后就无脑写,实际上check的正确性没有保证。boolcheck(intind,intnow){ if(ind==now)returntrue; if(b[ind]......