Wannafly模擬賽3
阿新 • • 發佈:2017-10-10
正在 既然 類型 延伸 sin 概率 理論 for tel
以在兩周以後引起美國德克薩斯州的一場龍卷風。――蝴蝶效應
由於這個理論的存在,大多數人認為將未來的事物送回過去將會引發
嚴重的時間悖論,但事實上還存在另外一套理論。
自然會對這類不和諧的蝴蝶效應做出調整,具體地來說就是觸發一些
小概率的惡性事件來抹殺穿越者來消除其對未來的影響。
雖然聽上去很荒誕,但Alicebell決定去驗證這一假說,她將按1 ~ n的 順序依次到訪過去的n個時間點。 這n個時間點各有一個能源參數A??,即到達這個時間點時,身上必須 保證有A??單位的能量,那之後將會消耗掉一單位的能量。 Alicebell想知道依次到訪這n個時間點,最初需要攜帶至少多少能量。
第一行,一個正整數n。
第二行,n個正整數A??。
為0的奇跡,通過無限輪回成功打破了世界線收束理論。
和某民科學者不同,貝倫並不在意世界線收束的那套理論,作為奇跡
之魔女,貝倫的愛好只在於品茶。
作為品茶的消遣,貝倫正在解一道簡單的謎題。
給出一個長度為n的數列A??,問是否能將這個數列分解為兩個長度 為n/2的子序列,滿足 ? 兩個子序列不互相重疊。
? 兩個子序列中的數要完全一樣,{1, 2} = {1, 2},{1, 2} ≠ {2, 1}。
第一行,一個正整數T,表示數據組數。
接下來T組數據,每組數據的第一行,一個正整數n,第二行??個正整數A??。
在完成生物課的作業。
給出一張??個點??條邊的無向圖,這張無向圖描述了一個細胞,細胞有
三種:X型、Y型還是I型。 如圖,虛線方向的鏈可以無限延伸,現在需要判斷給定的圖是哪一種
細胞,或者都不是。
作為一名優秀的狙擊手,????????不僅經常保養槍支,也經常保養彈藥。
????????有??枚子彈,第??枚的型號為????,????????打算扔掉其中最多??枚。
大多數優秀的狙擊手都有藝術癖好,????????希望扔掉一部分子彈後,最
長的連續相同子彈序列的長度盡量長。
喜歡想飛啊,畢竟這裏的題目還都算挺好的中文題,不過做英文題久了還是感覺英文題更好理解一點
反蝴蝶效應 時間限制:1秒 空間限制:65536K題目描述
一只南美洲亞馬孫河流域熱帶雨林中的蝴蝶,偶爾扇動幾下翅膀,可以在兩周以後引起美國德克薩斯州的一場龍卷風。――蝴蝶效應
由於這個理論的存在,大多數人認為將未來的事物送回過去將會引發
嚴重的時間悖論,但事實上還存在另外一套理論。
自然會對這類不和諧的蝴蝶效應做出調整,具體地來說就是觸發一些
小概率的惡性事件來抹殺穿越者來消除其對未來的影響。
雖然聽上去很荒誕,但Alicebell決定去驗證這一假說,她將按1 ~ n的 順序依次到訪過去的n個時間點。 這n個時間點各有一個能源參數A??,即到達這個時間點時,身上必須 保證有A??單位的能量,那之後將會消耗掉一單位的能量。 Alicebell想知道依次到訪這n個時間點,最初需要攜帶至少多少能量。
輸入描述:
輸出描述:
一行,一個正整數,最初需要攜帶能量下限。示例1
輸入
5 1 2 5 4 2
輸出
7
備註:
對於30%的數據,n,A?? ≤ 5。對於50%的數據,n,A?? ≤ 100。 對於100%的數據,n ≤ 105,1 ≤ A?? ≤ 109。 上來就是秒A,做了3min交了wa,我真是個sb,只要找到權值加上當前貢獻的和最大的那個就好的
#include <bits/stdc++.h> using namespace std; typedef long long ll; int main() {貝倫卡斯泰露 時間限制:1秒 空間限制:131072Kint n,f=0,x; scanf("%d",&n); for(int i=0; i<n; i++) { scanf("%d",&x); if(f-(i+1+x)<0) f=x+i; } printf("%d",f); return 0; }
題目描述
貝倫卡斯泰露,某種程度上也可以稱為古手梨花,能夠創造幾率近乎為0的奇跡,通過無限輪回成功打破了世界線收束理論。
和某民科學者不同,貝倫並不在意世界線收束的那套理論,作為奇跡
之魔女,貝倫的愛好只在於品茶。
作為品茶的消遣,貝倫正在解一道簡單的謎題。
給出一個長度為n的數列A??,問是否能將這個數列分解為兩個長度 為n/2的子序列,滿足 ? 兩個子序列不互相重疊。
? 兩個子序列中的數要完全一樣,{1, 2} = {1, 2},{1, 2} ≠ {2, 1}。
輸入描述:
輸出描述:
每組數據輸出一行,如果可以完成,輸出Frederica Bernkastel,否則輸出Furude Rika。示例1
輸入
3 4 1 1 2 2 6 1 2 3 4 5 6 4 1 2 2 1
輸出
Frederica Bernkastel Furude Rika Furude Rika
備註:
對於30%的數據,?? ≤ 16。
對於另20%的數據,?? = 1。
對於另20%的數據,?? = 2。
對於100%的數據,?? ≤ 5,1 ≤ ???? ≤ ?? ≤ 40,保證??為偶數。
這個正確的做法應該是hash之後再匹配,用隊列直接模擬是不嚴謹的,所以反著做一次竟然對了
加入有四個相同的比較強的數據,大概還是要跪
#include<bits/stdc++.h> using namespace std; int a[45]; int main() { int T; scanf("%d",&T); while(T--) { int n; scanf("%d",&n); queue<int>Q; for(int i=1; i<=n; i++) { scanf("%d",&a[i]); if(Q.empty()) Q.push(a[i]); else { if(Q.front()==a[i]) Q.pop(); else Q.push(a[i]); } } if(Q.empty()) printf("Frederica Bernkastel\n"); else { while(!Q.empty())Q.pop(); for(int i=n; i>0; i--) { if(Q.empty()) Q.push(a[i]); else { if(Q.front()==a[i]) Q.pop(); else Q.push(a[i]); } } if(Q.empty()) printf("Frederica Bernkastel\n"); else printf("Furude Rika\n"); } } return 0; }生物課程 時間限制:1秒 空間限制:131072K
題目描述
????????是一名武偵高狙擊科的學生,武偵高也設有基礎學科,現在她正在完成生物課的作業。
給出一張??個點??條邊的無向圖,這張無向圖描述了一個細胞,細胞有
三種:X型、Y型還是I型。 如圖,虛線方向的鏈可以無限延伸,現在需要判斷給定的圖是哪一種
細胞,或者都不是。
輸入描述:
第一行,兩個正整數??,??。
接下來??行,每行兩個正整數??, ??描述一條無向邊。
輸出描述:
輸出這種細胞的類型,若都不是輸出NotValid。示例1
輸入
7 6 1 2 1 3 1 4 1 5 5 6 6 7
輸出
X示例2
輸入
7 6 1 2 1 3 3 4 1 5 5 6 6 7
輸出
Y示例3
輸入
2 1 1 2
輸出
I示例4
輸入
8 7 1 2 1 3 1 4 4 5 5 6 5 7 5 8
輸出
NotValid
備註:
對於100%的數據,2 ≤ ?? ≤ 500,0 ≤ ?? ≤ ??*(???1)/2,沒有重邊和自環。
這個D其實可以卡一些做法?大佬說要考慮單獨的點,但是單獨的點並不影響整個結構啊,我直接討論了每種情況的每類點的個數就過了
#include <bits/stdc++.h> using namespace std; int a[505]; int main() { int n,m; scanf("%d%d",&n,&m); for(int i=0; i<m; i++) { int x,y; scanf("%d%d",&x,&y); a[x]++,a[y]++; } int f1=0,f2=0,f3=0,f4=0; for(int i=1;i<=n;i++) { if(a[i]==1) f1++; else if(a[i]==2) f2++; else if(a[i]==3) f3++; else if(a[i]==4) f4++; } if(f4==1&&f1==4&&f2==n-5) printf("X"); else if(f3==1&&f1==3&&f2==n-4) printf("Y"); else if(f2==n-2&&f1==2) printf("I"); else printf("NotValid"); return 0; }
這樣也過了,說明數據特別嚴謹,沒有出現有些點沒邊的情況。欸不對,既然是圖了,肯定每個點都有邊,還是下面這個做法好啊
#include <bits/stdc++.h> using namespace std; int a[505]; int main() { int n,m,f=0;; scanf("%d%d",&n,&m); for(int i=0; i<m; i++) { int x,y; scanf("%d%d",&x,&y); a[x]++,a[y]++; } for(int i=1;i<=n;i++) if(a[i]==1)f++; if(f==4)printf("X"); else if(f==3)printf("Y"); else if(f==2)printf("I"); else printf("NotValid"); return 0; }絕對半徑2051 時間限制:1秒 空間限制:131072K
題目描述
????????是一名狙擊手,憑借肉眼視覺可以做到精確命中絕對半徑2051公尺的一切目標。作為一名優秀的狙擊手,????????不僅經常保養槍支,也經常保養彈藥。
????????有??枚子彈,第??枚的型號為????,????????打算扔掉其中最多??枚。
大多數優秀的狙擊手都有藝術癖好,????????希望扔掉一部分子彈後,最
長的連續相同子彈序列的長度盡量長。
輸入描述:
第一行,兩個整數??,??。
第二行,??個正整數????。
輸出描述:
一行,一個整數,最長的連續相同子彈序列的長度。示例1
輸入
8 1 1 1 1 2 2 3 2 2
輸出
4
備註:
對於10%的數據,?? ≤ 10。
對於30%的數據,?? ≤ 1000。
對於60%的數據,???? ≤ 30。
對於100%的數據,0 ≤ ?? ≤ ?? ≤ 105,1 ≤ ???? ≤ 109。
n個數去掉其中k個數,使相同的序列最長,我本來寫的尺取回退有問題,一直在炸,還是用map維護這個尺取比較好啊
#include <bits/stdc++.h> using namespace std; const int N=1e5+5; int a[N]; map<int,int> M; int main() { int n,k; scanf("%d%d",&n,&k); for (int i=1; i<=n; i++) scanf("%d",&a[i]); int i=1,j=1,ans=1; while (i<=n) { while (j<=n&&j-i-M[a[i]]<=k) M[a[j++]]++; ans=max(ans,M[a[i]]); M[a[i++]]--; while (i<=n&&a[i]==a[i-1]) M[a[i++]]--; } printf("%d\n",ans); return 0; }
Wannafly模擬賽3