zoukankan      html  css  js  c++  java
  • Codeforces Round #254 (Div. 1)-A,B

    A:选取两点一边就能够了,非常明显能够想出来。。。

    可是一開始看错题了,sad、、、、

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    #include<queue>
    #include<math.h>
    using namespace std;
    #define eps 1e-6
    #define zero(x) ((fabs(x)<eps?0:x))
    #define maxn 550
    int val[maxn];
    int main()
    {
        int n,m,u,v,w;
        while(~scanf("%d%d",&n,&m))
        {
            for(int i=1;i<=n;i++)
            {
                scanf("%d",&val[i]);
            }
            double ans=0.0;
            for(int i=1;i<=m;i++)
            {
                scanf("%d%d%d",&u,&v,&w);
                double pp=0;
                pp=1.0*(val[u]+val[v])/(w);
                if(pp>ans)ans=pp;
            }
            printf("%.10lf
    ",ans);
        }
        return 0;
    }
    B:

    假设d<=sqrt(n):

    那么我们就用b数组中的每个1去匹配A数组;

    复杂度n*sqrt(n).

    否则:

    我们就用数字去匹配每个位置,看这个位置的人是否会存在。

    复杂度理论上可行

    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    #include<algorithm>
    #include<queue>
    #include<math.h>
    using namespace std;
    #define eps 1e-6
    #define zero(x) ((fabs(x)<eps?0:x))
    #define maxn 110000
    #define LL long long
    int val[maxn];
    int n,d;
    LL x;
    int a[maxn];
    int b[maxn];
    int getNextX() {
        x = (x * 37 + 10007) % 1000000007;
        return x;
    }
    int initAB() {
        int i;
        for(i = 0; i < n; i = i + 1){
            a[i] = i + 1;
        }
        for(i = 0; i < n; i = i + 1){
            swap(a[i], a[getNextX() % (i + 1)]);
        }
        for(i = 0; i < n; i = i + 1){
            if (i < d)
                b[i] = 1;
            else
                b[i] = 0;
        }
        for(i = 0; i < n; i = i + 1){
            swap(b[i], b[getNextX() % (i + 1)]);
        }
    }
    int c[maxn];
    int ip[maxn];
    struct list
    {
        int id;
        int next;
        int pre;
    }node[maxn];
    vector<int>vec;
    int main()
    {
        while(~scanf("%d%d%lld",&n,&d,&x))
        {
            vec.clear();
            initAB();
            for(int i=0;i<=n+1;i++)
            {
                node[i].id=i;
                node[i].next=i+1;
                node[i].pre=i-1;
            }
            for(int i=n;i>=1;i--)
            {
                a[i]=a[i-1];
                b[i]=b[i-1];
            }
            int m=sqrt(n);
            for(int i=1;i<=n;i++)
            {
                ip[a[i]]=i;
            }
            if(m<=d)
            {
                for(int i=n;i>=1;i--)
                {
                    int z=ip[i];
                    for(int j=0;j!=n+1;j=node[j].next)
                    {
                        int y=node[j].id;
                        if(y<z)continue;
                        if(b[y-z+1])
                        {
                            c[y]=i;
                            node[node[j].next].pre=node[j].pre;
                            node[node[j].pre].next=node[j].next;
                        }
                    }
                }
            }
            else
            {
                for(int i=1;i<=n;i++)
                {
                    if(b[i])
                    {
                        vec.push_back(i);
                    }
                }
                for(int i=0;i<vec.size();i++)
                {
                    int y=vec[i];
                    for(int j=1;j<=n-y+1;j++)
                    {
                        c[j+y-1]=max(c[j+y-1],a[j]);
                    }
                }
            }
            for(int i=1;i<=n;i++)
            {
                printf("%d
    ",c[i]);
            }
        }
        return 0;
    }














  • 相关阅读:
    通过hmc启动lpar的终端
    修复LVM手记
    通过VMLibrary在client partition上安装AIX全程实录
    【转】通过VIOS实现AIX系统的网络虚拟化
    rhel 6 启动流程分析(/etc/inittab)
    Linux中tty、pty、pts的概念区别
    Shell中while循环的done 后接一个重定向<
    搭建dns服务器时报错error: bind: address already in use
    关于 smit mktcpip 和smit chinet 的区别
    博客园博客停更(本博客收集本人于2018年之前的博客,2018年之后的博客统一发布在CSDN上)
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3952172.html
Copyright © 2011-2022 走看看