A.小七的作业
小柒的作业 - 问题 - 软件学院OJ
代码
#include<bits/stdc++.h>
using namespace std;int main() {string s;cin >> s;int l, r;cin >> l >> r;string str = s.substr(l,r-l+1);cout << str;return 0;
}
B.小七的签到题
小柒的签到题 - 问题 - 软件学院OJ
代码
#include<bits/stdc++.h>
using namespace std;using ll = long long;int main() {string s;cin >> s;ll res = 0, a = 1;for(int i = s.size()-1; i >= 0; i --) {if(isdigit(s[i])) res += a*(s[i]-'0');else res += a*(10+s[i]-'a');a *= 16;}cout << res << endl;return 0;
}
C.小七的数字接龙
小柒的数字接龙 - 问题 - 软件学院OJ
代码
太长了,需要用vector存储数据
利用栈将每个数字,取余后顺序入容器
目的是为了得到顺序的数字串
最后就是模拟除法,看最后还有无余数。
#include<bits/stdc++.h>
using namespace std;using ll = long long;vector<int> a;int main() {int _; cin >> _;while(_--) {a.clear();int l, r;cin >> l >> r;for(int i = l; i < r; i ++) {int j = i;stack<int> s; while(j) {s.push(j%10);j /= 10;}while(!s.empty()) {a.push_back(s.top());s.pop();}}vector<int> b; b.clear();ll t = 0;for(int i = 0; i < a.size(); i ++) {t = t*10 + a[i];b.push_back(t/3);t %= 3;}if(t) puts("NO");else puts("YES"); }return 0;
}
D.小七的轮播图
小柒的轮播图 - 问题 - 软件学院OJ
代码
反正0 n + 1, n + 2 都要放元素,就可以,人工添加三个也行,要三个。
#include<bits/stdc++.h>
using namespace std;int n;
const int N = 210;
int a[N];int main() {cin >> n;for(int i = 1; i <= n; i ++) {cin >> a[i]; a[n+i] = a[i];}int res = 0;for(int i = 2; i <= n+1; i ++) {if(a[i]!=a[i-1] && a[i]!=a[i+1]) res ++;}cout << res << endl;return 0;
}
#include<bits/stdc++.h>
using namespace std;int n;
const int N = 210;
int a[N];int main() {cin >> n;for(int i = 1; i <= n; i ++) {cin >> a[i]; a[n+i] = a[i];}a[0] = a[n];int res = 0;for(int i = 1; i <= n; i ++) {if(a[i]!=a[i-1] && a[i]!=a[i+1]) res ++;}cout << res << endl;return 0;
}
E、F.小七的游戏
小柒的游戏(easy) - 问题 - 软件学院OJ
代码(deque双端队列)
滑动窗口
deque 双端队列维护窗口最值,multiset存储重复有序集合。
#include<bits/stdc++.h>
using namespace std;using ll = long long;
const int N = 1e5+10;
int n, k;
int a[N];
multiset<int> A, B;
ll ansA, ansB;int main() {cin >> n >> k;for(int i = 1; i <= n; i ++) cin >> a[i];deque<int> q;// 选大int flag = 1; //回合标记 for(int i = 1; i <= n; i ++) {while(q.size() && q.back()<=a[i]) q.pop_back();q.push_back(a[i]);if(i>k && a[i-k]==q.front()) q.pop_front();if(flag&1) { A.insert(q.front());ansA += q.front();}flag ++;}flag = 1;q.clear(); for(int i = 1; i <= n; i ++) {while(q.size() && q.back()>=a[i]) q.pop_back();q.push_back(a[i]);if(i>k && a[i-k]==q.front()) q.pop_front();if(flag%2==0) { B.insert(q.front()); ansB += q.front();}flag ++;}cout << ansA << " " << ansB << endl;auto it = A.begin();for(; it!=A.end(); it ++) cout << *it << " ";cout << endl;it = B.begin();for(; it!=B.end(); it ++) cout << *it << " ";return 0;
}
G.小七的神秘树
小柒的神秘树 - 问题 - 软件学院OJ
代码
类似于多个小山,前面的减去后面的(如果前面比后面高)
#include<bits/stdc++.h>
using namespace std;int n;
const int N = 1e5+10;
int h[N];int main() {cin >> n;for(int i = 0; i < n; i ++) cin >> h[i];int ans = h[0];for(int i = 1; i < n; i ++) {if(h[i]>h[i-1]) ans += h[i]-h[i-1];}cout << ans << endl;return 0;
}
H.小七的卡通图形
小柒的卡通图形 - 问题 - 软件学院OJ
代码
我只能动奇数,你只能动偶数,你一定不能动2,你落魄到只能动2,你必输,相当于无限给我2次机会,机会总比你多。
我只要是奇数都能动,1 3 5。我只要计算我每次奇数能拆几次最大奇数+2.(最大奇数+最小偶数2)
你只要计算每次偶数拆最大偶数+2;
#include<bits/stdc++.h>
using namespace std;int n;
const int N = 1e5+10;
int js, os;int main() {cin >> n;for(int i = 1; i <= n; i ++) {int k; cin >> k;if(k&1) js += k/2+1;else os += k/2-1;}if(js>os) puts("QwQ");else puts("Just so so");return 0;
}
I.小七的糯米团子
小柒的糯米团子 - 问题 - 软件学院OJ
代码
奇数,我全拿走,我必赢。
讨论偶数:
1.偶数里无奇数, 我输,无法动弹,我只能动奇数。
2.偶数里有奇数,那么,偶数 = 奇数 + 奇数, 那么我拿走奇数,剩下奇数,对方无法动弹。
所以只要看是否有奇数就行,有奇数就能赢。
#include<bits/stdc++.h>
using namespace std;int n;
int main() {int flag = 0;cin >> n;for(int i = 0; i < n; i ++) {int k; cin >> k;if(k&1) flag = 1;}if(flag) puts("QwQ");else puts("Just so so");return 0;}