Codeforces Round #596 (Div. 2)(第三场)
Preface
我要開始打Codeforces了,這是我的第三場比賽,本來以為可以快速上分的,誰知在pupil的路上越走越遠。
本場戰績:
Cost Time: 2 hours
Solved: 1.5
Rank: 3023
Rating: -31
Question
A. Forgetting Things
題目大意:輸入小于10的正整數a和b,輸出任意分別以a和b開頭的兩個連續整數,如果不存在這樣的數,則輸出"-1"。
解法:可以發現只有當aaa等于bbb,當a+1a + 1a+1等于bbb以及當aaa等于999,bbb等于111這三種情況下可以找到答案。
B. TV Subscriptions
題目大意:有n天,每天電視臺都播放著編號為ai(1≤ai≤k)a_i(1 \leq a_i \leq k)ai?(1≤ai?≤k)的節目,現在要求至少要訂閱多少個節目才能使連續ddd天有節目看?
解法:用一個長度為ddd的區間去掃描記錄節目的數組,同時維護一個記錄區間節目數的變量,掃描完即可得到最小的節目數。
#include <bits/stdc++.h>using namespace std; typedef long long ll; const int inf = 0x3f3f3f3f; const int maxn = 2e5 +10; const int N = 1e6 + 10; int T, n, k, d; int a[maxn], vis[N]; /** 省略了快讀和快寫*/ int main() {read(T);while(T--) {read(n); read(k); read(d);for (int i = 1; i <= n; i++) {read(a[i]);vis[a[i]] = 0;}int ans = inf, t = 0;for (int i = 1; i <= d; i++) {if (!vis[a[i]]) t++;vis[a[i]]++;}ans = min(ans, t);for (int i = d + 1; i <= n; i++) {vis[a[i - d]]--;if (!vis[a[i - d]]) t--;if (!vis[a[i]]) t++;vis[a[i]]++;ans = min(ans, t);}writeln(ans);}return 0; }C. p-binary
題目大意:給定n和p的值,求出最小的k值,可以使得n=∑i=1k(2xi+p)n= \sum^k_{i=1}(2^{x_i}+p)n=∑i=1k?(2xi?+p)成立。
解法:上式可轉化為:
n?k?p=∑i=1k2xin-k*p= \sum^k_{i=1}2^{x_i}n?k?p=i=1∑k?2xi?
令 t=n?k?pt=n-k*pt=n?k?p,由二進制轉十進制的“位權法”,我們可以想到考慮 ttt 的二進制表示。
于是,我們就可以從小到大遍歷 kkk 的值,最先找到答案便是我們要找的。注意:當出現 t<kt < kt<k這種情況時,說明不存在滿足條件的 kkk 值。
關于 kkk 的上限,由上述可知,當 cal(n?k?p)≤kcal(n-k*p) \leq kcal(n?k?p)≤k 就會得到結果,而 n≤109,?1000≤p≤1000n \leq 10^9,-1000\leq p \leq 1000n≤109,?1000≤p≤1000 ,所以 kkk 的值必定不會超過31。
/*** Author: Veggie*/ #include <bits/stdc++.h>using namespace std; typedef long long ll; const int inf = 0x3f3f3f3f; const int maxn = 2e5 +10; int a, b; /** 省略了快讀和快寫*/ int cal(int x) {int cnt = 0;while (x) {if (x & 1) cnt ++;x >>= 1;}return cnt; }int main() {read(a), read(b);int t;for (int k = 1; k < 32; k++) {t = a - k * b;if (t < k) break;if (cal(t) <= k) {writeln(k);return 0;}}writeln(-1);return 0; }Rating View
總結
以上是生活随笔為你收集整理的Codeforces Round #596 (Div. 2)(第三场)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jsp uri=http://java.
- 下一篇: 解决Windows安装TensorFlo