首页 > 其他分享 >2023/02/21刷题

2023/02/21刷题

时间:2023-02-21 22:24:23浏览次数:53  
标签:02 21 int res ++ 次数 flag include 刷题

A. k-String

链接

A. k-String

我们先统计全部字母的数量,然后根据k的值来确定k次重复的每次字母的数量,之后生成字符串

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <vector>
#include <cstring>
#include <unordered_set>
#include <set>
#include <stack>
#include <map>
#include <cmath>
#include <sstream>
#include <queue>
#define int long long
#define yes cout<<"YES"<<'\n'
#define no 	cout<<"NO"<<'\n'

using namespace std;

int st[30];
signed main () {
	ios::sync_with_stdio(false);
	int k;
	cin >> k;
	string s;
	cin >> s;
	for (int i = 0; i < (int)s.size(); i++) {
		st[s[i] - 'a']++; //统计每个字符的数量
	}
	int flag = 1;
	for (int i = 0; i <= 29; i++) { //统计每个字符的数量都可以被k整除
		//只要有一个不能被整除就不能构成k个相同的字符串
		if (st[i] % k != 0) {
			flag = 0;
			break;
		}

	}
	if (flag == 1) {
		string res;
		int num = k;
		while (num--) {//生成k个字符
			for (int i = 0; i < 30; i++) {
				if (st[i] != 0) {
					int cnt = st[i] / k;//看当前字符每一次需要个
					string temp;
					while (cnt--) {
						temp = temp + (char)(i + 'a');//生成当前的字符串
					}
					res = res + temp;//让res加上这个字符串
				}
			}
		}

		cout << res << '\n';//打印结果
	} else {
		printf("-1");//否则打印-1
	}












	return 0;
}

B. Petr and a Combination Lock

链接

B. Petr and a Combination Lock

这个题想了半天没有好方法看了一下竟然是暴力枚举时间复杂度是2的15次方.我直接进行dfs枚举答案

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <vector>
#include <cstring>
#include <unordered_set>
#include <set>
#include <stack>
#include <map>
#include <cmath>
#include <sstream>
#include <queue>
#define int long long
#define yes cout<<"YES"<<'\n'
#define no 	cout<<"NO"<<'\n'

using namespace std;
int n;
int a[20];
int flag = 0;

int res = 0;
void dfs(int x) {
	if (x > n) { //当递归结束的时候检查一下满不满足要求
		if (res == 0 || res % 360 == 0) { //满足要求让flag++
			flag++;
		}
		return ;
	} else { //不满足条件进行递归
		int temp = res;
		res = res + a[x]; //让res+a[x]
		dfs(x + 1); //递归到下一层
		res = temp; //恢复现场
		res = res - a[x]; //让res-a[x]
		dfs(x + 1); //递归到下一层
		res = temp; //恢复现场


	}








}


signed main () {
	ios::sync_with_stdio(false);

	cin >> n;
	for (int i = 0; i < n; i++) {
		cin >> a[i];

	}
	dfs(0);
//检查一下满足条件的个数

	if (flag == 0) {
		no;
	} else {
		yes;

	}







	return 0;
}

A. Level Statistics

链接

A. Level Statistics

这个题就是统计比赛的每个时间点比赛的总数和比赛通过关的次数是不是合法,首先比赛进行的次数一定是大于等于比赛通关的次数的,两种情况后面的时间点的次数一定大于前面时间点的次数.然后两个时间点的差比赛次数一定大于等于通关次数

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <vector>
#include <cstring>
#include <unordered_set>
#include <set>
#include <stack>
#include <map>
#include <cmath>
#include <sstream>
#include <queue>
#define int long long
#define yes cout<<"YES"<<'\n'
#define no 	cout<<"NO"<<'\n'

using namespace std;

struct data { //定义结构体

	int x, y;


};
struct	data a[105];
signed main () {
	ios::sync_with_stdio(false);

	int t;
	cin >> t;
	while (t--) {


		int n;
		cin >> n;
		for (int i = 0; i < n; i++) {
			cin >> a[i].x;
			cin >> a[i].y; //读入数据
		}
		int flag = 1;
		if (a[0].x < a[0].y) { //第一种情况比赛次数小于通关次数
			flag = 0;
			no;
			continue;
		}
		for (int i = 1; i < n; i++) { //下面是非法情况

			if (a[i].x < a[i - 1].x) { //x的后面时间点小于前面时间点
				flag = 0;
				break;
			}
			if (a[i].y < a[i - 1].y) { //y的后面时间点小于前面时间点
				flag = 0;
				break;
			}
			if (a[i].x < a[i].y) { //通关次数大于比赛次数
				flag = 0;
				break;
			}
			if (a[i].y - a[i - 1].y > a[i].x - a[i - 1].x) { //前后时间点通关次数大于了比赛次数
				flag = 0;
				break;
			}




		}

		if (flag == 0) {
			no;
		} else {
			yes;

		}




	}



	return 0;
}

标签:02,21,int,res,++,次数,flag,include,刷题
From: https://www.cnblogs.com/harper886/p/17142697.html

相关文章

  • 2.21学习体会
    今天学习了“添加”的内容:packagedailysummer;importjava.sql.DriverManager;importjava.sql.Connection;publicclassMain{publicStringtitle;publicString......
  • 2023年2.21软件工程日报
    今天一共有7节课,在上午,我们系统学习了数据库原理,知道了数据库的概论,知道了数据库系统的特点,还有数据管理技术的发展。数据库系统的特点;数据结构化共享性高,易于扩充数......
  • 2023/2/20号周二总结
     今天上午满课,上了英语口语和数据库原理,下午是刘立嘉老师的python课,数据库原理课上老师讲述了一些mysql的知识。下午上完课之后出学校和室友一起在学校周边转了转,之后去......
  • 2023,2,21日
    今天早上上了英语课,数据库原理,对数据库原理的学习格外的重视,上课听杨老师讲解他的开发流程,感触很深,对数据库的操作工作以后可能得用orm,感到需要学得东西还很多。今天和舍......
  • 2023.2.21——软件工程日报
    所花时间(包括上课):8.5h代码量(行):0行博客量(篇):2篇今天,上午上了英语提高与数据库原理及应用教程,下午上了python,晚上学习了数学建模。我了解到的知识点:1.数据库设置数据类型......
  • 每日记录2023.02.21(二)
    今天学习了servlet的使用,实现了数据的添加和更新,但是遇到了404和500的问题,发现404的我问题可以在jsp文件中的<formaction="/StudentBiz"method="get">加一个”/“就可以......
  • 2023年2月21号
    今天自己手动创建一个新项目并连接上了数据库。                   今天学习时间是一个小时,最近几天准备把代码写一下,争取在这周......
  • 2月21日每日总结
    今日学习了JavaScript相关内容的学习,今日学习的内容是变量和数据类型JavaScript是一门弱类型语言,变量可以存放不同类型的值变量名需要遵循如下规则:组成字符可以是任何字母......
  • vue-cil02
    今日内容props其他#安装依赖 cnpminstall#做成纯净的vue项目 -在router的index.js中删除about的路由 -删除所有小组件和about页面组件 -App.vue上只保留......
  • 2023.2.21周二每日总结
    今天依旧在钻研增删改查里面的增,白天上课到时候听了数据库原理老师的课,对数据库的操作有了更进一步的认知,逐渐明白如何往数据库中添加和修改信息,但是这和从网页录入的信......