將病毒按攻擊力從小到大排序,網線也從小到大排序,乙個病毒能入侵的網路比它強的病毒也能入侵,如果病毒攻擊力遞增,下乙個病毒可入侵網路在此基礎上擴充套件即可,每個節點只擴充套件一次,不會撤銷,每次將病毒可入侵的邊加入,用並查集維護連通塊の利潤和,最高重要度及其個數,並統計這次入侵的連通塊,注意判重。然後,50分就有了?!
此題卡常數,需要乙個給力的輸入輸出優化
#include
#include
#include
using
namespace std;
typedef
long
long ll;
#define bufsize 300000
namespace fib
,*f=b;
}#define gc ((*fib::f)?(*(fib::f++)):(fgets(fib::b,sizeof(fib::b),stdin)?(fib::f=fib::b,*(fib::f++)):-1))
void
read
(int
&tmp)
void
read
(ll &tmp)
namespace fob
,*f=b,
*g=b+bufsize-2;
}#define pob (fwrite(fob::b,sizeof(char),fob::f-fob::b,stdout),fob::f=fob::b,0)
#define pc(x) (*(fob::f++)=(x),(fob::f==fob::g)?pob:0)
struct foce
} _foce;
namespace ib
inline
void
pint
(ll x)
if(x<0)
char
*s=ib::b;
while
(x)*
(++s)
=x%10
, x/=10
;while
(s!=ib::b)pc(
(*(s--))
+48);
}#define n 410000
struct e g[
3010000];
int fr[n]
,tot;
void
add(
int from,
int to)
int n,m,q,num[n]
,val[n]
,rk[n]
,rke[n]
,x[n]
,y[n]
,v[n]
;int f[n]
;ll ans1[n]
,ans2[n]
,hs[n]
,ha[n]
,b[n]
;inline
bool
cmp(
const
int&a,
const
int&b)
inline
bool
cmpe
(const
int&a,
const
int&b)
inline
intfd
(int x)
inline
void
mer(
int x,
int y)
}int le =1;
bool done[n]
;inline
void
slove
(int t)
for(
int i = fr[t]
; i; i = g[i]
.next)
}for
(int i = fr[t]
; i; i = g[i]
.next) done[
fd(g[i]
.to)]=
0;ans1[t]
= tp1; ans2[t]
= tp2;
}int
main()
}sort
(rk+
1,rk+q+
1,cmp)
;sort
(rke+
1,rke+m+
1,cmpe)
;for
(int i =
1; i <= q; i++
)slove
(rk[i]);
for(
int i =
1; i <= q; i++
)pint
(ans1[i]),
pc(' ')
,pint
(totb-ans2[i]),
pc('\n');
return0;
}
2017NOIP模擬賽 松鼠的新家(樹上差分)
松鼠的新家是一棵樹,前幾天剛剛裝修了新家,新家有n個房間,並且有n 1根樹枝連線,每個房間都可以相互到達,且倆個房間之間的路線都是唯一的。天哪,他居然真的住在 樹 上。松鼠想邀請小熊維尼前來參觀,並且還指定乙份參觀指南,他希望維尼能夠按照他的指南順序,先去a1,再去a2,最後到an,去參觀新家。可是...
20161005 NOIP 模擬賽 T2 解題報告
beautiful 2.1 題目描述 乙個長度為 n 的序列,對於每個位置 i 的數 ai 都有乙個優美值,其定義是 找到序列中最 長的一段 l,r 滿足 l i r,且 l,r 中位數為 ai 我們比較序列中兩個位置的數的大小時,以數值為第一關鍵字,下標為第二關鍵字比較。這樣的話 l,r 的長度只...
20161003 NOIP 模擬賽 T2 解題報告
weed duyege的電腦上面已經長草了,經過辨認上面有金坷垃的痕跡。為了查出真相,duyege 準備修好電腦之後再進行一次金坷垃的模擬實驗。電腦上面有若干層金坷垃,每次只能在上面撒上一層高度為 vi 的金坷垃,或者除掉最 新 vi 層 不是量 撒的金坷垃。如果上面只留有不足 vi 層金坷垃,那麼...