首页 > 其他分享 >acm 专题一

acm 专题一

时间:2025-01-23 14:23:12浏览次数:1  
标签:std 专题 int cin acm ++ using include

一、第一题
代码:

#include<iostream>
using namespace std;
#include<string>
int main()
{
	int n;
	cin>>n;
	string s(n,'o');
	cout<<'L'<<s<<"ng";
	return 0;
}

思路:通过字符串s实现‘o’的n次复制,然后输出
二、第二题
代码:

#include<iostream>
using namespace std;
#include<string>
int main()
{
	int n,i,len;
	cin>>n;
	string s;
	for(i=0;i<n;i++)
	{
		cin>>s;
		for(auto& ch :s)
		ch=toupper(ch);
		if(s=="YES")
		cout<<"yes\n";
		else
		cout<<"no\n";
	}
	return 0;
}

思路:输入字符串后,用toupper函数实现所有字母的大写转化,来以此跟“YES”进行比较,判断是否符合任意大小写的yes
三、第三题
代码:

#include<iostream>
#include<string.h>
using namespace std;
int main()
{
	int n,i,len;
	cin>>n;
	char s[65];
	for(i=0;i<n;i++)
	{
		cin>>s;
		len=strlen(s);
		if((s[len-1]-'0')%2!=0)
		cout<<"odd\n";
		else
		cout<<"even\n";
	}
	return 0;
}

思路:用数组s存储数字,可以避免范围不足问题,通过strlen函数测量出数组长度后,可以直接访问该数字的个位数字,通过个位数字的奇偶判断整个数的奇偶性
四、第四题
代码:

#include<iostream>
#include<string.h>
using namespace std;
int main()
{
	int n,t,m,i,j;
	cin>>t;
	char s[51]={'\0'};
	for(i=0;i<t;i++)
	{
		int a[7]={0},sum=0;
		cin>>n>>m;
		cin>>s;
		for(j=0;j<n;j++)
		a[s[j]-'A']++;
		for(j=0;j<7;j++)
		{
			if(a[j]<m)
			sum+=m-a[j];
		}
		cout<<sum<<endl;
	}
	return 0;
}

思路:用数组a来存储七个字母在字符串中分别出现的次数,通过与m的比较,若不足m次就要将其加进需要想的问题数量sum中,最后的sum就是题目所求
五、第五题
代码:

#include<iostream>
using namespace std;
int main()
{
	int n,m,k,i,j,a;
	float sum1,sum2=0;
	cin>>n>>m>>k;
	for(i=0;i<m;i++)
	{
		sum1=0;
		for(j=0;j<n;j++)
		{
		cin>>a;
		if(a==k)
		sum1++;
		}
		if(sum1>=n*1.0/2)
		sum2++;
	}
	if(sum2>=m*1.0/2)
	cout<<"YES";
	else
	cout<<"NO";
	return 0;
}

思路:sum1代表一天里遵守规则k的人,sum2代表规则k符合民意的天数,若sum1值大于等于人数的一半,该规则符合民意,sum2++,若sum2值大于等于总天数的一半,规则k就是正确的,输出YES,反之输出NO
六、第六题
代码:

#include<iostream>
#include<string>
using namespace std;
int main()
{
	int n, q, i, j;
	string s;
	char c, d,table[26];
	cin >> n >> s >> q;
	for (i = 0; i < 26; i++)
		table[i] = 'a' + i;
	for (i = 0; i < q; i++)
	{
		cin >> c >> d;
		if (c == d)
			continue;
		for(j=0;j<26;j++)
			if(table[j]==c)
				table[j] = d;
	}
	for (char& ch : s)
		ch = table[ch - 'a'];
	cout << s;
	return 0;
}

思路:table数组存的是26个字母,将字符变动的操作作用在字母表上,可以直观反映每个字母的变化,若字母与c相等,就将其置换成d,每个字母变换过后,就可以运用到字符串中,使字符串的每个字母也进行相应的变化,一次到位
七、第七题
代码:

#include<iostream>
#include<vector>
#define N 1001
using namespace std;
int main()
{
	int n, m, i, j, op, x, y,l,row[N],line[N];
	cin >> n >> m;
	vector<vector<int> > chart(N, vector<int>(N));
	for (i = 0; i < n; i++)
		for (j = 0; j < n; j++)
			cin >> chart[i][j];
	for (i = 0; i < n; i++)
		row[i] = line[i] = i;
	for (l = 0; l < m; l++)
	{
		cin >> op >> x >> y;
		if (x == y)
			continue;
		if (op == 0)
			swap(row[x - 1], row[y - 1]);
		else
			swap(line[x - 1], line[y - 1]);
	}
	for (i = 0; i < n; i++)
		for (j = 0; j < n; j++)
		{
			cout << chart[line[i]][row[j]]<<' ';
			if (j == n - 1)
				cout << endl;
		}
	return 0;
}

