补题链接:Here

1526A. Mean Inequality

给定 Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图1 个整数序列 Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图2,请按下列两个条件输出序列

  • Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图3 序列是 Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图4 序列的重排序
  • Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图5

排序,然后一左一右相应输出即可

  1. void solve() {
  2. int n; cin >> n;
  3. vector<int>v(n * 2);
  4. for (int &x : v)cin >> x;
  5. sort(v.begin(), v.end());
  6. int i = 0, j = 2 * n - 1;
  7. while (i < j) {
  8. cout << v[i] << " " << v[j] << " ";
  9. i++, j--;
  10. }
  11. cout << "\n";
  12. }

1526B. I Hate 1111

给定正整数 Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图6#card=math&code=x%281%5Cle%20x%5Cle%201e9%29&id=zJ4Ct) 请问 Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图7 是否能被 Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图8 构成?

如:

  • Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图9
  • Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图10

利用数学可证明 $1111 $ 以上的数字一定能由 Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图11 构成,

如:Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图12 往上递推,所以我们只需要使用 Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图13 即可

对于 Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图14 以下的数字,完全背包判断即可

  1. void solve() {
  2. int n; cin >> n;
  3. for (int i = 0; i <= 20; ++i) {
  4. if (n % 11 == 0) {
  5. cout << "YES\n";
  6. return ;
  7. }
  8. n -= 111;
  9. if (n < 0)break;
  10. }
  11. cout << "NO\n";
  12. }

1526C2. Potions (Hard Version) (反悔贪心!!!)

给定 Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图15#card=math&code=n%281%5Cle%20n%5Cle%202e5%29&id=ri4PA) 个药水,每个药水可回复和减少 Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图16#card=math&code=a_i%28-10%5E9%5Cle%20a_i%5Cle10%5E9%29&id=XLu6Y) 点 HP,

初始HP = 0,请问在喝药水保证 $ HP >=0 $ 的情况下最多能喝多少瓶药水


反悔贪心!!!

Codeforces Round #723 (Div. 2) (C题反悔贪心!!!) - 图17

上面这张图即是最好的说明

  1. using ll = long long;
  2. void solve() {
  3. int n; cin >> n;
  4. priority_queue<ll, vector<ll>, greater<ll>>q;
  5. ll s = 0;
  6. for (int i = 1; i <= n; ++i) {
  7. ll x; cin >> x;
  8. s += x;
  9. q.push(x);
  10. while (s < 0) {
  11. s -= q.top();
  12. q.pop();
  13. }
  14. }
  15. cout << q.size();
  16. }

赛后自省:太过容易就放弃,对于基本的贪心思维忘光了,这是大忌(。_。)