2016 Al-Baath University Training Camp Contest-1

时间:2022-04-03 06:43:31
2016 Al-Baath University Training Camp Contest-1

A题:http://codeforces.com/gym/101028/problem/A

题意:比赛初始值是1500,变化了几次,得到的正确结果和bug后的是否相等。(Tourist大佬好 Y(^o^)Y)

 #include <bits/stdc++.h>

 using namespace std;

 int main()
{
int t;
cin>>t;
while(t--) {
int n,r;
cin>>n>>r; int sum = ;
for(int i=;i<n;i++)
{
int x;
cin>>x;
sum+=x;
} if(sum==r)
puts("Correct");
else puts("Bug"); }
return ;
}

A. Codeforces Rating

B题:http://codeforces.com/gym/101028/problem/B

题意:b,p不分,i,e不分,大小写不分,看两个字符串是不是正确的。

 #include <bits/stdc++.h>

 using namespace std;

 char str1[],str2[];

 int main()
{
int t;
cin>>t;
while(t--) {
scanf("%s%s",str1,str2); int len = strlen(str1); if(strlen(str1)!=strlen(str2)) {
puts("No");
continue;
} for(int i=;i<len;i++)
{
if(str1[i]>='A'&&str1[i]<='Z')
str1[i] = 'a' + str1[i] - 'A'; if(str2[i]>='A'&&str2[i]<='Z')
str2[i] = 'a' + str2[i] - 'A';
} bool flag = true;
for(int i=;i<len;i++) {
if(str1[i]!=str2[i]) {
if(str1[i]=='b'&&str2[i]=='p')
continue;
if(str1[i]=='p'&&str2[i]=='b')
continue;
if(str1[i]=='i'&&str2[i]=='e')
continue;
if(str1[i]=='e'&&str2[i]=='i')
continue;
flag = false;
break;
}
} if(flag)
puts("Yes");
else puts("No"); }
return ;
}

B. Bonapity

C题:http://codeforces.com/gym/101028/problem/C

题意:已知A,B,求C有多少种情况满足这个式子:2016 Al-Baath University Training Camp Contest-1

2016 Al-Baath University Training Camp Contest-1

比赛的时候,很多同学没有看到取模,用java干;

 #include <bits/stdc++.h>

 using namespace std;

 int main()
{
int t;
cin>>t;
while(t--) {
int len;
cin>>len;
int a[],b[];
char stra[],strb[];
scanf("%s%s",stra,strb);
for(int i=;i<len;i++)
{
a[i] = stra[i]-'';
b[i] = strb[i]-'';
}
unsigned long long ans = ;
bool flag = true;
for(int i=;i<len;i++) {
if(a[i]==&&b[i]==)
continue;
if(a[i]==&&b[i]==)
continue;
if(a[i]==&&b[i]==){
flag = false;
break;
}
if(a[i]==&&b[i]==)
ans = ans*%;
}
if(flag)
cout<<ans<<endl;
else puts("IMPOSSIBLE");
} return ;
}

C. A or B Equals C

D题:http://codeforces.com/gym/101028/problem/D

题意:画图

 #include <bits/stdc++.h>

 using namespace std;

 char maps[][];

 int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(maps,'.',sizeof(maps)); int r,c,n;
cin>>r>>c>>n; while(n--)
{ int r1, c1, r2, c2;
char x;
cin>>r1>>c1>>r2>>c2>>x; for(int i=r1; i<=r2; i++)
{
for(int j=c1; j<=c2; j++)
{
maps[i][j] = x;
}
} }
for(int i=; i<=r; i++)
{
for(int j=; j<=c; j++)
printf("%c",maps[i][j]);
puts("");
} }
return ;
}

D. X and paintings

E题:http://codeforces.com/gym/101028/problem/E

题意:n个数的最大公约数

 #include <bits/stdc++.h>

 using namespace std;

 const int inf = 0x3f3f3f3f;

 int main()
{
int t;
int a[];
scanf("%d",&t);
while(t--) {
int minx = inf;
int n;
scanf("%d",&n);
for(int i=;i<n;i++) {
scanf("%d",&a[i]);
minx = min(minx,a[i]);
} int k;
for(k=minx;k>=;k--) {
bool flag = true;
for(int i=;i<n;i++) {
if(a[i]%k!=) {
flag = false;
break;
}
}
if(flag)
break;
}
int num = ;
for(int i=;i<n;i++)
num+=(a[i]/k);
printf("%d %d\n",k,num); }
return ;
}

E. Teams

F题:http://codeforces.com/gym/101028/problem/F

题意:字符串匹配(朴素匹配就ok了)

 #include <bits/stdc++.h>

 using namespace std;
