Educational Codeforces Round 82 (Rated for Div. 2)

A.
题意:就是删去多少个零使得所有的1连在一起

思路:我的思路是记录每个1出现的位置,然后在进行遍历得到每相邻的1之间的距离。然后都加起来输出就行了

我看我cao lao的思路是得到1最开始出现的位置跟最后出现的位置,然后计算之间的零。这里我觉得还可以改进,就是从找到第一个1的位置到最后一个1的位置之间的0,1串累加,然后末减初,计算差值就是解了
可以试试

#include<bits/stdc++.h>

#define inf 0x3f3f3f3f


using namespace std;

int b[105];
string s;

int main(){
	int t;
	cin>>t;
	while(t--){
		cin>>s;
		int k = 0;
		int l = s.length();
		//int flag = 0;
		for(int i=0;i<l;i++){
		   if(s[i] == '1'){
		   	  b[k] = i;//记录每个1的位置 
		   	  k++;
		   }
		}
		if(k == 0){//没有出现1 
			cout<<0<<endl;
			continue;
		}
		int res;//每对1之间距离 
		int ans = 0;//总的删去的0 
		for(int i=0;i+1<k;i++){
			res =  b[i+1]-b[i]-1; 
			ans += res;
		}
		if(!ans) cout<<0<<endl; 
		else{
			cout<<ans<<endl;
		}
	}
	return 0;
} 

B
题意:就是修公路,n长,然后天好修得到的是高质量的路,天不好修得到的是低质量的路,G天好,B天不好,你想得到一半以上的高质量的路,然后问你至少需要多少天

思路;先计算需要高质量的公路多长,然后如果G>=所需要的高质量的路的话,那么就至少需要N天,因为从一开始就把你的要求完成了,后面的质量怎么样也无所谓了。如果不是的话。那么这个时候我们需要判断的是需要多少个G,这里也存在两种情况,一者正好是G的倍数,那么需要…不想解释了,看代码吧

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

ll n,g,b;
ll ans;
        
int main()
{   
    ll t;
	cin>>t;
	while(t--)
    {   
        
		cin>>n>>g>>b;
		ll res=(n+1)/2;
		
		if(res<=g)
			cout<<n<<endl;
		else 
		{
			ll num=res/g;
			
			if(res%g==0)
				ans=(num-1)*(g+b)+g; 
			else 
				ans=(num)*(g+b)+res%g;
				
			cout<<max(ans,n)<<endl;
		}
	}
	
	return 0;
}

C.题意:就是把26个英文字母排序,好在输入密码的时候可以密码的字母都是挨着的

思路:这个题啊,我写了近100行,愣是把自己写迷了,我简单说下我的思路,就是我首先把小写字母都转换成了数字,然后我就先判断每次相邻两个数字是否相等,这里以来,相等的话打破循环然后输出NO,cnotinue;进入下组数据,然后后面的话,我是每次取两个数,…然后不记得怎么了,把自己搞迷了,算了算了

后来又写了个W2…

结束了有dalao说是双向链表!!!
好吧,确实没想到

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
char str[205],ans[105];
bool vis[105];

int main()
{
	int T;  scanf("%d",&T);
	while (T--)
	{
		scanf("%s",str+1);
		int n=strlen(str+1),l=27,r=27,now=27,flag=0;
		ans[l]=str[1];
		memset(vis,0,sizeof(vis));
		vis[str[1]-'a']=1;
		for (int i=2;i<=n;i++)
		{
			if (now>l&&ans[now-1]==str[i])
                now--;
			else if (now<r&&ans[now+1]==str[i])
                now++;
			else if (now==l&&!vis[str[i]-'a'])
                ans[--l]=str[i],now--,vis[str[i]-'a']=1;
			else if (now==r&&!vis[str[i]-'a'])
                ans[++r]=str[i],now++,vis[str[i]-'a']=1;
			else
			{
			    flag=1;
                break;
            }
		}
		if (flag)
            puts("NO");
		else
		{
			puts("YES");
			for (int i=l;i<=r;i++)
                putchar(ans[i]);
			for (int i=0;i<26;i++)
				if (!vis[i]) putchar(i+'a');
			puts("");
		}
	}
	return 0;
}

D.题意就是给一个袋子跟N个元宝,然后元宝可以对半分割,问能否将袋子装满。

思路:贪心

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main()
{
	int t;cin>>t;
	while (t--)
    {
        ll s,n,m,x,ans;
		cin>>n>>m;
		s=ans=0;
		multiset<ll,greater<ll>> f;
		while (m--)
        {
            cin>>x;
            s+=x;
            f.insert(x);
        }
		if (s<n)
            cout<<"-1"<<endl;
		else
		{
			while(n)
			{
				m=*f.begin();
				f.erase(f.begin());
				if(m<=n)
				{
				    n-=m;
				    s-=m;
				}
				else if(s-m<n)
                {
                    ans++;
                    f.insert(m/2);
                    f.insert(m/2);
                }
				else
                    s-=m;

			}

			cout<<ans<<endl;
		}
	}
}


全部评论

相关推荐

政委qqq:这道题在算法竞赛里唯一考的就是高精度,但是只能难住C++这类语言,Python直接a+b秒天秒地
点赞 评论 收藏
分享
“无名小卒,还是名扬天下?”我知道很多人都不觉得我能走到今天这一步,当然,也包括我自己。在我的人生里,有两部作品刻下了最深的烙印:《斗破苍穹》与《龙族》。它们总被人拿来对照:一边是萧炎的桀骜轻狂,一边是路明非的怯懦衰颓。有人说,天蚕土豆没见过魂天帝,但江南见过真凯撒。我时常觉得,自己就是那个衰小孩路明非。可路明非可以开挂,我不可以;我也无数次幻想过,能拥有萧炎那般年少轻狂的人生,可我没有他与生俱来的逆天天赋。我只是个平庸的普通人,一个看过《斗破苍穹》却开不了挂的路明非,只能一步一步往上爬。从我下定决心找实习的那一刻起,我就给自己定下了目标:“我一定要为字节跳动卖命.jpg”。萧炎有他的三年之约,我有我的两年半之约(其实是一年半)。2024.11.20,科大讯飞的第一封实习offer落进邮箱,我迈出了这场奔赴的第一步。2025.8.18,放弃百度转正的安稳机会,转身走进前路未卜的不确定里。我很感谢我在百度的mentor,是她从茫茫人海选中了我,给了我大厂实习的机会。即便有段时间我状态差、产出不理想,她依旧愿意认可我、希望我留下转正。2025.11.14,我选择走进字节跳动,以实习生的身份重新出发。2026.3.25&nbsp;-&nbsp;3.31,一周速通上海飞书,幸遇赏识我的伯乐,斩获Special&nbsp;Offer。被告知面试通过的那一刻,我的内心无比平静,就像这个offer本就该属于我。不是侥幸,是应得的。这一路,有人看轻过我的出身,不相信我能走到这里;也有人在我看不见前路的时候,替我举过灯。没有他们的鼓励与支撑,就没有今天站在这里的我。我看到了自强不息的激荡,那是一个双非的伟大乐章!我是雨夜迈巴赫,我要开启属于我的新篇章了。
在看牛客的本杰明很勇...:真心祝贺l总 我永远的偶像 我滴神
春招至今,你收到几个面试...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务