帝國時代3是一款十分刺激的rts遊戲。你需要控制自己的一塊殖民地,發展殖民地的經濟和軍事,最終打敗其他殖民地。小l是這個遊戲的狂熱愛好者。一次小l打算打ai試試身手。
小l發展了幾分鐘,自己的殖民地人口便突破了30,然而小l發現大事不好了:
小l還處在不能建造軍事單位的「發現時代」,然而敵人早已經到了「殖民時代」,發展起了一支雄厚的殖民地軍,小l的殖民地受攻擊了卻沒有乙個正規的軍事單位用來防禦!不要認為這是小l 的技術問題,實際上ai還停留在以jg鬥爭為綱的落後理念上,而小l 早就以經濟為第一要務了。
小l在之前已經在自己殖民地的外部,拉起了許多圍牆。
帝國時代3裡的圍牆如圖所示。
每一道圍牆,總是連線著兩個圍牆連線處(以下簡稱「連線處」)。
現在小l有n個連線處,m道圍牆}。
小l雖然沒兵,但是他的智商比ai不知道高到那裡去了,因此,只要每個連線處至少連線著k道圍牆},小l就一定能頂住這波攻擊。
小l可以任意加圍牆,每道圍牆可以連線兩個已有的連線處。
連線處是不能連線自己的,但是這裡有一些規則與原帝國時代3的設定不同,兩個連線處之間可以連線多個圍牆,連線處初始時可能不連任何圍牆,圍牆之間也可以相交。
小l想知道,自己至少要多加多少道圍牆}才能滿足每個連線處至少連線著k道圍牆?
第一行三個整數n, m, k,表示連線處個數、圍牆個數以及每個連線處至少要連線的圍牆個數,連線處被編號為1到n}。
接下來m行,每行兩個正整數x, y,表示這個圍牆連線編號為x的連線處和編號為y的連線處。
輸出一行乙個整數,表示至少要加的圍牆的條數。
輸入1:2 0 1
輸入2:
5 4 2
1 22 5
4 33 1
輸入3:
4 3 2
1 22 3
1 2輸入4:
5 11 7
1 34 2
1 54 2
2 51 3
4 12 3
4 15 1
1 5
輸出1:對於60%的資料,n × ans ≤ 10000000,ans表示最終的答案。1樣例1解釋:初始時有兩個連線處,題目中要求至少每個連線處要連1個圍牆,我們加乙個圍牆連線這兩個連線處即可。
輸出2:
1樣例2解釋:連線編號為5的和編號為4的連線處即可。
輸出3:
2樣例3解釋:編號為4的連線處沒有連線任何圍牆,編號為3的連線處還需要一條。連線編號為4的和編號為3的連線處之後,編號為4的連線處與另外三個連線處中任意乙個連乙個圍牆即可,注意連線處是不能自己和自己連線的。
輸出4:
7
對於前100%的資料,n, m, k ≤ 100000,n ≥ 2, m, k ≥ 0, x ≠ y, 1 ≤ x, y ≤ n。
source / author: 雅禮中學 毛嘯 a
題解:考慮貪心。
如果有點還少了邊,肯定是把後來加上的邊的一端,連上當前需求最多的邊,另一端往後連。
發現,這時答案可以直接計算。
設一開始需求邊數最多的點u 要tot個,其餘的點需求的總和為need
這時有兩種情況。
若tot > need,連完need條邊後除u其他點都夠了k,其餘的邊一端為u,另一端隨意。ans = tot
若tot <= need,答案是
#include#define n 100010
#define inf 2147483647
#define rint register ll
#define ll long long
#define point(a) multiset::iterator
#define mod (ll)(1e9+7)
#define mem(a,b) memset(a,b,sizeof (a))
#define open(x) freopen(x".in","r",stdin);freopen(x".out","w",stdout);
using namespace std;
ll n,m,k,r[n],tot,ans,t,i,need;
int main()
sort(r+1,r+1+n);
for(i=2;i<=n;i++)need+=max(k-r[i],0ll);
if(k-r[1] > need)
need+=k-r[1];
printf("%lld",(ll)ceil((double)need/2));
return 0;
}
時間複雜度:o(n) 五校聯考3day2 A
這題考場考慮不太全 但相比於60,其它90分的人,還是很全的 long long我是開了的,然後後面的特判我也是加了的,可是竟然打錯了?其實這題不需要打的像我這樣麻煩 設a i 表示i點還需連線的邊數 ans表示sigma a i max表示max a i 如果max ans 2,就說明全部連項那個...
JZOJ 4226 五校聯考3day2 A
傳送門 求按照規則使基地可以防禦敵人的入侵的至少要加的圍牆的條數 普通情況用s 2 s 2 s 2 s 2 s 2 s 2特殊地,我們需要對子環的情況進行判斷 include include include include include include include include includ...
五校聯考3day2 C
description 在遠古的yl國大地上,有n個祭壇,每個祭壇上四個方向寫有 艄 毜 鼛 甌 四個大字,其實這在yl國古代分別是 東 南 西 北 的意思。yl國每年都要舉行祈福消災的祭祀活動,這個時候,每個祭壇都要在艄毜鼛甌四個方向中選乙個方向,祭壇將向這個方向發出一道 的光線,如果兩個祭壇發出...