zoukankan      html  css  js  c++  java
  • 2017北京国庆刷题Day3 afternoon

     2017北京国庆刷题Day3 afternoon

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    
    #define N 10007
    
    using namespace std;
    int n,m,cnt,top;
    char s[N],sta[N];
    
    int main()
    {
        freopen("a.in","r",stdin);
        freopen("a.out","w",stdout);
        scanf("%s",s);n=strlen(s);
        if(!n) {printf("OK
    ");return 0;}
        for(int i=0;i<n;i++)
        {
            if(i==0 && (s[i]==')' || s[i]==']' || s[i]=='}')) 
            {
                printf("Wrong
    ");
                return 0;
            }
            if(s[i]=='(' || s[i]=='[' || s[i]=='{') sta[top++]=s[i];
            else
            {
                if((s[i]==']' && sta[top-1]=='[') || (s[i]==')' 
                && sta[top-1]=='(') || (s[i]=='}' && sta[top-1]=='{')) top--;
                else 
                {
                    printf("Wrong
    ");
                    return 0;
                }
            }
        }
        if(top==0) printf("OK
    ");
        else printf("Wrong
    ");
        fclose(stdin);fclose(stdout);
        return 0;  
    }


     

    /*
    设直线解析式为 y=(-n/m)* x+n
    整理,得:n * x + m * y - n * m = 0
    点(b,a)到直线的距离为:|  b * n + a * m - n * m | / L
    (L : 根号下(n^2 + m^2)=L)
    zui优解 是  b * n + a * m - n * m / L 的最小值
    为什么这里把绝对值去掉?
    因为 当式子<0 时,直线到了点的右上方,就是不合法解,此时棺材不能通过
    单峰函数求最小值,三分法每次去掉大的一部分
    注意特判直接横着/竖着就能拖过去的情况
    */
    #include<algorithm>
    #include<cstdio>
    #include<cmath>
    
    using namespace std;
    const double eps=1e-9;
    
    int a,b,l;
    
    double f(double n)
    {
        double m=sqrt(1.0*l*l-n*n);
        return (b*n+a*m-n*m)/l;
    }
    
    int main()
    {
        freopen("b.in","r",stdin);
        freopen("b.out","w",stdout);
        scanf("%d%d%d",&a,&b,&l);
        if(a>=l && b>=l) { printf("%d.0000000",l); return 0; }
        if(a>=l) { printf("%d.0000000",b); return 0; }
        if(b>=l) { printf("%d.0000000",a); return 0; }
        double L=0,R=l,ans=-1e18,mid1,mid2,t1,t2;
        int T=100;
        while(T--)
        {
            mid1=(R-L)/3+L; mid2=L+R-mid1;
            t1=f(mid1); t2=f(mid2);
            if(t1<0 || t2<0) { printf("My poor head =("); return 0; }
            if(t1<t2) ans=t1,R=mid2;
            else ans=t2,L=mid1;
        }
        printf("%.7lf",ans);
    }


    /*
    贪心
    如果当前点的分支个数>=2,那么断掉它与父节点的边,子节点中只留两个最优
    所以 ans+=分支个数-2
    但是如果是递归的根节点,就是ans+=分支个数-1
    因为根节点可以与两个分支相连
    如果当前只有一个分支,那就不用断,仍然是它的父节点的一个分支
    最终的答案就是ans*2+1
    *2是因为断掉一个,相应的就要添加一条
    +1是最后要形成一个环
    */
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    
    #define N 100007
    
    using namespace std;
    int n,m,k,ans,cnt;
    int head[N];
    struct edge{
        int u,v,net;
    }e[N<<1];
    
    inline int read()
    {
        int x=0,f=1;char c=getchar();
        while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
        return x*f;
    }
    
    inline void add(int u,int v)
    {
        e[++cnt].v=v;e[cnt].net=head[u];head[u]=cnt;
    }
    
    int dfs(int u,int fa)
    {
        int sum=0;
        for(int i=head[u];i;i=e[i].net) if(e[i].v!=fa) sum+=dfs(e[i].v,u);
        if(sum>1)
        {
            if(u==1) ans+=sum-2;
            else ans+=sum-1;
            return 0;
            
        }return 1;
    }
    
    int main()
    {
        n=read();int x,y;
        for(int i=1;i<n;i++)
        {
            x=read();y=read();
            add(x,y);add(y,x);
        }
        dfs(1,0);
        printf("%d
    ",ans*2+1);
        return 0;
    }
    折花枝,恨花枝,准拟花开人共卮,开时人去时。 怕相思,已相思,轮到相思没处辞,眉间露一丝。
  • 相关阅读:
    netty 学习总结
    tps 真正理解
    Eureka 学习
    h5前端编译项目问题
    web自动化学习
    python unittest自动化执行的几种方式
    python pip install XX 出现Could not fetch URL https://pypi.python.org/simple/pool/: There was a problem confirming
    TypeError: 'module' object is not callable
    简明HTML+CSS实现圣杯布局方法及要点(浮动实现)
    负Margin技术,轻松实现 1.自适应两列布局,2.元素垂直居中(相对定位)
  • 原文地址:https://www.cnblogs.com/L-Memory/p/7671059.html
Copyright © 2011-2022 走看看