char str1[],str2[];
int main()
{
int t;
cin>>t;
while(t--)
{
scanf("%s%s",str1,str2);
int len = strlen(str1); char op[][];
memset(op,,sizeof(op)); for(int i=; i<; i++)
{
int k=;
for(int j=; j<; j++)
{
if(i!=j)
op[i][k++] = str2[j];
}
} // for(int i=0;i<4;i++) {
// for(int j=0;j<3;j++)
// printf("%c",op[i][j]);
// puts("");
// } bool good = false;
for(int i=; i<len-; i++)
{
if(str1[i]==str2[]&&str1[i+]==str2[]&&str1[i+]==str2[]&&str1[i+]==str2[])
{
good = true;
break;
}
} if(good)
{
puts("good");
continue;
} bool al = false;
for(int i=; i<len-; i++)
{
if(str1[i]==op[][]&&str1[i+]==op[][]&&str1[i+]==op[][])
{
al = true;
break;
}
} if(al)
{
puts("almost good");
continue;
} al = false;
for(int i=; i<len-; i++)
{
if(str1[i]==op[][]&&str1[i+]==op[][]&&str1[i+]==op[][])
{
al = true;
break;
}
} if(al)
{
puts("almost good");
continue;
} al = false;
for(int i=; i<len-; i++)
{
if(str1[i]==op[][]&&str1[i+]==op[][]&&str1[i+]==op[][])
{
al = true;
break;
}
} if(al)
{
puts("almost good");
continue;
} al = false;
for(int i=; i<len-; i++)
{
if(str1[i]==op[][]&&str1[i+]==op[][]&&str1[i+]==op[][])
{
al = true;
break;
}
} if(al)
{
puts("almost good");
continue;
} puts("none"); }
return ;
}

F. Good Words

G题:http://codeforces.com/gym/101028/problem/G

题意:从左上角砸东西到目的地,途中碰壁。看可以不可以砸到目标。和省赛的球的碰撞类似。

2016 Al-Baath University Training Camp Contest-1

 #include <bits/stdc++.h>

 using namespace std;

 int main()
{
int t;
cin>>t;
while(t--) { int h,w,d;
cin>>h>>w>>d; int x = (h-)/(w-); //x个单周期
int mod = (h-)%(w-); int md;
if(x%==)
md = + mod;
else md = w - mod ; if(md==d)
puts("Yes");
else puts("No"); }
return ;
}

G. The Tower of Evil

H题:http://codeforces.com/gym/101028/problem/H

做到这里的时候,脑子已经晕掉了,题目也没怎么看清楚。

题意:n长的河流,两个人的速度是d,r,在start的位置不标记,求第一次踩到对方标记的时间。

2016 Al-Baath University Training Camp Contest-1

 #include <bits/stdc++.h>

 using namespace std;

 int v1[];
int v2[]; int main()
{
int t;
cin>>t;
while(t--)
{
memset(v1,,sizeof(v1));
memset(v2,,sizeof(v2));
int n,d,r;
cin>>n>>d>>r; int ans = ;
int td = d;
int tr = r;
v1[td] = ;
v2[tr] = ;
while(true)
{
if(v2[td]==true||v1[tr]==true)
{
break;
}
ans++;
td = (td + d)%n;
tr = (tr + r)%n;
v1[td] = true;
v2[tr] = true;
}
printf("%d\n",ans); }
return ;
}

H. The Endless River

I题:http://codeforces.com/gym/101028/problem/I

题意:屋顶有漏洞,用k个布去补洞,其中最长的布,使其最短。

2016 Al-Baath University Training Camp Contest-1

二分啊!

 #include <bits/stdc++.h>

 using namespace std;

 int a[];
int n,k;
int maxx;
bool calc(int x) {
int cur = ;
for(int i=;i<k;i++) {
if(cur==)
cur = cur + a[] + x -;
else {
for(int i=;i<n;i++) {
if(a[i]>cur)
{
cur = a[i];
break;
}
}
cur = cur + x -;
}
}
if(cur>=a[n-])
return true;
return false;
} int main()
{
int t;
cin>>t;
while(t--) {
cin>>n>>k;
for(int i=;i<n;i++)
scanf("%d",&a[i]);
maxx = a[n-];
int l=;
int r=a[n-]/k+;
while(l<r) {
int m = (r+l)/;
if(calc(m))
r=m;
else l = m+;
}
printf("%d\n",l);
}
return ;
}

I. March Rain

J题:http://codeforces.com/gym/101028/problem/J

题意:

一个数列a,他的最大的2i 的因子,由 i 组成的一个数列。

找一些a,他是递增的基础上,i 之和最大。

dp啊!

2016 Al-Baath University Training Camp Contest-1

 #include <bits/stdc++.h>

 using namespace std;

 int a[];
int as[];
int b[];
int dp[]; int main()
{
int t;
cin>>t;
while(t--)
{
memset(b,,sizeof(b));
memset(dp,,sizeof(dp)); int n;
cin>>n;
for(int i=; i<n; i++) {
cin>>a[i];
as[i] = a[i];
} for(int i=; i<n; i++)
{
while(as[i]%==)
{
b[i]++;
as[i] /=;
}
} dp[] = b[]; for(int i=; i<n; i++)
{
int k = ;
for(int j=; j<i; j++)
{
if(a[j]<a[i]&&k<dp[j])
{
k = dp[j];
}
}
dp[i] = k+b[i];
} int ans = -;
for(int i=; i<n; i++)
{
ans = max(ans,dp[i]);
}
cout<<ans<<endl; } return ;
}

J. X and Beasts

最后贴一下Rank.

2016 Al-Baath University Training Camp Contest-1