感覺這個是主要是考慮人的思維呈現,都可以看出來要想輸出yes,就必須有且僅有乙個贏家沒輸過,所以我們要項要如何實現這個思想呢?
先說下我,剛開始我想用贏家和輸家比較查詢到所有只贏不輸的人,但是剛開始沒考慮到贏家裡面有相同的,後來發現贏家裡面又可能有很多相同的,所以這個方法行不通。
那麼我來說一下正確的思想,先找出贏家和輸家所有不同的人數,然後減去輸家裡面不同的人數,那麼就得到了只贏不輸的人數,如果為1,就符合規則,yes!
**如下:
#include#includeusing namespace std;
int main()
map::iterator it;
int ans=0;
for(it=sum.begin();it!=sum.end();it++)
if((it->second)>0)
ans++;
if(ans==1)
cout<<"yes"<
HDOJ 2094 產生冠軍
題目描述 有一群人,打桌球比賽,兩兩捉對撕殺,每兩個人之間最多打一場比賽。球賽的規則如下 如果a打敗了b,b又打敗了c,而a與c之間沒有進行過比賽,那麼就認定,a一定能打敗c。如果a打敗了b,b又打敗了c,而且,c又打敗了a,那麼a b c三者都不可能成為冠軍。根據這個規則,無需迴圈較量,或許就能確...
杭電 2094 產生冠軍
problem description 有一群人,打桌球比賽,兩兩捉對撕殺,每兩個人之間最多打一場比賽。球賽的規則如下 如果a打敗了b,b又打敗了c,而a與c之間沒有進行過比賽,那麼就認定,a一定能打敗c。如果a打敗了b,b又打敗了c,而且,c又打敗了a,那麼a b c三者都不可能成為冠軍。根據這個...
HD2094 產生冠軍
problem description 有一群人,打桌球比賽,兩兩捉對撕殺,每兩個人之間最多打一場比賽。球賽的規則如下 如果a打敗了b,b又打敗了c,而a與c之間沒有進行過比賽,那麼就認定,a一定能打敗c。如果a打敗了b,b又打敗了c,而且,c又打敗了a,那麼a b c三者都不可能成為冠軍。根據這個...