2020牛客暑期多校训练营(第⼀场)

F Infinite String Comparision

题目大意

Bobo定义无限循环字符串\(x^{\infty }=xxxx...\),现在他有两个字符串,在无限循环的情况下请你比较两者的字典序大小。

题目分析:

无限字符串比较——题目给出了字符串的无限循环定义,并且给了我们两个字符串,要求在无限自循环连接的情况下比较两个字符串的字典序大小,并且输出。需要注意的是题目给的字符串的循环节长度最大有10的5次方,并且中最多可以输入2*10的6次方组数据,所以我们不能真正的无限循环比较,需要在一定的次数内比较,如果没有出现不匹配的情况,我们就认为两个字符串是相同的。这里,我们根据周期性引理,如果在第一个a+b-gcd(a,b)字符中没有不匹配,则两个字符串是相同的。

代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
	string a,b;
	bool flag = false;
	while(cin>>a>>b)
	{
		flag = false;
		int i = 0,j = 0;
		//int num = 1000*max(a.size(),b.size());
		int num = a.size()+b.size()-__gcd(a.size(),b.size());
		cout<<__gcd(a.size(),b.size())<<endl;
		while(num--)
		{
			if (a[i]>b[j]){
				puts(">");flag = true;break;
			}
			else if (a[i]<b[j]){
				puts("<");flag = true;break;
			}
			else{
				i++;j++;
				if (i == a.size()) i = 0;
				if (j == b.size()) j = 0;
			}
		}
		if(!flag) puts("=");
	}
 } 

J Easy Integration

题目大意:

给你一个数字n,计算\(\int_{0}^{1}\left ( x-x^{2} \right )^{n}dx,1\leq n\leq 10^{6}\)

题目分析:

代码

#include<cstdio>
#include<cstdlib>
#define SF scanf
#define PF printf
typedef long long ll;
const int N=2000006;
const int P=998244353;
ll n,jc[N],dc[N];
ll fen(ll x){ //分数取模  fen(x)=(1/x)%P
	ll r=1,t=x,y=P-2;
	for(;y;y>>=1,t=t*t%P)if(y&1)r=r*t%P;
	return r%P;
}
int main(){
	jc[1]=1;
	for(int i=2;i<=1000000;i++){ //阶乘取余打表 
		jc[i]=(jc[i-1]*(ll)i)%P; 
	}
	dc[1]=1;
	for(int i=2;i<=2000001;i++){ //阶乘逆元打表
		dc[i]=(dc[i-1]* fen((ll)i))%P;
	}
	while(SF("%d",&n)!=EOF){
		PF("%lld\n",jc[n]*jc[n]%P*dc[(n<<1)+1]%P);
	}
	return 0;
}

I-1 or 2

题目大意:

有一个n个点,m条边的图,给出每个点的度数,问是否可以成为该图的子图。

题目分析:

代码:

待补。

H-Minimum-cost Flow

题目大意:

给出一个费用流图,每条边的流量上限相同且不固定。有q个询问,每个询问中给出每条边的流量上限(分数,且保证≤1)。当图中的流量为1个单位的时候,求出此时的费用。

题目分析:

代码:

待补。
posted @ 2020-07-13 21:36  Treasure_lee  阅读(151)  评论(0)    收藏  举报