T1:Order Something Else
模拟
代码实现
n, p, q = map(int, input().split())
d = list(map(int, input().split()))
print(min(p, q+min(d)))
T2:Strictly Superior
模拟
代码实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<int> p(n);
vector<vector<int>> f(n);
rep(i, n) {
int c;
cin >> p[i] >> c;
f[i] = vector<int>(c);
rep(j, c) cin >> f[i][j];
}
rep(i, n)rep(j, n) if (i != j) {
if (p[i] < p[j]) continue;
bool ok = true;
for (int e : f[i]) {
if (find(f[j].begin(), f[j].end(), e) == f[j].end()) ok = false;
}
if (!ok) continue;
if (p[i] == p[j] and f[i] == f[j]) continue;
puts("Yes");
return 0;
}
puts("No");
return 0;
}
// 用 bitset 实现
#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < (n); ++i)
using namespace std;
int main() {
int n, m;
cin >> n >> m;
vector<int> p(n);
vector<bitset<101>> f(n);
rep(i, n) {
int c;
cin >> p[i] >> c;
rep(j, c) {
int e;
cin >> e;
f[i][e] = 1;
}
}
rep(i, n)rep(j, n) if (i != j) {
if (p[i] < p[j]) continue;
if ((f[i]&f[j]) != f[i]) continue;
if (p[i] == p[j] and f[i] == f[j]) continue;
puts("Yes");
return 0;
}
puts("No");
return 0;
}
T3:Reversible
可以先给木棍确定一个方向,只考虑以某个端点开始的字典序更小的字符串
然后用 set
来维护即可
代码实现
n = int(input())
st = set()
for _ in range(n):
s = input()
st.add(min(s, s[::-1]))
print(len(st))