• 【玲珑杯Round17】xjb总结


    zcy真是垃圾,啥都不会的那种。

    菜的不行。

    这场手速上了三题,然后各种E被卡……

    日个吗居然E不开栈,傻逼吧

    有毒吧

    来看题:

    A.sqc给的我的神奇公式,gtmd居然能A?

    #include<bits/stdc++.h>
    using namespace std;
    int n;double ans=0;
    int main(){
        scanf("%d",&n);
        for(int i=1;i<n-1;i++){
            int j=(n-i)/2,k=(n-i)-(n-i)/2;
            ans=max(ans,sin(i)+sin(j)+sin(k));
        }
        printf("%.9lf
    ",ans);
    }

    B.小学生容斥,2^m次系列。

    #include <stdio.h>
    #include <iostream>
    #include <algorithm>
    #include <memory.h>
    using namespace std;
    typedef long long ll;
    #define N 2
    const int maxn=2005;
    const int L=1<<20;
    int a[maxn],T,n,m;ll f[L];int bin[L];
    ll gcd(ll n,ll m){
        return m?gcd(m,n%m):n;
    }
    inline ll lcm(ll n,ll m){return n/gcd(n,m)*m;}
    void dfs(int stp,int s,ll w){
        if (w>n) return ;
        if (stp>m) {f[s]+=n/w;return ;}
        dfs(stp+1,s<<1,w);
        dfs(stp+1,s<<1|1,lcm(w,a[stp]));
    }
    int main(){
    
        for (int i=1;i<L;i++) bin[i]=bin[i>>1]+(i&1);
        for (scanf("%d",&T);T--;) {
            memset(f,0,sizeof f);
            scanf("%d %d",&n,&m);
            for (int i=1;i<=m;i++) scanf("%d",&a[i]);
            dfs(1,0,1);ll ans=0;
            for (int j=0;j<m;j++)
            for (int i=0;i<(1<<m);i++)
            if (((i>>j)&1)==0) f[i]-=f[i+(1<<j)];
            for (int i=0;i<(1<<m);i++)
            if (bin[i]&1) ans+=f[i];
            printf("%lld
    ",ans);
        }
        return 0;
    }

    剩下就一堆不会……

    Ctm烦得跟什么一样,Etm卡空间卡常数,还狗日的不开栈。

    D裸FFT算下。

    #include<bits/stdc++.h>
    #define N 1000005
    typedef long long ll;
    using namespace std;
    const double pi=acos(-1);
    struct E{
        double x,y;
        E (double x=0,double y=0):x(x),y(y){}
    }a[N];
    E operator+(const E &a,const E &b){return E(a.x+b.x,a.y+b.y);}
    E operator-(const E &a,const E &b){return E(a.x-b.x,a.y-b.y);}
    E operator*(const E &a,const E &b){return E(a.x*b.x-a.y*b.y,a.x*b.y+a.y*b.x);}
    int n,m,l,q,L,nmax;
    int r[N],c[N];ll ans[N];
    void FFT(E *x,int k){
        for (int i=0;i<n;i++) if (i<r[i]) swap(x[i],x[r[i]]);    
        for (int i=1;i<n;i<<=1){
            E wn(cos(pi/i),sin(pi*k/i));
            for (int j=0;j<n;j+=(i<<1)){
                E w(1,0),l,r;
                for (int p=j;p<j+i;p++,w=w*wn){
                    l=x[p],r=x[p+i];
                    x[p]=l+w*r;
                    x[p+i]=l-w*r;    
                }
            }
        }
        if (k==-1) for (int i=0;i<=n;i++) x[i].x/=n;
    }
    inline int read(){
        int f=1,x=0;char ch;
        do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');
        do{x=x*10+ch-'0';ch=getchar();}while(ch>='0'&&ch<='9');
        return f*x;
    }
    int main(){
        int T=read();
        while(T--){
            n=read();q=read();m=n;nmax=0;L=0;
            memset(ans,0,sizeof(ans));memset(a,0,sizeof(a));
            for(int i=1;i<=m;i++)c[i]=read(),nmax=max(n,c[i]),a[c[i]].x++;
            nmax*=2;for (n=1;n<=nmax;n<<=1,L++);
            for(int i=0;i<n;i++)r[i]=(r[i>>1]>>1)|((i&1)<<(L-1));
            FFT(a,1);
            for(int i=0;i<=n;i++)a[i]=a[i]*a[i];
            FFT(a,-1);
            for(int i=1;i<=n;i++)ans[i]=(ll)(a[i].x+0.5);
            for(int i=1;i<=m;i++)ans[c[i]*2]--;
            for(int i=1;i<=n;i++)ans[i]>>=1;
            for(int i=n;i>=1;i--)ans[i]+=ans[i+1];
            for(int i=1;i<=q;i++){
                int k=read();printf("%lld
    ",ans[k]);
            }
        }
    }

    好气啊,要是知道开栈我就能rank1了

    巨气。

  • 相关阅读:
    第七讲 宋词:婉约之曲与豪放之声
    P2024 食物链
    可以吹一年的事
    信息传递
    11.11模拟赛总结(又名斗地主战记)
    11.9模拟赛总结
    扩展欧几里得(exgcd模板)
    发糖果(拓扑排序模板)
    高斯消元
    关于我
  • 原文地址:https://www.cnblogs.com/zcysky/p/7074476.html
Copyright © 2020-2023  润新知