雖說這道題標籤裡寫明了二分,然而我還是首先想到了map......畢竟map真的是簡單好寫。
#includeusingnamespace
std;
intn,m;
mapv;
int a[101000],b[101000
];int
main()
for(int i=1;i<=m;i++) //
建立對映關係
for(int i=1;i<=n;i++) if(v[a[i]]) cout<"
";//
如果出現過直接輸出
}return
0;
不過言歸正傳,我還是衝著二分來寫這道題的,這個二分思路不難想,就是將第二個陣列排序(第乙個陣列與輸出順序有關,不能排序),然後挨個二分第乙個陣列裡的數是否存在於第二個陣列就好了,時間複雜度o(nlogn),n<100000,那就不超時啦。
#includeusingnamespace
std;
intn,m;
int a[101000],b[101000
];bool binary_search(int
x)
return
0;
}int
main()
洛谷 P1571 眼紅的Medusa
雖然miss medusa到了北京,領了科技創新獎,但是他還是覺得不滿意。原因是,他發現很多人都和他一樣獲了科技創新獎,特別是其中的某些人,還獲得了另乙個獎項 特殊貢獻獎。而越多的人獲得了兩個獎項,miss medusa就會越眼紅。於是她決定統計有哪些人獲得了兩個獎項,來知道自己有多眼紅。輸入格式 ...
洛谷 P1361 小M的作物
有 nn n 種作物,兩塊耕地 a aa 和 bbb 第 i ii 種作物種植在 a aa 中收益為 a ia i ai 種植在 b bb 中收益為 b ib i bi 另有 m mm 種組合,每種組合有 k kk 種作物,如果這 k kk 種作物共同種在 a aa 中收益為 c1i c1 i c1...
洛谷1361 小M的作物(最小割)
洛谷 這是乙個比較實用的套路,很多題目都有用,而且這個套路難以口胡出來。考慮把每乙個附加貢獻重新建乙個點,然後向必需的點連邊,流量為val。然後直接種植的從源點向這個點連,流量為val。最後跑乙個最小割就可以了。includeusing namespace std const int n 50001...