A. Prime Subtraction Codeforces 1238A
题意: 给出两个数 A , B A,B A,B,询问 ∣ A − B ∣ |A-B| ∣A−B∣是否是素数的倍数。
思路:
这题涉及一点小数论,每个数都能进行质因数分解(除了1),所以只要A-B不为1就输出YES,否则输出NO
B. Kill 'Em All 1238B
题意:
在坐标 x x x的地方扔炸弹,位于 x x x的地方的怪会直接去世,若不位于,则会被爆炸冲击波击退 k k k个单位
思路: 排序去重,从最大的 x x x开始扔炸弹即可。
C. Standard Free2play (模拟)
题意: 一个人位于 h h h的板子上,通过一些操作(拉动拉杆,使得 h 和 h − 1 h和h-1 h和h−1的踏板状态改变,如果原来是出来的,现在收回去),或者通过使用石头使得任意的踏板改变状态,达到高度 0 0 0,问最小用多少个石头。
思路: 如果直接模拟h (1e9)会超时,注意到告诉你踏板的状态只有n(1e5),于是就从这个角度入手。
看下一个踏板的高度和当前高度,如果说下一个踏板的高度不是 n o w H e i g h t − 1 nowHeight-1 nowHeight−1,那么可以直接从 h h h高度跳到 H n x t − 1 H_{nxt}-1 Hnxt−1,反之需要判断以下,具体看代码
#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5+5;
int arr[maxn];
int main()
{
int q; cin >> q;
while(q--){
int h,n; cin >> h >> n;
for(int i = 0; i < n; ++i){
cin >> arr[i];
}
int now = h,ans = 0;
for(int i = 1; i < n;){
if(now<=2) break;
if(arr[i]==now-1){
if(i+1 < n&&arr[i+1]==now-2){
i+=2; now = now-2; continue; // 到下一个
}else{
++ans,now = now-2,++i;
}
}else if(arr[i]!=now-1){
now = arr[i]+1;
}
}
cout << ans << endl;
}
return 0;
}
D. AB-string 1238D
去除掉 “AAAAB",“BBBBA” 类似的情况就可以了。
C. Registration system
思路:map记录即可。
#include <bits/stdc++.h>
using namespace std;
map<string,int> mp;
int main()
{
int n; cin >> n;
for(int i = 0; i < n; ++i){
string str; cin >> str;
if(!mp.count(str)){
cout << "OK" << endl;
mp[str]++;
}else{
cout << str << mp[str]++ << endl;
}
}
return 0;
}
A. Two Substrings
题意:问字符串里有没有 A B AB AB, B A BA BA
思路:暴力乱搞
#include <bits/stdc++.h>
using namespace std;
map<string,int> mp;
int main()
{
string str; cin >> str;
bool isok1 = false,isok2 = false;
for(int i = 0,n = str.size(); i < n; ++i){
if(i+1<n && str[i]=='A' && str[i+1]=='B'){
for(int j = i+2; j < str.size(); ++j){
if(j+1 < n&& str[j]=='B' && str[j+1]=='A'){
cout << "YES" << endl;
return 0;
}
}
}
else if(i+1<n && str[i]=='B' && str[i+1]=='A'){
for(int j = i+2; j < str.size(); ++j){
if(j+1 < n&& str[j]=='A' && str[j+1]=='B'){
cout << "YES" << endl;
return 0;
}
}
}
}
cout << "NO" << endl;
return 0;
}
B. Minimum Ternary Strings
思路:可以发现1的位置是任意的,所以贪心的考虑即可
#include <bits/stdc++.h>
using namespace std;
int main(