zoukankan      html  css  js  c++  java
  • 洛谷4951 地震 bzoj1816扑克牌 洛谷3199最小圈 / 01分数规划

      

    洛谷4951 地震

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<algorithm>
     4 #define go(i,a,b) for(register int i=a;i<=b;i++)
     5 #define ll long long
     6 #define db long double
     7 #define M 10001
     8 #define N 401
     9 #define inf 1e15
    10 #define eps 1e-12
    11 using namespace std;
    12 ll read()
    13 {
    14     ll x=0,y=1;char c=getchar();
    15     while(c<'0'||c>'9') {if(c=='-') y=-1;c=getchar();}
    16     while(c>='0'&&c<='9') {x=(x<<1)+(x<<3)+c-'0';c=getchar();}
    17     return x*y;
    18 }
    19 struct node{int u,v;ll t,c;db w;}a[M];
    20 ll n,m,f,fa[N];
    21 int find(int x){if(x==fa[x])return x;return fa[x]=find(fa[x]);}
    22 bool cmp(node x,node y){return x.w<y.w;}
    23 bool ck(db x)
    24 {
    25     go(i,1,m) a[i].w=a[i].c+a[i].t*x/1e7;
    26     db ans=f+eps;//这里加eps是为了保证精度
    27     //-----------------------------
    28     sort(a+1,a+m+1,cmp);
    29     go(i,1,n) fa[i]=i;
    30     go(i,1,m)
    31     {
    32         int uf=find(a[i].u),vf=find(a[i].v);
    33         if(uf==vf) continue;
    34         fa[uf]=vf;
    35         ans-=a[i].w;
    36         if(ans<0)return 0;
    37     }//---------------------------最小生成树
    38     return 1;
    39 }
    40 int main()
    41 {
    42     freopen("quake.in","r",stdin);
    43     freopen("quake.out","w",stdout);
    44     n=read();m=read();f=read();
    45     db l=1,r=inf;
    46     go(i,1,m) a[i].u=read(),a[i].v=read(),a[i].c=read(),a[i].t=read();
    47     if(!ck(0)) {printf("0.0000");return 0;}
    48     while(l<r)
    49     {
    50         db mid=(l+r)/2;
    51         if(ck(mid+1)) l=mid+1;
    52         else r=mid;
    53     }
    54     printf("%.4Lf",l/(db)1e7);
    55     return 0;
    56 }
    View Code

    bzoj1816扑克牌

     1 #include<iostream>
     2 #include<cstdio>
     3 #define go(i,a,b) for(register int i=a;i<=b;i++)
     4 #define ll long long
     5 #define M 1000001
     6 #define inf 1e12
     7 using namespace std;
     8 ll read()
     9 {
    10     ll x=0,y=1;char c=getchar();
    11     while(c<'0'||c>'9') {if(c=='-') y=-1;c=getchar();}
    12     while(c>='0'&&c<='9') {x=(x<<1)+(x<<3)+c-'0';c=getchar();}
    13     return x*y;
    14 }
    15 int n,m;
    16 ll ct,c[M],l,r=inf;
    17 bool ck(ll x)
    18 {
    19     ll nm=min(x,(ll)m);
    20     go(i,1,n){if(c[i]<x)nm=nm-(x-c[i]);if(nm<0)return 0;}
    21     return 1;
    22 }
    23 int main()
    24 {
    25     freopen("cards.in","r",stdin);
    26     freopen("cards.out","w",stdout);
    27     n=read();m=read();
    28     go(i,1,n) c[i]=read();
    29     while(l<r)
    30     {
    31         ll mid=(l+r)>>1;
    32         if(ck(mid+1)) l=mid+1;
    33         else r=mid;
    34     }
    35     printf("%lld",l);
    36     return 0;
    37 }
    View Code

     洛谷3199最小圈

     1 #include<iostream>
     2 #include<cstdio>
     3 #define R register
     4 #define go(i,a,b) for(R int i=a;i<=b;i++)
     5 #define db long double
     6 #define M 10001
     7 #define N 3001
     8 #define inf 1e10
     9 #define eps 1e-10
    10 using namespace std;
    11 int rd()
    12 {
    13     int x=0,y=1;char c=getchar();
    14     while(c<'0'||c>'9'){if(c=='-')y=-1;c=getchar();}
    15     while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+c-'0';c=getchar();}
    16     return x*y;
    17 }
    18 int n,m,b[N],cnt;
    19 bool in[N],flag;
    20 db dis[N];
    21 struct node{int v,nt;db w;}a[M];
    22 void add(int u,int v,db w){a[++cnt].nt=b[u];a[cnt].v=v;a[cnt].w=w;b[u]=cnt;}
    23 void ck(int u,db x)
    24 {
    25     in[u]=1;
    26     for(R int i=b[u];i;i=a[i].nt)
    27     {
    28         int v=a[i].v;db w=a[i].w;
    29         if(dis[u]+w-x<dis[v])
    30         {
    31             if(in[v]||flag){flag=1;return;}
    32             dis[v]=dis[u]+w-x;
    33             ck(v,x);
    34         }
    35     }
    36     in[u]=0;
    37 }
    38 int main()
    39 {
    40     n=rd();m=rd();
    41     go(i,1,m){int u=rd(),v=rd();db w;scanf("%Lf",&w);add(u,v,w);}
    42     db l=-inf,r=inf;
    43     while(r-l>eps)
    44     {
    45         db mid=(l+r)/2;flag=0;
    46         go(i,1,n){in[i]=0;dis[i]=0;}
    47         go(i,1,n){ck(i,mid);if(flag)break;}
    48         if(flag) r=mid;
    49         else l=mid;
    50     }
    51     printf("%.8Lf",l);
    52     return 0;
    53 }
    View Code
    光伴随的阴影
  • 相关阅读:
    PHP学习(二)
    PHP学习(一)
    JQuery学习小结
    Java学习(七)标准标签库JSTL
    Java学习(六)servlet 的引入
    Java学习(五)例题
    java学习(四)代码的设计
    Java学习(三)JSP学习1
    采用prometheus 监控mysql
    commonjs, nodejs, npm, browserify, watchify
  • 原文地址:https://www.cnblogs.com/forward777/p/10367138.html
Copyright © 2011-2022 走看看