A
A题链接
根据题意模拟即可
AC代码:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<map>
#include<stack>
typedef long long ll;
using namespace std;
int main()
{
int a,b,c;
cin>>a>>b>>c;
cout<<c<<" "<<a<<" "<<b<<endl;
return 0;
}
B
B题链接
题意:N个物品,每个都有一个权值,询问是否存在M个物品,其中每个物品的权值不小于权值和1/4m
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<map>
#include<stack>
typedef long long ll;
using namespace std;
int main()
{
int a[50000];
int n,m;
double sum=0;
int k=0;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
sum+=a[i];
}
sum=sum/(4*m);
for(int i=1;i<=n;i++)
{
if(a[i]>=sum)
{
k++;
}
}
if(k>=m)
{
cout<<"Yes";
}
else
{
cout<<"No";
}
return 0;
}
C
C题链接
题意:给你N和K,每次可以把N替换为N和K差的绝对值,询问所有替换中N的最小值
模拟即可
AC代码:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<map>
#include<stack>
typedef long long ll;
using namespace std;
int main()
{
ll a,b;
cin>>a>>b;
ll c=a%b;
if(c==0)
{
cout<<0<<endl;
return 0;
}
else
{
ll x=b-c;
ll mins=min(x,c);
cout<<mins<<endl;
}
return 0;
}
D
D题链接
题意:lunlun数的定义是该数字每一位与相邻位差的绝对值小于等于1,求第k小的lunlun数
题解:1~9入队列,然后进行判断如果大于0则末尾减一入队,如果小于9则可以加一入队列。
AC代码:
#include<iostream>
#include<cstdio>
#include <stdio.h>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<map>
#include<vector>
#include <set>
#define ll long long
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#define inf 0x3f3f3f3f
using namespace std;
queue<ll> q;
int n;
int main()
{
cin>>n;
for(int i=1;i<=9;i++)
{
q.push(i);
}
for(int i=1;i<=n;i++)
{
ll pre=q.front();
q.pop();
if(i==n)
{
cout<<pre<<endl;
}
ll r=pre%10;
pre=pre*10+r;
if(r>0)
q.push(pre-1);
q.push(pre);
if(r<9)
{
q.push(pre+1);
}
}
return 0;
}
E
E题链接
题意: 给定一个字符串表示某人的工作日和休息日。只有在工作日才能工作,每次工作一天后的ccc天不能再工作。他一共要工作kkk天,问哪些天是必须工作的。
题解:先从前往后求出K个最快工作日,再从后往前求出K个最快工作日,
如果两边都参与的即为必须要做的
AC代码:
#include<iostream>
#include<cstdio>
#include <stdio.h>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<map>
#include<vector>
#include <set>
#define ll long long
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#define inf 0x3f3f3f3f
using namespace std;
int a[200020];
int b[200020];
char c[200020];
int n,k,c1;
int main()
{
int p=0,q=0;
int temp=99999999;
cin>>n>>k>>c1;
cin>>c;
for(int i=0; i<n; i++)
{
if(p==k)
{
break;
}
if(c[i]=='o'&&temp>=c1)
{
a[p++]=i;
temp=0;
}
else
{
temp++;
}
}
temp=99999999;
q=k-1;
for(int i=n-1; i>=0; i--)
{
if(q<0)
{
break;
}
if(c[i]=='o'&&temp>=c1)
{
b[q--]=i;
temp=0;
}
else
{
temp++;
}
}
for(int i=0;i<k;i++)
{
if(a[i]==b[i])
{
cout<<a[i]+1<<endl;
}
}
return 0;
}
本文解析了五道经典编程题目,包括模拟操作、物品选择、数值处理、特殊数生成及工作日安排,提供了完整的题解思路与AC代码,涵盖了算法、数据结构、字符串处理等核心内容。
516

被折叠的 条评论
为什么被折叠?



