第十八届东北CCPC程序设计竞赛题解

文章目录

    • [A: Paper Watering](#A: Paper Watering)
    • [E: Checksum](#E: Checksum)
    • [L: Bracket Generation](#L: Bracket Generation)
    • [I: password(待补)](#I: password(待补))

A: Paper Watering

解题思路:

​ 该题很简单,但有一个需要考虑到的,就是当一个数 n 不是完全平方数的时候,那么他执行 1 操作之后再执行 2 操作之后,所得到的值和之前的不同,那么就需要再进行处理。

解题代码:

cpp 复制代码
void Solved() {	
	int n, k; cin >> n >> k;
	int ans = 0;
	if(n == 1){
		cout << 1 << endl;
		return ;
	}
	int temp = 0;
	while(n != 1 && temp < k) {
		temp ++;
		int t = (int)sqrt(n);
		ans ++;
		if(t * t != n && t != 1) ans += k - temp;
		n = t;
	}
	cout << ans + k + 1 << endl;
}

E: Checksum

解题思路:

​ 该题看到时间复杂度可以看出来是用的遍历,对k进行枚举,然后进行判断就行了。该题可以用到bitset,代码更简洁。

解题代码:

cpp 复制代码
void solve() {
	int n,k;
	cin >> n >> k;
	int len = 0;
	for(int i = 1; i<= n; i++){
		char a; cin >> a;
		if(a == '1') len ++;
	}
	for(int i = 0; i <= k; i++){
		int sum = len + i;
		bitset<32> d(sum);
		int dd = 0;
		for(int j = 0; j < k; j ++ )  if(d[j] == 1) dd ++;
		if(dd == i) {
			for(int j = k - 1; j >= 0; j -- ) {
				cout << d[j];
			} cout << endl;
			return ;
		}		
	}
	cout << "None" << endl;
}

L: Bracket Generation

解题思路:

​ 该题赛时没写出来。。。当时就想着怎么进行排列了,没想到顺序这回事。

因为这只有两种情况:

  1. 在序列后加一个括号
  2. 选取合法的括号,将其中括号包裹住。

那么括号的排列是有一定的顺序的,就比如那个最小的括号一定是在包裹它的括号后面,如下图所示:

​

​ 就上图,该图中那前两个1一定是在第一个2的后面,前四个1一定是在第二个2的前面,这个顺序是固定的,那么只要满足前面1的顺序,后面的2在后面的顺序就可以随便放了。

解题代码:

cpp 复制代码
void solve() {
	string str;
	cin >> str;
	vector<int> vec;
	vector<int> a;
	for(int i = 0; i < str.size(); i++){
		if(str[i] == ')' && str[i - 1] == '('){
			a.push_back(1);
		}else if(str[i] == ')'){
			a.push_back(2);
		}
	}
	reverse(a.begin(),a.end());
	int res = 1,cnt = 0;
	for(int i = 0; i < a.size(); i++){
		cnt ++;
		if(a[i] == 2){
			res = res * cnt % mod;
		}
	}
	cout << res << endl;
}

I: password(待补)

解题思路:
解题代码:

cpp 复制代码
相关推荐
潼心1412o39 分钟前
C++初阶(长期更新)第6讲:类和对象(下)
开发语言·c++·算法
星光开发者1 小时前
基于决策树随机森林算法的小说推荐系统的设计与实现-计算机毕设【课程设计】78485
vue.js·算法·微信小程序·django·php·课程设计·express
-森屿安年-1 小时前
按身高排序
c++·算法
程序员清风1 小时前
算法与数据结构入门:复杂度、数组与链表
数据结构·算法·链表
无定义_2 小时前
Codeforces Round 1124 (Div. 2)
算法
(Charon)2 小时前
【C++面试】vector底层原理:扩容、拷贝移动与迭代器失效
c++·面试
Hyazinth2 小时前
【题解】CF2170C Quotient and Remainder
题解
朔北之忘 Clancy3 小时前
青少年软编等考七级题解目录
开发语言·c++·青少年编程·gesp·csp·信奥赛·noi
汉克老师3 小时前
GESP2026年9月认证C++七级( 第一部分选择题(8~15题)精讲
c++·gesp·小学生·学c++编程
Mr_Macallon3 小时前
C++回顾(基础)(01)
c语言·开发语言·c++·学习