第十八届东北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 复制代码
相关推荐
saltymilk7 小时前
C++ 模板参数推导问题小记(模板类的模板构造函数)
c++·模板元编程
感哥8 小时前
C++ lambda 匿名函数
c++
沐怡旸14 小时前
【底层机制】std::unique_ptr 解决的痛点?是什么?如何实现?怎么正确使用?
c++·面试
感哥14 小时前
C++ 内存管理
c++
聚客AI14 小时前
🙋‍♀️Transformer训练与推理全流程:从输入处理到输出生成
人工智能·算法·llm
大怪v17 小时前
前端:人工智能?我也会啊!来个花活,😎😎😎“自动驾驶”整起!
前端·javascript·算法
惯导马工19 小时前
【论文导读】ORB-SLAM3:An Accurate Open-Source Library for Visual, Visual-Inertial and
深度学习·算法
骑自行车的码农20 小时前
【React用到的一些算法】游标和栈
算法·react.js
博笙困了20 小时前
AcWing学习——双指针算法
c++·算法
感哥21 小时前
C++ 指针和引用
c++