FOJ 210. House of Kards

競程作業,2017 交大年度賽 Problem F:FOJ-210

這題我一直理解錯誤,結果卡很久
重新看題目之後才發現其實蠻簡單的

他是說這個國會裡面可能會存在一個小圈圈
這個小圈圈裡面的每一個人,都對圈外的每一個人有控制權
(我一直以為圈內的人也要能互相控制之類的 QQ
然後找到最小的圈圈就好了

所以就先找出當時最有 Power 的人(對最多人有控制權的人
然後剩下他沒辦法控制的人,就一定要跟他一組
然後開始找這些人裡面最有 Power 的人做一樣的事
然後一直重複作就好了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include<iostream>
using namespace std;
int main(){
int t;
cin>>t;
while(t--){
int n, tmp, ans=0, ttmp=0;
cin>>n;
bool fl[204];
for(int i=1; i<=203; i++){
fl[i] = 0;
}
for(int i=0; i<n; i++){
cin>>tmp;
fl[tmp] = 1;
}
for(int i=2; i<=203; i++){
if(fl[i]){
ttmp++;
}
else{
ans+=(ttmp+1)/2;
// cout<<"jizz"<<i<<"jizz";
ttmp=0;
}
}
cout<<ans<<"\n";
}
}