日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Codeforces Round #521 (Div.3)题解

發(fā)布時間:2025/3/21 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codeforces Round #521 (Div.3)题解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

A過水,不講

題解 CF1077B 【Disturbed People】

  • 這題就是個顯而易見的貪心可是我考場上差點(diǎn)沒想出來
  • 顯然把一戶被打擾的人家的右邊人家的燈關(guān)掉肯定比把左邊的燈關(guān)掉
  • 從左到右掃一遍,每次如果遇到一戶被打擾的人家就ans++,然后把它右邊的燈關(guān)掉
  • 然后就做完了
# include <bits/stdc++.h>int a[101];int main() {int n;int ans = 0;scanf("%d", &n);for(int i = 1; i <= n; i++)scanf("%d", &a[i]);for(int i = 2; i <= n - 1; i++){if (a[i] == 0 && a[i - 1] == 1 && a[i + 1] == 1)ans++, a[i + 1] = 0;//關(guān)右邊的燈}printf("%d\n", ans);return 0; }

題解 CF1077C 【Good Array】

  • 個人覺得這題比B還水
  • 先排下序,掃一遍\(1-n\)
  • 對于每個數(shù)\(i\),如果\(i \neq n\),則當(dāng)\(\sum_{j=1}^na[j]-a[i]=2*a[n]\)時滿足條件
  • 不然要是\(i = n\)的話,當(dāng)\((\sum_{j=1}^na[j])-a[n]=2*a[n-1]\)時滿足條件
  • 判斷一下就好了
# include <bits/stdc++.h># define ll long longstruct p {int id;ll x; };p a[200001];int cmp(p x, p y){return x.x < y.x;}std::vector<int> vec;int main() {int n;ll sum = 0;scanf("%d", &n);for(int i = 1; i <= n; i++)scanf("%d", &a[i].x), a[i].id = i, sum += a[i].x;std::sort(a + 1, a + n + 1, cmp);for(int i = 1; i <= n; i++){if(i != n)//情況1{if(sum - a[n].x - a[i].x == a[n].x)vec.push_back(a[i].id);}else //情況2{if (sum - a[n - 1].x - a[i].x == a[n - 1].x)vec.push_back(a[i].id);}}if(vec.size()){printf("%d\n", vec.size());for(int i = 0; i < vec.size(); i++)printf("%d ", vec[i]);}else printf("0");return 0; }

題解 CF1077D 【Cutting Out】

  • 昨晚剛打的場,感觸深刻啊
  • 昨天打的時候死命WA16結(jié)果才發(fā)現(xiàn)16是\(n=k\)的的點(diǎn)
  • \(rp--,rating-=inf\)

  • 好了說正事
  • 這道題我們可以枚舉刪除次數(shù),發(fā)現(xiàn)滿足單調(diào)性,果斷二分
  • check掃一遍\(1-200000\),對于每個數(shù)i,每次將序列長度加上(i出現(xiàn)的次數(shù)/當(dāng)前check的刪除次數(shù)),如果序列長度\(\ge k\)就return true;否則return false;
  • 在二分時處理一下答案即可

  • 其實(shí)用不著queue,但已經(jīng)STL依賴癥了qwq

#include <bits/stdc++.h>int n, k; int a[200010], ans[200010]; int s[200010]; std::queue<int> st;int check(int x) {while(!st.empty())st.pop();for(int i = 1; i <= 200000; i++)for(int j = s[i] / x; j; j--)//能加的全部加進(jìn)去st.push(i);if(st.size() >= k)//滿足條件{for(int i = 1; i <= k; i++)ans[i] = st.front(), st.pop();return true;}return false; }int main() {scanf("%d%d", &n, &k);for (int i = 1; i <= n; i++)scanf("%d", &a[i]), s[a[i]]++;int l = 0, r = 200001;while (l < r)//二分{int mid = (l + r + 1) >> 1;if (check(mid))l = mid;elser = mid - 1;}for (int i = 1; i <= k; i++)printf("%d ", ans[i]);return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/little-sun0331/p/9973962.html

總結(jié)

以上是生活随笔為你收集整理的Codeforces Round #521 (Div.3)题解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。