思路:用vector动态数组chart将方阵存下,而后用row和line数组标记每行每列,如同建立坐标系一般,而后通过用swap函数对行列的交换操作侧面反映方阵的操作,既直观又节省时间,然后以类似坐标的形式将操作后的方阵输出

学习总结:首次接触c++,并用c++编写程序,对我造成了一定的困难,好在跟c语言的类似性,代码逐步走上正轨;做题的过程中,我深深感受到了思维不能被限制的重要性,在hard难度下的两道题,最开始自己做总是超时,对优化也毫无头绪,在他人以及评讲的帮助下,我才幡然醒悟,有时候顺着题目走反而会走入死胡同,将思维跳脱可能才能看到正确的道路。

标签:std,专题,int,cin,acm,++,using,include
From: https://www.cnblogs.com/astronomyyy/p/18687708

相关文章

  • 【动态规划】01背包专题
    01背包在恰好等于的情况下求最小物品数MELON的难题每个物品(石头)的价值w[i]就是其自己的个数,为1体积题目已给出。状态定义:f[i][j]表示在前i个物品中选,且体积总和恰好等于j需要的物品个数的最小值初始化:f[i][0]=0,1<=i<=nf[0][j]=INF,1<=j<=m,答案是f[n][m]......
  • 102400118 林嘉祚 集训第一专题
    AC截图1、LongLoong本题易知字符串开头为L,结尾为ng,唯一不同的是中间o的个数,于是想到用3个字符串拼接得到目标字符串。(直接用for循环输出似乎更简单)#include<iostream>#include<string>usingnamespacestd;intmain(){ intn; cin>>n; stringstr="L"; stri......
  • 零基础ACM学习的第一天
    importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){ //TODOAuto-generatedmethodstub Scannersc=newScanner(System.in); intt=sc.nextInt(); System.out.print("L"); for(inti=0;i<t;i++){ System.out.p......
  • ACM寒假线上集训第一次总结
    第一题这一题就是想到最简单的循环结构总结:看了学长大人的代码后发现自己的代码还是不够简洁第二题这题的想法是干脆直接转化成大写比较总结:试着使用了C++的string类以及新的遍历方式,有点牛逼的第三题这题就常规字符串,看末尾字符代表的数字奇偶总结:刚刚开始把.back()写......
  • 组合计数与构造专题
    CF1824B2\(k\)为奇数时,注意到每次好点移动一格至少会增加$\lfloor\frac{k}{2}\rfloor+1-\lfloor\frac{k}{2}\rfloor$的长度,所以好点个数为\(1\)。\(k\)为偶数时,注意到好点一定在一条链上,我们计算出有多少条边\((u,v)\)满足\(u\)和\(v\)为好点,答案就是边数......
  • Thanos源码专题精讲——Thanos Sidecar release-0.26 源码阅读和分析
    ThanosSidecarrelease-0.26源码阅读和分析https://github.com/thanos-io/thanos/blob/release-0.26一、整体架构ThanosSidecar作为Prometheus的伴生容器运行,主要负责:Prometheus健康检查提供HTTPAPI查询接口提供gRPC查询服务数据块上传到对象存储最近......
  • dfs专题一:递归
    dfs简介:1.汉诺塔问题link:面试题08.06.汉诺塔问题-力扣(LeetCode)codeclassSolution{public:voidhanota(vector<int>&A,vector<int>&B,vector<int>&C){dfs(A,B,C,A.size());}voiddfs(vector<int>&......
  • MATLAB专题4 函数
    目录一、函数声明二、函数调用三、匿名函数四、递归函数函数:一个能够实现特定功能的逻辑模块一、函数声明注意基本结构与一些注意事项:函数声明的下一行可以添加注释,可在命令行用help或者lookfor调用二、函数调用注意三种变量:1.局部变量:函数中的变量函数结束后......
  • 老榕树的Java专题:Java 中如何实现异步
    在Java编程中,异步操作是一项关键技术,它允许程序在执行某些耗时任务时,不会阻塞主线程,从而提高整体的性能和响应性。本文将探讨Java中实现异步的几种常见方式。一、使用Thread类Java的Thread类是实现异步的基础方式。通过创建一个继承自Thread类的子类,并在run方法中定义......
  • 2025寒假哈工大ACM集训_最小生成树
    好不容易终于做完了,(最后一题是黑题并且还是数学不想做)所谓“做了不总结==没做”,特此写一下常用函数和思路吧。一些基本模板函数:longlongfindroot(longlongx){returnx==rt[x]?x:rt[x]=findroot(rt[x]);}voidun(longlongx,longlongy){rt[findro......