补题链接:Here
1526A. Mean Inequality
给定 个整数序列
,请按下列两个条件输出序列
序列是
序列的重排序
排序,然后一左一右相应输出即可
void solve() {int n; cin >> n;vector<int>v(n * 2);for (int &x : v)cin >> x;sort(v.begin(), v.end());int i = 0, j = 2 * n - 1;while (i < j) {cout << v[i] << " " << v[j] << " ";i++, j--;}cout << "\n";}
1526B. I Hate 1111
给定正整数 #card=math&code=x%281%5Cle%20x%5Cle%201e9%29&id=zJ4Ct) 请问
是否能被
构成?
如:
利用数学可证明 $1111 $ 以上的数字一定能由 构成,
如: 往上递推,所以我们只需要使用
即可
对于 以下的数字,完全背包判断即可
void solve() {int n; cin >> n;for (int i = 0; i <= 20; ++i) {if (n % 11 == 0) {cout << "YES\n";return ;}n -= 111;if (n < 0)break;}cout << "NO\n";}
1526C2. Potions (Hard Version) (反悔贪心!!!)
给定 #card=math&code=n%281%5Cle%20n%5Cle%202e5%29&id=ri4PA) 个药水,每个药水可回复和减少
#card=math&code=a_i%28-10%5E9%5Cle%20a_i%5Cle10%5E9%29&id=XLu6Y) 点 HP,
初始HP = 0,请问在喝药水保证 $ HP >=0 $ 的情况下最多能喝多少瓶药水

上面这张图即是最好的说明
using ll = long long;void solve() {int n; cin >> n;priority_queue<ll, vector<ll>, greater<ll>>q;ll s = 0;for (int i = 1; i <= n; ++i) {ll x; cin >> x;s += x;q.push(x);while (s < 0) {s -= q.top();q.pop();}}cout << q.size();}
赛后自省:太过容易就放弃,对于基本的贪心思维忘光了,这是大忌(。_。)
