hdu 4324 Triangle LOVE
生活随笔
收集整理的這篇文章主要介紹了
hdu 4324 Triangle LOVE
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://acm.hdu.edu.cn/showproblem.php?pid=4324
比賽的時候 腦子又短路了?
“between A and B, if A don’t love B, then B must love A” ?這句話讀題的時候倒是看到了
思考方法的時候卻忘了 傷不起呀
我們把喜歡自己的人數定為入度的話?
假設到了第n+1個人 那么前n個人 兩兩之間必須存在一個喜歡指向 所以不考慮其它的話
他們的入度和 為(n-1)*n/2 如果比這個大的話那說明 有其他人k喜歡這里面的人
那個人k一定是第n+1個人喜歡的 所以有Triangle LOVE ?
關鍵在于到了的n+1個人時 前n個人 要么喜歡他 要么他喜歡
就是忽略了這點呀
代碼:
#include<iostream> #include<cstdio> #include<cstdlib> #include<ctime> #include<queue> #include<cstring> #include<set> #include<string> #include<cmath> #include<algorithm> #define LL long longusing namespace std;const int N=2005; char s[N][N]; int insum[N];//前面喜歡自己的人數 int main() {//freopen("data.txt","r",stdin);int T;scanf("%d",&T);for(int w=1;w<=T;++w){int n;scanf("%d",&n);getchar();for(int i=0;i<n;++i){gets(s[i]);}bool flag=false;for(int i=0;i<n;++i){int sumtemp=0;for(int j=0;j<i;++j){if(s[j][i]=='1')sumtemp+=insum[j];//分兩組 記錄喜歡自己那組的入度和}if(sumtemp>(i-1)*i/2)//比(i-1)×i/2 還要大的話 說明有另一組的人喜歡他們其中的人 而另一組的人一定是第i+1個人喜歡的 所以存在Traingle LOVE{flag=true;break;}insum[i]=0;for(int j=0;j<n;++j){if(s[i][j]=='0'&&i!=j){++insum[i];}}}printf("Case #%d: ",w);if(flag)printf("Yes\n");elseprintf("No\n");}return 0; }
轉載于:https://www.cnblogs.com/liulangye/archive/2012/07/31/2617431.html
總結
以上是生活随笔為你收集整理的hdu 4324 Triangle LOVE的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VB用API实现各种对话框(总结)(转载
- 下一篇: 漂浮效果