intmain(){ int a, b; cin >> a >> b; cout << max(0, b - a + 1) << endl; return0; }
B. Can you buy them all?
题意:有N件商品,偶数天的商品会便宜1元,给了X元,求能不能把N件商品买完。
思路:签到题,直接模拟。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#include<bits/stdc++.h> usingnamespace std;
intmain(){ int n, x; cin >> n >> x; vector<int> a(n + 1); int sum = 0; for (int i = 1; i <= n; i++) { cin >> a[i]; if (i & 1) sum += a[i]; else sum += a[i] - 1; } if (sum > x) cout << "No" << endl; else cout << "Yes" << endl; return0; }
#include<bits/stdc++.h> #define ll long long usingnamespace std;
const ll MOD = 1e9+7; constint MAX = 2e5+50; int C[MAX], n;
intmain(){ cin >> n; for (int i = 1; i <= n; i++) cin >> C[i]; sort(C + 1, C + n + 1); ll res = 1; for (int i = 1; i <= n; i++) { res = res * (C[i] - (i - 1)) % MOD; } cout << res << endl; return0; }
constint MAX = 1e5+50; vector<int> es[MAX]; int fa[MAX], deep[MAX], sz[MAX], son[MAX]; int top[MAX];
voiddfs1(int u, int pre, int dep){ fa[u] = pre; deep[u] = dep; sz[u] = 1; for (auto& v: es[u]) { if (v == pre) continue; dfs1(v, u, dep + 1); sz[u] += sz[v]; if (sz[v] > sz[son[u]]) son[u] = v; } }
voiddfs2(int u, int utop){ top[u] = utop; if (son[u]) dfs2(son[u], utop); for (auto& v: es[u]) { if (v == fa[u] || v == son[u]) continue; dfs2(v, v); } }
intLCA(int u, int v){ while (top[u] != top[v]) { if (deep[top[u]] < deep[top[v]]) swap(u, v); u = fa[top[u]]; } if (deep[u] > deep[v]) swap(u, v); return u; }
intmain(){ int n, q; cin >> n >> q; for (int i = 1; i < n; i++) { int u, v; cin >> u >> v; es[u].push_back(v); es[v].push_back(u); } dfs1(1, 0, 1); dfs2(1, 1); while (q--) { int u, v; cin >> u >> v; int lca = LCA(u, v); int dis = deep[u] - deep[lca] + deep[v] - deep[lca]; if (dis & 1) cout << "Road" << endl; else cout << "Town" << endl; } return0; }