洛谷上的P1563 [NOIP 2016 提高组] 玩具谜题。题目比较简单直接模拟即可,注意可使用结构体,优化代码逻辑。
贴一下我的代码。
#include <bits/stdc++.h>
using namespace std;
int main(){
int n,m,a,s,sign=0;
cin>>n>>m;
struct Toy{
int isS = 0;
string name;
};
Toy toy[100000];
for(int i=0;i<n;i++){
cin>>toy[i].isS>>toy[i].name;
}
for(int i=0;i<m;i++){
cin>>a>>s;
if(toy[sign].isS==1){
a=abs(a-1);
}
if(a==0){
sign = (sign + n - s)%n;
}
else{
sign = (sign + s) % n;
}
}
cout<<toy[sign].name;
return 0;
}
洛谷上的P1042 [NOIP 2003 普及组] 乒乓球,题目也不难,采用一次读取,两次判断。要注意的就是比赛信息结束并不代表比赛结束,可能比赛还在进行。贴一下题解。
#include <bits/stdc++.h>
using namespace std;
void score(const vector<char>& v, int win) {
int w = 0, l = 0;
for (char c : v) {
c == 'W' ? w++ : l++;
if (max(w, l) >= win && abs(w - l) >= 2) {
cout << w << ":" << l << endl;
w = l = 0;
}
}
cout << w << ":" << l << endl;
}
int main() {
vector<char> v;
char c;
while (cin >> c && c != 'E'){
if (c == 'W' || c == 'L') {
v.push_back(c);
}
}
score(v, 11);
cout << endl;
score(v, 21);
return 0;
}