2019 12 29 Div 3模擬賽題解

2022-06-28 06:33:09 字數 2049 閱讀 6689

出給學弟的普及模擬賽,現在題解搬到這裡來,估計也沒人看了,墳貼乙個。

給出 \(6\) 個字串,每個字串有乙個標號沒有兩個標號相同的字串,標號的範圍為 \(1\sim 6\)。按照標號順序拼成乙個新的字串,求這個字串。

對於 \(100\%\) 的資料,\(\sum |s|≤1000\),且保證 \(s\) 中沒有空格字元。

基礎題,邊讀入邊開乙個string陣列記錄,最後按順序輸出即可。時空複雜度均為 \(o(\sum )\),期望得分 \(100\) 分。

#include #include #include using namespace std;

string s[7];

int main()

\) 和 \(\frac+1\) 配對。我們1 \(o(n)\) 判斷一下這個方案是否滿足要求即可。

時間複雜度為 \(o(n\log)\)(瓶頸在排序上),空間複雜度為 \(o(n)\),期望得分 \(100\) 分。

#include #include #define il inline

using namespace std;

const int n=1000005;

int n,x,y;

struct noded[n];

il bool cmp(node a,node b)

} else }

}for (i=z; i>=1; i--) for (j=1; j<=m; j++) ans[i][j]=ans[i+1][j];

for (i=1; i<=n; i++) for (j=1; j<=m; j++) printf("%d%c",ans[i][j]," \n"[j==m]);

return 0;

}

乙個人的初始生命值為 \(hp\) (生命值無上限),接下來 \(n\) 秒,他每秒會受到一次傷害,第 \(i\) 秒的傷害值為 \(a_i\) 。任何時刻,若 \(hp≤0\) ,則視為死亡。

這個人有回血技能:

每受到一次傷害,就會積累一點能量。每次使用能力,就會使用所積累的所有能量,恢復 \(15\times\) 能量點數的生命值,並且相鄰兩次使用的時間至少要有 \(cd\) 秒的間隔。

求不會死亡的 \(cd\) 的最小值。

對於 \(30\%\) 的資料,\(n≤12\)。

對於 \(100\%\) 的資料,\(1≤n≤500,0≤a_i≤2000\)。

直接暴力搜尋每個位置填上什麼數,時間複雜度為 \(o(n^m)\),空間複雜度為 \(o(n)\),期望得分 \(50\) 分。

首先答案是滿足單調性的,可以二分答案,轉化為判定性問題。

接下來我們設 \(d_i\) 表示第 \(1\) 到 \(i\) 秒釋放能力的次數,記 \(sum_i=\sum\limits_^\)。

那麼對於 \(d_i\),我們有如下幾種限制:

發現這些都是差分約束類的,於是直接建圖看最短(長)路是否存在,即是否有負(正)環即可,這可用 dfs 版 spfa 實現。

時間複雜度最壞是 \(o(nm\log)\) 的,實際遠遠達不到這個上界,空間複雜度為 \(o(n)\),期望得分 \(100\) 分。

#include #include #define il inline

using namespace std;

const int n=505,m=1e5+5;

int n,hp,cd=-1,a[n],sum[n],dis[n],ok[n];

int to[m],nx[m],wt[m],hd[n],sze;

il void add(int u,int v,int w)

il int spfa(int u)

for (i=0; i<=n&&!o; i++) o|=spfa(i);

return !o;

}int main()

if (cd==n) printf("peanut can play with the wires at will.");

else printf("%d",cd);

return 0;

}

3NOIP模擬賽總結

哎,今天 了,下午改完題才知道自己犯了什麼錯誤,第二題少了一句話掛了 pt,真的不應該,以後每天要想好後再打 今天的t1是考了乙個快速冪 費馬小定理,式子變換一下就變成了aa b 1 求這個式子的值,觀察資料範圍顯然是要lo ga l ogb 的,thkkk大佬眼殺的水題,蒟蒻想了好久都沒想出來 我...

NOIP提高組模擬賽3

周圍大佬都說初中打過n遍,我乙個菜雞瑟瑟發抖。把斐波那契數列寫出來找了半天性質,用了半個多小時推出來 x兔子的父親,就是x減去是在斐波那契數列中最大的小於x的數 舉個栗子 13號兔子,應減去8,得到他的祖先5 10號兔子,應減去8,得到他的祖先2 預處理出斐波那契數列,然後讓ab中較大的到他的祖先,...

2020 2 5普及C組模擬賽3

1.最大值 題目描述 給定n個數,x1,x2,xn 要求從中選出至少乙個數,至多n個數,使得乘積之和最大。輸入 第一行整數n,表示有多少個數 接下來n行,每行乙個整數xi,10 xi 10 輸出 輸出一行,表示最大乘積 樣例輸入 sample input1 3 1 2 4sample input2 ...