zoukankan      html  css  js  c++  java
  • “玲珑杯”线上赛 Round #17 河南专场

    闲来无事呆在寝室打打题,没有想到还有中奖这种操作,超开心的

    Start Time:2017-06-24 12:00:00 End Time:2017-06-24 14:30:00 Refresh Time:2017-06-24 14:48:00 Private

    A -- Sin your life

    Time Limit:1s Memory Limit:128MByte

    Submissions:529Solved:76

    DESCRIPTION

    给一个正整数nn,求下列表达式的最大值:
    (sin(x)+sin(y)+sin(z))[x+y+z=n][x1][y1][z1](sin(x)+sin(y)+sin(z))[x+y+z=n][x≥1][y≥1][z≥1]
    为了降低难度,这里的x,y,zx,y,z皆为整数

    INPUT
    输入只有一行,包含一个正整数n(3n3106)n(3≤n≤3∗106)
    OUTPUT
    输出一行表示答案,请恰好保留99位小数.(你的答案必须和标准答案完全一样才算通过)
    SAMPLE INPUT
    3
    SAMPLE OUTPUT
    2.524412954
    这个题用拉格朗日乘数法很快可以得到3sin(n/3),可是这个题是都是整数啊,取一个最近的也不对,所以我就暴力求解,暴力超时了,怎么改都过不了,所以我采用了打表的方法,发现有两个数冰然相同,所以直接搓一下代码就可以了#include <stdio.h>
    #include <bits/stdc++.h>
    using namespace std;
    int main(){
    int n;
    cin>>n;
    double d=-3.0;
    for(int i=n/3+1;i;i--) if(n-2*i>0) d=max(2*sin(i)+sin(n-2*i),d); printf("%.9f ",d); return 0;}
    B -- 震惊,99%+的中国人都会算错的问题

    Time Limit:4s Memory Limit:128MByte

    Submissions:196Solved:47

    DESCRIPTION

    众所周知zhu是一个大厨,zhu一直有自己独特的咸鱼制作技巧.
    tang是一个咸鱼供应商,他告诉zhu在他那里面有NN条咸鱼(标号从1到N)可以被用来制作.
    每条咸鱼都有一个咸鱼值KiKi,初始时所有KiKi都是00.
    zhu是一个特别的人,他有MM个咸数(咸鱼数字), 对于每个咸数xx,他都会让所有满足标号是xx倍数的咸鱼的咸鱼值异或上11.
    zhu现在想知道经过了这MM个咸数的筛选之后,最终有多少条的咸鱼的咸鱼值是11?

    INPUT
    输入的第一行包含一个整数T(1T1000)T(1≤T≤1000),表示有TT组数据. 对于每组数据: 输入第一行只有两个整数N(1N109)N(1≤N≤109),M(1M15)M(1≤M≤15). 接下来一行有MM个整数,依次对应zhu的每个咸数(121051≤咸数≤2∗105).
    OUTPUT
    对于每组数据,输出答案.
    SAMPLE INPUT
    2 10 1 3 10 1 1
    SAMPLE OUTPUT
    3 10

     这个题是很经典的容斥啊,不过我以前做的是容斥是统计所有格子的,这个容斥需要统计奇数个的数字个数,两个相同的数异或为0

    所以我就要对之前的容斥进行修改,比如A BC,我以前是 A+B+C-AC-AB-BC+ABC,现在我需要做的是A+B+C-2AC-2AB-2BC+4ABC,和我当前id有关,2的几次幂,然后就可以过了

    #include <stdio.h>
    #include <bits/stdc++.h>
    using namespace std;
    long long ans,a[30];
    int n,m;
    long long gcd(long long a,long long b){
        return b==0?a:gcd(b,a%b);
    }
    void DFS(int cur,long long lcm,int id){
        lcm=a[cur]/gcd(a[cur],lcm)*lcm;
        if(id&1)
            ans+=n/lcm*(1<<(id-1));
        else
            ans-=n/lcm*(1<<(id-1));
        for(int i=cur+1;i<m;i++)
            DFS(i,lcm,id+1);
    }
    int main(){
    int t;
    cin>>t;
    while(t--){
        cin>>n>>m;
        ans=0;
        for(int i=0;i<m;i++)
        cin>>a[i];
        for(int i=0;i<m;i++)
        DFS(i,a[i],1);
        cout<<ans<<endl;
    }
    return 0;}
    D -- 喵哈哈村的智慧大师丶).妩钶取玳°月

    Time Limit:1s Memory Limit:256MByte

    Submissions:156Solved:39

    DESCRIPTION

    丶).妩钶取玳°月是月大叔的ID,他是一个智商高达429的智力大师,最擅长的技能就是搞事。今天他又要开始搞事了。

    现在有n个元素aiai

    然后现在有Q个询问,每次月大叔想问一共有多少对pair<i,j>,满足a[i]+a[j]>=k(其中 i<j)

    INPUT
    输入第一行包含一个正整数t(1t100)t(1≤t≤100) ,表示有t组数据 对于每组数据: 第一行两个整数n,q。表示有n(1n100000)n(1≤n≤100000)个元素,q(1q100000)q(1≤q≤100000)次询问 第二行n个整数aiai (1ai100000)(1≤ai≤100000),表示每个元素的大小。 接下来q行,每行一个k(1k200000)k(1≤k≤200000),表示询问。
    OUTPUT
    对于每组测试数据的询问,输出有多少对即可。
    SAMPLE INPUT
    1 5 5 1 2 3 4 5 1 2 3 4 5
    SAMPLE OUTPUT
    10 10 10 9 8
    D我正在用二分去做,可是GG了,这个做法naive了,根本过不了的,要用FFT,网上找的模板一直wa啊,可能我的姿势不太对,是我最后统计的姿势出了偏差(吐血
    以下为ac代码
    #include <bits/stdc++.h>
    #include <stdio.h>
    #include <bits/stdc++.h>
    using namespace std;
    #define LL long long
    const double pi=acos(-1.0);
    struct Complex {
        double x,y;
        Complex(double _x=0.0,double _y=0.0) {
            x=_x;
            y=_y;
        }
        Complex operator -(const Complex &b)const {
            return Complex(x-b.x,y-b.y);
        }
        Complex operator +(const Complex &b)const {
            return Complex(x+b.x,y+b.y);
        }
        Complex operator *(const Complex &b)const {
            return Complex(x*b.x-y*b.y,x*b.y+y*b.x);
        }
    };
    void change(Complex y[],int len) {
        int i,j,k;
        for(i=1,j=len/2; i<len-1; i++) {
            if(i<j) swap(y[i],y[j]);
            k=len/2;
            while(j>=k) {
                j-=k;
                k/=2;
            }
            if(j<k) j+=k;
        }
    }
    void fft(Complex y[],int len,int on) {
        change(y,len);
        for(int h=2; h<=len; h<<=1) {
            Complex wn(cos(-on*2*pi/h),sin(-on*2*pi/h));
            for(int j=0; j<len; j+=h) {
                Complex w(1,0);
                for(int k=j; k<j+h/2; k++) {
                    Complex u=y[k];
                    Complex t=w*y[k+h/2];
                    y[k]=u+t;
                    y[k+h/2]=u-t;
                    w=w*wn;
                }
            }
        }
        if(on==-1) {
            for(int i=0; i<len; i++)
                y[i].x/=len;
        }
    }
    const int maxn=400040;
    Complex x1[maxn];
    int a[maxn];
    LL num[maxn];
    int main() {
        int ncase;
        scanf("%d",&ncase);
        while(ncase--) {
            memset(num,0,sizeof(num));
            int n,k;
            scanf("%d%d",&n,&k);
            for(int i=0; i<n; i++) {
                scanf("%d",&a[i]);
                num[a[i]]++;
            }
            sort(a,a+n);
            int len1=a[n-1]+1;
            int len=1;
            while(len<2*len1) len<<=1;
            for(int i=0; i<len1; i++)
                x1[i]=Complex(num[i],0);
            for(int i=len1; i<len; i++)
                x1[i]=Complex(0,0);
            fft(x1,len,1);
            for(int i=0; i<len; i++)
                x1[i]=x1[i]*x1[i];
            fft(x1,len,-1);
            for(int i=0; i<len; i++)
                num[i]=(long long)(x1[i].x+0.5);
            len=2*a[n-1];
            for(int i=0; i<n; i++)
                num[a[i]+a[i]]--;
            for(int i=1; i<=len; i++) {
                num[i]/=2;
                num[i]+=num[i-1];
            }
            while(k--) {
                int s;
                scanf("%d",&s);
                if(s>len) printf("0
    ");
                else
                    printf("%lld
    ",num[len]-num[s-1]);
            }
        }
        return 0;
    }
  • 相关阅读:
    JavaScript学习-4——DOM对象、事件
    JavaScript学习-3——数组、函数、递归
    CSS样式学习-3、轮廓、伪类/元素、display-flex布局
    目前为止学习过的循环解析过程
    早期自学jQuery-二事件
    Hive问题 记录
    `how to install hive
    mongodb读取测试
    reading list
    HIVE相关命令记录
  • 原文地址:https://www.cnblogs.com/BobHuang/p/7073416.html
Copyright © 2011-2022 走看看