第三周比赛题解
第一场比赛:
第一题代码:
#include <bits/stdc++.h>
using namespace std;
long long n,dp[35];
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("%lld",&n);dp[1]=1;dp[2]=2;
for(long long i = 3;i <= n;i++)dp[i]=dp[i-1]+dp[i-2];
printf("%lld",dp[n]);
return 0;
}
第二题代码:
#include <bits/stdc++.h>
using namespace std;
long long n,dp[35];
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("%lld",&n);dp[1]=1;dp[2]=2;
for(long long i = 3;i <= n;i++)dp[i]=dp[i-1]+dp[i-2]+1;
printf("%lld",dp[n]);
return 0;
}
第三题代码:
#include <bits/stdc++.h>
using namespace std;
int n,a[10000005],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);
int n;
scanf("%d",&n);
for(int i = 1;i <= n;i++)scanf("%d",&a[i]);
for(int i = 2;i < n;i++)cnt+=(a[i]>a[i-1]&&a[i]>a[i+1]||a[i]<a[i-1]&&a[i]<a[i+1]);
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);
int n;
scanf("%d",&n);
printf("%d",(int)sqrt(n));
return 0;
}
第五题代码:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <map>
#include <vector>
#include <cstring>
#include <string>
#include <algorithm>
#include <cmath>
#include <iomanip>
#include <set>
#include <cstring>
using namespace std;
vector<int> e;
vector<int> res;
int n;
long long m;
long long fac[21];
int c_div(long long a, long long b){
int res = 0;
for(; b * res < a; res++);
return res;
}
int main(){
cin >> n >> m; fac[0] = 1;
for(int i = 1; i <= n; i++) e.push_back(i);
for(int i = 1; i <= n; i++) fac[i] = fac[i - 1] * (long long)i;
long long r = m;
for(int i = 1; i <= n; i++){
int p = c_div(r, fac[n - i]);
res.push_back(e[p - 1]);
e.erase(e.begin() + p - 1);
r -= (long long)(p - 1) * fac[n - i];
}
for(int i = 0; i < n; i++) cout << res[i] << " ";
cout << endl;
return 0;
}
第六题代码:
#include<bits/stdc++.h>
using namespace std;
int x,t=0,s=0;
int main(){
for(int i=1;i<=12;i++)
{
cin>>x;
t+=300;
if(t<x)
{
cout<<-i;
return 0;
}
t-=x,s+=t/100*100,t%=100;
}
cout<<s*1.2+t;
return 0;
}
第二场比赛:
第一题代码:
#include<bits/stdc++.h>
using namespace std;
#define int long long
priority_queue<int,vector<int>,greater<int>> pr;
signed main() {
int n, i, tem, cnt1 = 0, cnt2 = 0, ans = 0;
scanf("%lld", &n);
for (i = 1; i <= n; i++) {
scanf("%lld", &tem);
pr.push(tem);
}
for (i = 1; i < n; i++) {
cnt1 = pr.top();
pr.pop();
cnt2 = pr.top();
pr.pop();
ans += cnt1 + cnt2;
pr.push(cnt1 + cnt2);
}
printf("%lld",ans);
return 0;
}
第二题代码:
#include <bits/stdc++.h>
using namespace std;
int a[10],h,cnt=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);
for(int i = 0;i < 10;i++)scanf("%d",&a[i]);
scanf("%d",&h);h+=30;
for(int i = 0;i < 10;i++)cnt+=(h>=a[i]);
printf("%d",cnt);
return 0;
}
第三题代码:
#include<bits/stdc++.h>
using namespace std;
int a[10001],l,t,m,u,v;
int main(){
cin>>l>>m;
t=l+1;
for(int i=1;i<=m;i++)
{
cin>>u>>v;
for(int i=u;i<=v;i++)
{
if(a[i]==0)
{
a[i]=-1,t--;
}
}
}
cout<<t;
return 0;
}
第四题代码:
#include<bits/stdc++.h>
using namespace std;
int x,y,maxi=0,maxd=0;
int main(){
for(int i=1;i<=7;i++)
{
cin>>x>>y;
if(x+y>8&&x+y>maxi)
{
maxi=x+y,maxd=i;
}
}
cout<<maxd;
return 0;
}
第五题代码:
#include<bits/stdc++.h>
using namespace std;
int n,m,a[10001];
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=m;i++)
{
next_permutation(a+1,a+n+1);
}
for(int i=1;i<=n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
第六题代码:
#include <bits/stdc++.h>
using namespace std;
int n,x,cnt=0;
string s,minn;
int main()
{
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Input\\input9.txt","r",stdin);
// freopen("C:\\Users\\16708\\Documents\\Vijos\\Output\\output9.txt","w",stdout);
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n;
while(n--)
{
cin>>s>>x;
if(x>=5)
{
cnt++;
if(cnt==1)minn=s;
else minn=min(minn,s);
}
}
if(cnt)cout<<cnt<<endl<<minn;
else printf("xzx orz orz orz!!!");
return 0;
}