ucloud 機房的網路搭建
ucloud 剛剛建立乙個新機房,近日正在進行網路搭建。機房內有 n
n 臺伺服器和 m
m 個分線器,整個機房只有乙個網線出口。分線器的作用是將一根網線轉換成多根網線。蒜頭君也知道每個分線器輸出的最大網線根數(不一定要將分線器輸出的每根線都用上),問你至少需要使用多少個分線器才能使得每台伺服器都有網線可用。
第一行輸入 n,m(0 \le n,m \le 100)n,
m(0≤
n,m≤
100)
。第二行輸入包含 m
m 個整數的陣列 a(0 \le a_i \le 10)a(
0≤a
i≤
10) 表示每個分線器輸出的最大網線根數。
輸出最少需要的分線器數量。若不能使得所有伺服器都有網線可用,輸出一行impossible
。
一共需要 3
3 個分線器,最大輸出根數分別為 7,3,27,
3,2,連線方法如下圖所示:
樣例輸入
10 4樣例輸出2 7 2 3
3
//貪心
#include#include#include#includeusing namespace std;
int n,m;
int a[200];
int ans;
int main()
int i=m-1;
int j=1;
while(i>=0&&a[i]>1)
}i-=cnt;
}puts("impossible");
return 0;
}
ucloud 的安全秘鑰
每個 ucloud 使用者會構造乙個由數字序列組成的秘鑰,用於對伺服器進行各種操作。作為一家安全可信的雲計算平台,秘鑰的安全性至關重要。因此,ucloud 每年會對使用者的秘鑰進行安全性評估,具體的評估方法如下:
首先,定義兩個由數字序列組成的秘鑰 a
a 和 bb≈
) 的關係。a
a 和 b
b 近似匹配當且僅當同時滿足以下兩個條件:
此時,我們就稱 a
a 和 bba
≈b(1
,3,1
,1,2
)≈(2
,1,3
,1,1
)。ucloud 每年會收集若干不安全秘鑰,這些秘鑰組成了不安全秘鑰集合 t
t。對於乙個秘鑰 s
s 和集合 t
t 中的秘鑰 t
t 來說,它們的相似值定義為:s
s 的所有連續子串中與 t
t 近似匹配的個數。相似值越高,說明秘鑰 s
s 越不安全。對於不安全秘鑰集合 t
t 中的每個秘鑰 t
t,你需要輸出它和秘鑰 s
s 的相似值,用來對使用者秘鑰的安全性進行分析。
第一行包含乙個正整數 n
n,表示 s
s 串的長度。
第二行包含 n
n 個正整數 s_1,s_2,...,s_n(1\leq s_i\leq n)s
1,
s2
,..
.,s
n(
1≤s
i≤
n),表示 s
s 串。
接下來一行包含乙個正整數 m
m,表示詢問的個數。
接下來 m
m 個部分:
每個部分第一行包含乙個正整數 k(1\leq k\leq n)k(
1≤k≤
n),表示每個 t
t 串的長度。
每個部分第二行包含 k
k 個正整數 t_1,t_2,...,t_k(1\leq t_i\leq n)t
1,
t2
,..
.,t
k(
1≤t
i≤
n),表示 t
t 中的乙個串 tt。
輸入資料保證 t
t 中所有串長度之和不超過 20000020
0000
。對於簡單版本:1\leq n,m\leq 1001≤
n,m≤
100;
對於中等版本:1\leq n\leq 50000,1\leq m\leq 5001≤
n≤50
000,
1≤m≤
500;
對於困難版本:1 \le n \le 50000, 1 \le m \le 1000001≤
n≤50
000,
1≤m≤
1000
00。輸出 m
m 行,每行乙個整數,即與 t
t 中每個串 t
t近似匹配的 s
s 的子串數量。(3
,2,1
,3)≈
(2,3
,1,3
)(3,
2,1,
3)≈(
3,1,
3,2)
;(1,
3)≈(
3,1)
(1,3
)≈(1
,3);
(3,2
)≈(2
,3)(
3,2)
≈(3,
2)。
樣例輸入
5樣例輸出2 3 1 3 234
3 2 1 3
21 3
23 2
222
//簡單的直接暴力也可以過,這個是中版
#include#include#include#includeusing namespace std;
const int maxn=50000+10;
int a[maxn],b[maxn],n,m,nn;
int v1[maxn],v2[maxn];
int main()
memset(v2,0,sizeof(v2));
memset(v1,0,sizeof(v1));
for(int i=0; i
int ans=0;
int c=0;
for(int j=0; j
v1[a[j]]++;
for(int i=1; i<=n; i++)
if(v1[i]!=v2[i]) c++;
if(c==0) ans++;
for(int i=1; i<=n-m; i++)
printf("%d\n",ans);
}return 0;
}
2017 計蒜之道 初賽 第五場
a.ucloud 機房的網路搭建 ucloud 剛剛建立乙個新機房,近日正在進行網路搭建。機房內有 nn 臺伺服器和 mm 個分線器,整個機房只有乙個網線出口。分線器的作用是將一根網線轉換成多根網線。蒜頭君也知道每個分線器輸出的最大網線根數 不一定要將分線器輸出的每根線都用上 問你至少需要使用多少個...
2017計蒜之道程式設計大賽初賽第五場
第一題,從大到小排序,依次取就可以 includeusing namespace std int a 105 int cmp int a,int b int main printf d n ans return 0 1 6 1 2 第二題 我是暴力匹配的,複雜度m n n includeusing ...
2017 計蒜之道 初賽 第三場
在乙個長度為 ll 公尺的光滑軌道上,小車 a 在 00 時刻以 1 mathrm1m s 的速度從左端出發向右運動,小車 b 在 tt 時刻以 1 mathrm1m s 的速度從右端出發向左運動,兩個小車的質量相等。假設所有碰撞都是彈性碰撞,也就是當兩個小車相向碰撞時,他們各自會以原來的速度向相反...