题意及思路

  • 题意:求给定两个数中,输出加减乘中最大的那个数。
  • 思路:😏简单题,为了代码简洁,使用了max函数。这题感觉就是考输入输出(牵强)😅

代码

#include<bits/stdc++.h>

using namespace std;

int main()
{
    std::ios::sync_with_stdio(false);
    cin.tie(0);
    int a,b;
    cin >> a >> b;
    int ans = max(a+b,a-b);
    ans = max(ans,a*b);
    cout << ans << endl;
    return 0;
}



题意及思路

  • 题意:一整数序列,其中k个连续的数字标记的石头涂成黑色,求的是,所以可能涂成黑色的石头编号的升序排列,其中会给出一个必定是涂黑的石头x。
  • 思路:😄不难发现的是,包括x在内,一共有k个连续的数被涂成黑色,😚那么可能的区间便是x-(k-1) 到 x+(k-1)闭区间。只需要将其输出即可。

代码

#include<bits/stdc++.h>

using namespace std;

int main()
{
    std::ios::sync_with_stdio(false);
    cin.tie(0);
    int k,x;
    cin >> k >> x;
    for(int i=x-(k-1);i<=x+(k-1);i++){
        cout << i;
        if(i<x+(k-1)) cout << " ";
    }
    cout << endl;
    
    return 0;
}





题意及思路

题意:给出n个字符串,求有多少对完全相同的字符串(即字符串的字典序相同)。
思路:😊对于每一个字符串,先将其本身字典序化。😉将处理后的字符串加入到数组。🙄再将数组集合排序。😏最后,处理字符串集合,处理方式是,先找到相同的字符串个数,根据组合原理,前面有nans个字符串相同,则这nans个字符串能组合出 nans*(nans-1)/2个对。😶举例说明,三个相同字符串,则有3种组合方式。当然了,题目要求的是 si<sj,意思就是不重复选择。

代码

#include<bits/stdc++.h>

using namespace std;

int main()
{
	std::ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    cin >> n;
    string s;
    vector<string> q;
	 
    for(int i=0;i<n;i++){
    	cin >> s;
    	sort(s.begin(),s.end());
    	q.push_back(s);
	}
	sort(q.begin(),q.end());
	
//	cout << endl;
//	for(int i=0;i<q.size();i++){
//		cout << q[i] << endl;
//	}
//	cout << endl;
	
    long long ans = 0;
    long long nans = 1;
    
    for(int i=1;i<q.size();i++){
    	if(q[i]!=q[i-1]){
    		ans += nans*(nans-1)/2;
    		nans = 1;
		}else{
			nans++;
		}
	}
    ans += nans*(nans-1)/2;
    cout << ans << endl;
	    
	return 0;
}