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个单位的时候,求出此时的费用。
题目分析:
代码:
待补。

浙公网安备 33010602011771号