题意及思路
- 题意:求给定两个数中,输出加减乘中最大的那个数。
- 思路:😏简单题,为了代码简洁,使用了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; }