Warning: session_start(): open(/tmp/sess_c3e8f9cd6c68a071399c30bf73b52f9c, O_RDWR) failed: No space left on device (28) in /data/wiki/inc/init.php on line 239

Warning: session_start(): Failed to read session data: files (path: ) in /data/wiki/inc/init.php on line 239

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/auth.php on line 430

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/actions.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/lib/tpl/dokuwiki/main.php on line 12
2020-2021:teams:namespace:牛客多校第六场 [CVBB ACM Team]

用户工具

站点工具


2020-2021:teams:namespace:牛客多校第六场

牛客多校第六场

数学题较多。

B

太菜了。

点击以显示 ⇲

点击以隐藏 ⇱

#include<stdio.h>
 
#define mod 1000000007
 
long long a[20000010];//函数值
long long b[20000010];//异或和
 
void init()
{
    b[0]=0;
    a[0]=1;
    long long temp5=1;
    int i;
    for(i=1;i<20000005;i++)
    {
        temp5*=500000004;
        temp5%=1000000007;
        a[i]=((a[i-1]*(mod-temp5+1))%mod);
        b[i]=b[i-1]^a[i];
    }
}
 
int main()
{
    init();
    int T;
    scanf("%d",&T);
    while(T--)
    {
        int p;
        scanf("%d",&p);
        printf("%lld\n",b[p]);
    }
}

C

水。

点击以显示 ⇲

点击以隐藏 ⇱

#include<stdio.h>
 
long long int n,m,t;
double b[205],ans[205],c[205][205],a[205][205],ans1;
 
int main()
{
	scanf("%lld",&t); 
    while(t--)
	{
		scanf("%lld%lld",&n,&m);
		long long i,j;
        for(i=0;i<n;i++)
		{
            for(j=0;j<m;j++)
			{
                scanf("%lf",&a[i][j]);
            }
        }
        ans1=0;
        for(j=0;j<m;j++)
		{
            b[j]=0;
            ans[j]=0;
            for(i=0;i<n;i++)
			{
                b[j]+=a[i][j];
                c[i][j]=b[j]/a[i][j];
                ans[j]=(ans[j]>c[i][j])?ans[j]:c[i][j];
            }
            ans1=(ans1>ans[j]?ans1:ans[j]);
        }
        printf("%.8f\n",ans1);
    }
}

E

构造很有趣,有一点难度。不过在下面直接给出来了,应该不用多讲吧。

点击以显示 ⇲

点击以隐藏 ⇱

#include<stdio.h>
 
int n,k,t;
 
int main()
{
	scanf("%d%d",&n,&k); 
    if(n%2)
	{
        if(k!=0)
		{
			printf("-1\n");
		}
        else
		{
            t=n;
            int cnt=0;
            while(t--)
			{
                if(t%2)
				{
                    printf("%d ",cnt);
                }
                else
				{
                    printf("%d ",n-cnt);
                    cnt++;
                }
            }
        }
    }
    else
	{
        if(k!=n/2)
		{
			printf("-1\n");
		}
        else
		{
            printf("%d %d ",n,n/2);
            t=n-2;
            int cnt=1;
            while(t--)
			{
                if(t%2)
				{
                    printf("%d ",cnt);
                }
                else
				{
                    printf("%d ",n-cnt);
                    cnt++;
                }
            }
        }
    }
}

F

以下是补题。

点击以显示 ⇲

点击以隐藏 ⇱

 

G

点击以显示 ⇲

点击以隐藏 ⇱

 

H

点击以显示 ⇲

点击以隐藏 ⇱

 

I

点击以显示 ⇲

点击以隐藏 ⇱

 

K

最初我开了两个map,结果TLE。

这个版本的标程里用到了stable_sort(例如归并排序),亲测删掉stable_则通过率0%。因此需要保证排序时元素有序性。

点击以显示 ⇲

点击以隐藏 ⇱

#include<stdio.h>
 
#include<algorithm>
#include<vector>
 
using namespace std;
 
int a[500111],ord[500111],n,k;
 
bool cmp(int x,int y)
{
	return a[x]<a[y];
}
 
bool check()
{
	int i;
	for(i=1;i<=n;i++)
	{
		ord[i]=i;
	}
	stable_sort(ord+1,ord+n+1,cmp);
	vector<pair<int,int> > vs;
	for(i=2;i<=n;i++)
	{
		if(a[ord[i]]==a[ord[i-1]])
		{
			int p1=ord[i-1],p2=ord[i];
			if(p2-p1>=k)
			{
				continue;
			}
			int vl=p2%k,vr=(p1-1)%k;
			if(vl<=vr)
			{
				vs.push_back(make_pair(vl,vr));
			}
			else
			{
				vs.push_back(make_pair(vl,k-1));
				vs.push_back(make_pair(0,vr));
			}
		}
	}
	sort(vs.begin(),vs.end());
	int MX=-1;
	for(i=0;i<(int)vs.size();i++)
	{
		if(MX<vs[i].first-1)
		{
			return true;
		}
		MX=(MX>vs[i].second?MX:vs[i].second);
	}
	if(MX<k-1)
	{
		return true;
	}
	return false;
}
 
void solve()
{
	scanf("%d%d",&n,&k);
	int i;
	for(i=1;i<=n;i++)
	{
		scanf("%d",&a[i]);
	}
	if(check())
	{
		puts("YES");
	}
	else
	{
		puts("NO");
	}
}
 
int main()
{
	int tc;
	scanf("%d",&tc);
	while(tc--)
	{
		solve();
	}
	return 0;
}
2020-2021/teams/namespace/牛客多校第六场.1596013610.txt.gz · 最后更改: 2020/07/29 17:06 由 great_designer