首页 > 代码库 > hdu 6016 Count the Sheep

hdu 6016 Count the Sheep

BestCoder Round #92 B题

(今天突然想起来这道题在做的时候卡了cin 而且似乎也有爆int的坑 就拿出来记录一下

((这道题能用来测试输入输出外挂的性能

中文题意不解释

比赛的时候好多人是爆搜的四层

不过还是有更优雅的做法

那就是把每只羊的link数记录下来

然后根据每次数羊的时候的顺序

母羊A 公羊B 母羊C 公羊D

按照这样处理 然后把最后的ans*2就可以了~

 

 1 #include<bits/stdc++.h> 2 #define cl(a,b) memset(a,b,sizeof(a)) 3 #define debug(x) cerr<<#x<<"=="<<(x)<<endl 4 using namespace std; 5 typedef long long ll; 6 typedef pair<int,int> pii; 7  8 int main() 9 {10     int T;11     scanf("%d",&T);12     while(T--)13     {14         int n,m,k;15         scanf("%d%d%d",&n,&m,&k);16         vector<int>a(n+1,0),b(m+1,0);17         vector<pii>link;18         for(int i=0;i<k;i++)19         {20             int x,y;21             scanf("%d%d",&x,&y);22             a[x]++,b[y]++;23             link.push_back({x,y});24         }25         ll ans=0;26         for(auto i:link)27         {28             ll tmp=1ll*(a[i.first]-1)*(b[i.second]-1);29             //防止出现负数的判断30             if(tmp<0) continue;31             ans+=tmp;32         }33         printf("%lld\n",ans*2);34     }35     return 0;36 }37 /*38 39 340 2 2 441 1 142 1 243 2 144 2 245 3 1 346 1 147 2 148 3 149 3 3 350 1 151 2 152 2 253 54 */

 

hdu 6016 Count the Sheep