zoukankan      html  css  js  c++  java
  • bzoj2429

    裸mst

     1 #include<bits/stdc++.h>
     2 #define lowbit(a) ((a)&(-(a)))
     3 #define clr(a,x) memset(a,x,sizeof(a))
     4 #define rep(i,l,r) for(int i=l;i<(r);i++)
     5 typedef long long ll;
     6 using namespace std;
     7 int read()
     8 {
     9     char c=getchar();
    10     int ans=0,f=1;
    11     while(!isdigit(c)){
    12         if(c=='-') f=-1;
    13         c=getchar();
    14     }
    15     while(isdigit(c)){
    16         ans=ans*10+c-'0';
    17         c=getchar();
    18     }
    19     return ans*f;
    20 }
    21 struct edge{
    22     int u,v;
    23     double d;
    24     inline bool operator<(const edge&A)const{
    25         return d<A.d;
    26     }
    27 };
    28 const int maxn=1009,inf=0x7fffffff;
    29 int n,m,cnt=0,ans=0,x[maxn],y[maxn],a[maxn],f[maxn];
    30 double mn=-1e30;
    31 edge e[maxn*maxn];
    32 void addedge(int u,int v,double d){
    33     edge ed;
    34     ed.u=u;ed.v=v;ed.d=d;
    35     e[cnt++]=ed;
    36 }
    37 int find(int x){
    38     return f[x]==x?f[x]:f[x]=find(f[x]);
    39 }
    40 int main()
    41 {    
    42     m=read();
    43     rep(i,0,m) a[i]=read();
    44     n=read();
    45     rep(i,0,n) x[i]=read(),y[i]=read(),f[i]=i;
    46     rep(i,0,n-1){
    47         rep(j,i+1,n) 
    48         addedge(i,j,sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])));
    49     }
    50     sort(e,e+cnt);
    51     rep(i,0,cnt){
    52         int s=find(e[i].u),t=find(e[i].v);
    53         if(s!=t){
    54             f[s]=t;
    55             mn=max(mn,e[i].d);
    56         }
    57     }
    58     rep(i,0,m) if(a[i]>=mn) ans++;
    59     printf("%d
    ",ans);    
    60     return 0;
    61 }
    View Code

    2429: [HAOI2006]聪明的猴子

    Time Limit: 10 Sec  Memory Limit: 128 MB
    Submit: 549  Solved: 377
    [Submit][Status][Discuss]

    Description

    在一个热带雨林中生存着一群猴子,它们以树上的果子为生。昨天下了一场大雨,现在雨过天晴,但整个雨林的地表还是被大水淹没着,部分植物的树冠露在水面上。猴子不会游泳,但跳跃能力比较强,它们仍然可以在露出水面的不同树冠上来回穿梭,以找到喜欢吃的果实。
    现在,在这个地区露出水面的有N棵树,假设每棵树本身的直径都很小,可以忽略不计。我们在这块区域上建立直角坐标系,则每一棵树的位置由其所对应的坐标表示(任意两棵树的坐标都不相同)。
    在这个地区住着的猴子有M个,下雨时,它们都躲到了茂密高大的树冠中,没有被大水冲走。由于各个猴子的年龄不同、身体素质不同,它们跳跃的能力不同。有的猴子跳跃的距离比较远(当然也可以跳到较近的树上),而有些猴子跳跃的距离就比较近。这些猴子非常聪明,它们通过目测就可以准确地判断出自己能否跳到对面的树上。
    【问题】 现已知猴子的数量及每一个猴子的最大跳跃距离,还知道露出水面的每一棵树的坐标,你的任务是统计有多少个猴子可以在这个地区露出水面的所有树冠上觅食。

    Input

    第1行为一个整数,表示猴子的个数M(2<=M<=500);

    第2行为M个整数,依次表示猴子的最大跳跃距离(每个整数值在1--1000之间);

    第3行为一个整数表示树的总棵数N(2<=N<=1000);

    第4行至第N+3行为N棵树的坐标(横纵坐标均为整数,范围为:-1000--1000)。

    (同一行的整数间用空格分开)

    Output

    包括一个整数,表示可以在这个地区的所有树冠上觅食的猴子数

    Sample Input

    4
    1 2 3 4
    6
    0 0
    1 0
    1 2
    -1 -1
    -2 0
    2 2

    Sample Output

    3

    HINT

    对于40%的数据,保证有2<=N <=100,1<=M<=100


    对于全部的数据,保证有2<=N <= 1000,1<=M=500



    Source

    [Submit][Status][Discuss]
  • 相关阅读:
    Web应用程序使用Hibernate
    Hibernate使用注释
    Hibernate入门程序
    Hibernate体系结构
    Spring MVC文件上传教程
    Spring MVC配置静态资源和资源包教程
    Spring MVC4使用Servlet3 MultiPartConfigElement文件上传实例
    Spring4 MVC文件下载实例
    Spring4 MVC+Hibernate4 Many-to-many连接表+MySQL+Maven实例
    Spring4 MVC+Hibernate4+MySQL+Maven使用注解集成实例
  • 原文地址:https://www.cnblogs.com/chensiang/p/4780142.html
Copyright © 2011-2022 走看看