第十八届东北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 复制代码
相关推荐
Xの哲學4 分钟前
Linux UPnP技术深度解析: 从设计哲学到实现细节
linux·服务器·网络·算法·边缘计算
歌_顿5 分钟前
GPT 系列学习总结(1-3)
算法
业精于勤的牙8 分钟前
最长特殊序列(三)
算法
柏木乃一8 分钟前
进程(6)进程切换,Linux中的进程组织,Linux进程调度算法
linux·服务器·c++·算法·架构·操作系统
皮卡蛋炒饭.8 分钟前
前缀和与差分
算法
Trouvaille ~13 分钟前
【Linux】从磁盘到文件系统:深入理解Ext2文件系统
linux·运维·网络·c++·磁盘·文件系统·inode
0x7F7F7F7F26 分钟前
算法竞赛数学知识大全
算法
superman超哥1 小时前
仓颉锁竞争优化深度解析
c语言·开发语言·c++·python·仓颉
业精于勤的牙1 小时前
最长特殊序列(二)
java·开发语言·算法
yong99901 小时前
C#实现OPC客户端与S7-1200 PLC的通信
开发语言·网络·算法·c#