2024CCPC补题

C. CCPC

链接:Problem - C - Codeforces

思路:已知C和P的数量,CCP看成一组,C可以重复匹配。min找最多能匹配的数量

代码:

#include<bits/stdc++.h>
using namespace std;
int cntc=0,cntp=0;
int main()
{
	string s;
	cin>>s;
	int a=s.size();
	for(int i=0;i<a;i++){
		if(s[i]=='C') cntc++;
		if(s[i]=='P') cntp++;
	}
	if(cntc<3||cntp<1) cout<<0;
	else cout<<min(cntp,abs((cntc-1)/2));
	return 0;


}

H. Square Root

链接:Problem - H - Codeforces

思路:找规律 ,多枚举几个s,  注意每次都要更新 i 值 和 cnt 值

代码:

#include<bits/stdc++.h>
using namespace std;
int cnt1;//记录连续1的数量
double b,anso,ansj,sum;
int main()
{
	string s;
	cin>>s;
	int a=s.size();
	for(int i=0;i<a;i++){
		if(s[i]=='1'){
			for(int j=i;j<a;j++){
				if(s[j]=='1') cnt1++;
				else
					break;//结束本轮循环,找下一个1
				i = j;//注意更新i的值
			}
		}
		if(cnt1%2==0 && cnt1) {//cnt是偶数且大于0
			b=cnt1/2-1;
			anso=b+sqrt(2.0);
			sum+=anso;
		}
		if(cnt1%2!=0 && cnt1){
			ansj=cnt1/2+cnt1%2;
			sum+=ansj;
		}
		cnt1=0;//注意更新每个连续的1的数量
	}
	printf("%.11lf",sum);
	return 0;
}

 

posted @ 2024-11-05 20:26  hanbaodao  阅读(2)  评论(0编辑  收藏  举报