秦皇岛 2019 CCPC区域赛 部分代码
Decimal Time Limit: 2000/1000 MS (Java/Others) Memory Limit:
131072/131072 K (Java/Others) Total Submission(s): 2010 Accepted
Submission(s): 894
Problem Description 給定一個正整數 n,要求判斷 1n
在十進制下是不是一個無限小數。如果是,輸出“Yes”,否則輸出“No”。
Input 輸入第一行一個正整數 T,表示數據組數。
接下來 T 行,每行一個正整數 n(1≤n≤100)。
Hint
樣例解釋
15=0.2,不是無限小數。
13=0.333?,是無限小數。
Output 輸出 T 行,每行一個字符串,表示對應測試數據的答案。
Sample Input 2 5 3
Sample Output No Yes
1 最多 就當是10 只能被2 和 5 的倍數 整除就好
#include <bits/stdc++.h> using namespace std; typedef pair<int, int> pii; const int maxn = 1e5 + 5; const int maxm = 1e6 + 5; int n, m, cas;int main() {ios::sync_with_stdio(false),cin.tie(0);cin >> cas;while(cas --) {cin >> n;while(n % 2 == 0) n /= 2;while(n % 5 == 0) n /= 5;if(n == 1) cout << "No" << endl;else cout << "Yes" << endl;}return 0; }Forest Program Time Limit: 4000/2000 MS (Java/Others) Memory Limit:
131072/131072 K (Java/Others) Total Submission(s): 1778 Accepted
Submission(s): 126
Problem Description Z 國近年來一直在考慮遏制國土沙漠化的方案。在 Z
國廣闊的疆域上,有著許多的沙漠。沙漠上干旱少雨,荒無人煙,僅有仙人掌能在這種魔鬼環境中生存。經過 Z
國地質探測局的調查,他們得到了沙漠的實地情況。Z 國的地質探測局是一個熱愛 CCPC
的機構,他們喜歡使用圖論的方式來描述看到的景色。在得到的數據中,沙漠中的每一個連通塊都是一棵仙人掌;一個連通塊是一棵仙人掌當且僅當連通塊中不存在重邊和自環,并且每一條邊僅被至多一個簡單環覆蓋。
經過一番評估,Z
國決定通過刪去沙漠中的一些邊,最終將沙漠變為森林。這里我們定義森林滿足:森林中每一個連通塊都是一棵樹,而樹是邊數等于點數減一的連通塊。現在給定一個包含
n 個點的沙漠,請你求出 Z
國一共有多少種滿足要求的沙漠改造方案。兩種方案不同當且僅當方案中被刪去的邊集不同。由于答案可能很大,請將最終答案對 998244353
取模后輸出。
Input 多組數據,每組數據第一行輸入兩個非負整數 n、m,分別表示沙漠中的點數和邊數。沙漠中點的編號為 1, 2, …, n。
對于每組數據的第 2 到第 m+1 行,每行輸入兩個正整數 u、v,表示沙漠中編號為 u 和編號為 v 的兩個點之間有邊相連。
1≤T≤3,1≤n≤3×105,m≤5×105,1≤u, v≤n 并且 u≠v。
Hint
樣例解釋
對于第一組樣例,只需要至少刪去一條邊即可變為森林,故一共有 23?1=7 種方案。
Output 對于每一組數據,輸出一行一個非負整數,表示答案對 998244353 取模后的值。
Sample Input 2 3 3 1 2 2 3 3 1 6 6 1 2 2 3 3 1 2 4 4 5 5 2
Sample Output 7 49
我們刪一個邊 讓他變成樹 考慮 既然仙人掌樹 必然要刪環的邊 這時 它的選邊可有的數量是 pow(2,totcnt)?1pow(2,totcnt)- 1pow(2,totcnt)?1個(1是一個也不刪) 而樹邊 可以隨便刪的 貢獻度是pow(2,totsum?totcnt)pow(2,totsum - totcnt)pow(2,totsum?totcnt)
然后陳起來就好
Invoker Time Limit: 15000/12000 MS (Java/Others) Memory Limit:
131072/131072 K (Java/Others) Total Submission(s): 586 Accepted
Submission(s): 100
Problem Description 在 dota2
中有一個叫做祈求者(Invoker)的英雄,在游戲中他有三個基礎技能:冰(Quas),雷(Wex),火(Exort),每施展一個技能就可以獲得相應屬性的一個法球(element)。
但是祈求者同時最多只能有三個法球,即如果他在有三個法球的狀態下又使用了某個法球技能,那么他會獲得該法球,并失去之前三個法球中最先獲得的一個。
不難得出,祈求者身上的三個法球的無順序組合有 10 種,每一種都對應著一個組合技能:
當祈求者擁有三個法球的時候,使用元素祈喚(Invoke)技能,用 R
表示,便可獲得當前法球組合所對應的技能,同時原有的三個法球也不會消失,先后順序的狀態也不會改變。
現在給定一個技能序列,你想按照給定的順序將他們一個一個地祈喚出來,同時你想用最少的按鍵來達到目標,所以你想知道對于給定的一個技能序列,最少按多少次鍵才能把他們都祈喚出來。
注意:游戲開始的時候,祈求者是沒有任何法球的。
Input 僅一行一個字符串 s,表示技能序列。其中所有字母都是大寫,且在 {B,C,D,F,G,T,V,X,Y,Z} 內。
1≤|s|≤105
Output 僅一行一個正整數,表示最少按鍵次數。
Sample Input XDTBV
Sample Output 14
Hint
一種按鍵最少的方案為:QWWREERERWQRQR
就是特蛋疼的DP 情況多的難受 DP還是好像的
109ms timerank 5…
MUV LUV EXTRA Time Limit: 2000/1500 MS (Java/Others) Memory Limit:
262144/262144 K (Java/Others) Total Submission(s): 0 Accepted
Submission(s): 0
Problem Description
鑒純夏是一名成績不太好的高中生。一天她在數學考試中碰到了一道求某條線段長度的問題。因為她并不會做這道題,所以她準確地作圖后用尺子量出了這條線段的長度。不幸的是,答案在10進制下為一個無限小數,純夏只量出了這個無限小數在10進制表示下的前若干位。
純夏猜測問題的答案為一個有理數,所以答案為一個無限循環小數,如13=0.333?,3635=1.0285714285714?。純夏希望從這個無限小數的前n位猜出原本的數字。純夏意識到,猜測的循環節太長或循環節已經開始出現的部分長度太短是不可信的。舉個例子,若她量出的小數為1.0285714285714,顯然假設循環節為0285714285714(長度為13)或假設循環節為428571(已經開始出現的部分長度為7)都不如假設循環節為285714(長度為6,已經開始出現的部分長度為12)可靠。因此她定義一個循環節的可靠程度為a×循環節已經開始出現的部分長度?b×循環節長度。請你幫她求出最可靠的循環節的可靠程度為多少。
Input 第1行兩個正整數a,b,含義如題目描述。
第2行一個字符串s表示純夏量出的小數。
1≤a,b≤109
1≤|s|≤107
Hint
樣例解釋
對于第1組樣例:
若猜測循環節為0,則可靠度=5×1?3×1=2;
其中,我們把以 0 為循環節的小數也看作無限循環小數。
若猜測循環節為20,則可靠度=5×2?3×2=4;
若猜測循環節為02,則可靠度=5×3?3×2=9;
若猜測循環節為020,則可靠度=5×3?3×3=6;
若猜測循環節為1020,則可靠度=5×4?3×4=8。
對于第2組樣例:
若猜測循環節為2,則可靠度=2×1?1×1=1;
若猜測循環節為12,則可靠度=2×4?1×2=6;
若猜測循環節為21,則可靠度=2×3?1×2=4;
若猜測循環節為212,則可靠度=2×3?1×3=3;
若猜測循環節為1212,則可靠度=2×4?1×4=4。
注意,計算循環節可靠度的時候不考慮整數部分。輸入中給出的整數部分只是為了還原純夏見到的數字。
Output 一個整數表示最可靠的循環節的可靠程度。
怎么說啊 沒有想到有負數 唉 第一發就應該過的 寫的拓展KMP
過不去有推出了 KMP寫法 在然后發現 是負數的問題 第一發也能過
拓展KMP
KMP
#include <bits/stdc++.h> #define int long long using namespace std; typedef pair<int, int> pii; const long long INF = 0x3f3f3f3f3f3f3f3f; const int maxn = 1e7 + 5; const int maxm = 1e6 + 5; int n, m, cas;char s[maxn]; int nxt[maxn];void get_z(){nxt[0] = -1;int i = 0, j = -1;while(i < n){if(j == -1 || s[j] == s[i]){i++, j++;nxt[i] = j;}else j = nxt[j];} }signed main() {long long a, b;while(~scanf("%lld %lld", &a, &b)) {scanf("%s", s);n = strlen(s);int f = 0, t = 0;for(int i = 0; i < n; i ++) {if(s[i] == '.') {f = 1;continue;}if(f) s[t ++] = s[i];}s[t] = '\0';n = t;reverse(s, s + n);get_z();long long ans = -INF;for(int i = 1; i <= n; i ++) {ans = max(ans, i * a - b * (i - nxt[i]));}printf("%lld\n", ans);}return 0; }總結
以上是生活随笔為你收集整理的秦皇岛 2019 CCPC区域赛 部分代码的全部內容,希望文章能夠幫你解決所遇到的問題。