• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
HaibaraAi
博客园    首页    新随笔    联系   管理    订阅  订阅

HDU 4750 Count The Pairs 并查集+二分+递推(2013 ACM/ICPC Asia Regional Nanjing Online 1003)

彩笔请多指教!

转载请注明出处__谢谢! http://www.cnblogs.com/HaibaraAi/articles/3335612.html by---HaibaraAi 求认识大神(ˇ^ˇ),目前只会水题- -#~~~!
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4750
 
 1 #include <cstdio>
 2 #include <cstring>
 3 #include <algorithm>
 4 using namespace std;
 5 #define INF 0x7fffffff
 6 #define maxn 10005
 7 #define maxm 500005
 8 int n,m;
 9 struct Edge{
10     int from,to,dist;
11     bool operator<(const Edge& cmp)const{
12         return dist<cmp.dist;
13     }
14 }e[500005];
15 int g[maxn],f[maxn],p[maxm],ans[maxm];
16 void init(){
17     for(int i=0;i<=n;i++){f[i]=i;g[i]=1;}
18 }
19 int find(int x){
20     if(x!=f[x])f[x]=find(f[x]);
21     return f[x];
22 }
23 int main(){
24     while(~scanf("%d%d",&n,&m)){
25         init();
26         for(int i=1;i<=m;i++){
27             int a,b,v;
28             scanf("%d%d%d",&a,&b,&v);
29             e[i].from=a;e[i].to=b;e[i].dist=v;
30         }
31         sort(e+1,e+m+1);
32         ans[0]=0;p[m]=INF;
33         for(int i=1;i<=m;i++){
34             p[i-1]=e[i].dist;
35             int x=find(e[i].from);
36             int y=find(e[i].to);
37             if(x==y)ans[i]=ans[i-1];
38             else{
39                 ans[i]=ans[i-1]+(g[x]+g[y])*(g[x]+g[y]-1)-g[x]*(g[x]-1)-g[y]*(g[y]-1);
40                 g[x]+=g[y];
41                 f[y]=x;
42             }
43         }
44         for(int i=0;i<=m;i++)ans[i]=n*(n-1)-ans[i];
45         int tol,t,k;
46         scanf("%d",&tol);
47         while(tol--){
48             scanf("%d",&t);
49             k=lower_bound(p,p+m,t)-p;
50             printf("%d\n",ans[k]);
51         }
52     }
53     return 0;
54 }
View Code 2013-09-23 20:27:35
posted @ 2013-09-23 20:06  HaibaraAi  阅读(96)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3