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]
  • 相关阅读:
    jquery easy ui 学习 (8)basic treegrid
    jquery easy ui 学习 (7) TreeGrid Actions
    jquery easy ui 学习 (6) basic validatebox
    jquery easy ui 学习 (5) windowlayout
    jquery easy ui 学习 (4) window 打开之后 限制操纵后面元素属性
    提示“应用程序无法启动,因为应用程序的并行配置不正确”不能加载 System.Data.SQLite.dll
    visual studio 添加虚线的快捷键
    VS2010打开项目时,出现“已经在解决方案中打开了具有该名称的项目”问题的解决方案
    visual studio 编译时 出现 Files 的值 乱码
    微信 连接被意外关闭
  • 原文地址:https://www.cnblogs.com/chensiang/p/4780142.html
Copyright © 2011-2022 走看看