第二周比赛题解
第一场比赛:
第一题代码:
#include <bits/stdc++.h>
using namespace std;
int k,n=1;
double s=0;
int main()
{
cin>>k;
while(s<=k)
{
s+=1/double(n);n++;
}
cout<<n-1;
return 0;
}
第二题代码:
#include <bits/stdc++.h>
using namespace std;
char s[10005];
int n;
double cnt=0;
bool pd[4];
int main()
{
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input9.txt","r",stdin);
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output9.txt","w",stdout);
scanf("%s",s);
n=strlen(s);
for(int i = 0;i < n;i++)
{
if(s[i]=='c')
{
cnt+=2.5;
if(!pd[0])cnt+=2.5,pd[0]=1;
}
if(s[i]=='t')
{
cnt+=2.5;
if(!pd[1])cnt+=2.5,pd[1]=1;
}
if(s[i]=='r')
{
cnt+=2.5;
if(!pd[2])cnt+=2.5,pd[2]=1;
}
if(s[i]=='l')
{
cnt+=2.5;
if(!pd[3])cnt+=2.5,pd[3]=1;
}
}
printf("%.lf",cnt);
if((long long)cnt==cnt&&(long long)cnt%25==0)printf("\nH");
return 0;
}
第三题代码:
#include <bits/stdc++.h>
using namespace std;
char s[10000005];
int n;
long long I=0,K=0,U=0,N=0;
int main()
{
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input9.txt","r",stdin);
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output9.txt","w",stdout);
scanf("%s",s);
n=strlen(s);
for(int i = 0;i < n;i++)
{
if(s[i]=='i')I++;
else if(s[i]=='k')K+=I;
else if(s[i]=='u')U+=K;
else if(s[i]=='n')N+=U;
}
printf("%lld",N);
return 0;
}
第四题代码:
#include <bits/stdc++.h>
using namespace std;
char s[10000005];
int n;
long long F=0,L=0,O=0,R=0,cnt=0;
int main()
{
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input0.txt","r",stdin);
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output0.txt","w",stdout);
scanf("%s",s);
n=strlen(s);
for(int i = 0;i < n;i++)
{
if(s[i]=='f')F++;
else if(s[i]=='l')L+=F;
else if(s[i]=='o')O+=L;
else if(s[i]=='r')
{
if(cnt<1)cnt++;
else R+=O;
}
}
printf("%lld",R);
return 0;
}
第五题代码:
#include <bits/stdc++.h>
using namespace std;
int n;
long long a[1000005],q[1000005];
long long merge_sort_res(int l,int r)
{
if(l>=r)return 0;
int mid=l+r>>1;
long long res=merge_sort_res(l,mid)+merge_sort_res(mid+1,r);
int i=l,j=mid+1,t=1;
while(i<=mid&&j<=r)
{
if(a[i]<=a[j])q[t++]=a[i++];
else
{
q[t++]=a[j++];
res+=mid-i+1;
}
}
while(i<=mid)q[t++]=a[i++];
while(j<=r)q[t++]=a[j++];
for(i=l,j=1;i<=r;i++,j++)a[i]=q[j];
return res;
}
int main()
{
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input9.txt","r",stdin);
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output9.txt","w",stdout);
scanf("%d",&n);
for(int i = 1;i <= n;i++)scanf("%lld",&a[i]);
printf("%lld",merge_sort_res(1,n));
return 0;
}
第五题代码:
#include <bits/stdc++.h>
using namespace std;
long long a[10000010];
unordered_map<long long, int> pos;
long long read() {
long long x = 0, f = 1;
char c = getchar();
while (c < '0' || c > '9') {
if (c == '-') f = -1;
c = getchar();
}
while (c >= '0' && c <= '9') {
x = (x << 3) + (x << 1) + (c ^ 48);
c = getchar();
}
return x * f;
}
int main() {
int n, i, j = 1, ans = 1;
n = read();
for (i = 1; i <= n; i++)
a[i] = read();
for (i = 1; i <= n; i++) {
pos[a[i]]++;
while (pos[a[i]] > 1) {
pos[a[j]]--;
j++;
}
ans = max(ans, i - j + 1);
}
printf("%d", ans);
}
第二场比赛:
第一题代码:
#include <bits/stdc++.h>
using namespace std;
int n;
long long a[1000005],q[1000005];
long long merge_sort_res(int l,int r)
{
if(l>=r)return 0;
int mid=l+r>>1;
long long res=merge_sort_res(l,mid)+merge_sort_res(mid+1,r);
int i=l,j=mid+1,t=1;
while(i<=mid&&j<=r)
{
if(a[i]<=a[j])q[t++]=a[i++];
else
{
q[t++]=a[j++];
res+=mid-i+1;
}
}
while(i<=mid)q[t++]=a[i++];
while(j<=r)q[t++]=a[j++];
for(i=l,j=1;i<=r;i++,j++)a[i]=q[j];
return res;
}
int main()
{
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input9.txt","r",stdin);
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output9.txt","w",stdout);
scanf("%d",&n);
for(int i = 1;i <= n;i++)scanf("%lld",&a[i]);
printf("%lld",merge_sort_res(1,n));
return 0;
}
第二题代码:
#include <bits/stdc++.h>
using namespace std;
char s1[10005],s2[10005];
int n,m;
long long a[10005];
int main()
{
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input0.txt","r",stdin);
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output0.txt","w",stdout);
scanf("%s%s",s1,s2);
n=strlen(s1);
m=strlen(s2);
for(int i = 0;i < n;i++)
{
for(int j = 0;j < m;j++)
{
if(s1[i]==s2[j])
{
if(j==0)a[j]++;
else a[j]+=a[j-1];
}
}
}
printf("%lld",a[m-1]);
return 0;
}
第三题代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input0.txt","r",stdin);
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output0.txt","w",stdout);
for(int i = 1;i <= 114514;i++)printf("admin orz orz orz tql tql\n");
return 0;
}
第四题代码:
#include <bits/stdc++.h>
using namespace std;
void pd(string s)
{
string x="";
int i,j;
j=0;
for(i=s.size()-1;i>=0;)
{
if(s[i]<0)
{
x+=s[i-1];
x+=s[i];
j+=2;
i-=2;
}
else
{
x+=s[i];
j++;
i--;
}
}
if(s==x)cout << "Yes";
else cout << "No";
}
int main()
{
string s;
getline(cin,s);
pd(s);
return 0;
}
第五题代码:
#include <bits/stdc++.h>
using namespace std;
int n,cnt=0,a=0,b=0;
int main()
{
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input0.txt","r",stdin);
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output0.txt","w",stdout);
cin>>n;
while(n)
{
cnt+=n;
a+=n;b+=n;
n=a/3+b/4;
a%=3;b%=4;
}
printf("%d",cnt);
return 0;
}
第六题代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input9.txt","r",stdin);
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output9.txt","w",stdout);
double n;
scanf("%lf",&n);
printf("%.3lf",sqrt(n));
return 0;
}