#创作计划#新年欢乐赛全题解
2024-02-26 15:38:13
发布于:浙江
此贴为本蒟蒻自编写的新年欢乐赛全题解!
新年快乐!
T1 新年快乐
传送门
此题需要找出规律
样例1:
3 5
1 2 3
先把1加入3,得到4,再把1加入4,得到5;把1加入2,得到3,再把1加入3,得到4,再把1加入4,得到5;
一共5次
样例2:
3 7
3 2 2
先把2加入3,得到5,再把2加入5,得到7;把2加入2,得到4,再把2加入4,得到6,;
一共4次
可以发现,我们只需要把每个大数不断加上最小的数,直到不能加为止。
所以先排序,再循环即可
#include<bits/stdc++.h>
using namespace std;
int a[1001];
int main(){
int n,f;
cin>>n>>f;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
int s=a[1],t=0;;
for(int i=2;i<=n;i++){
t+=(f-a[i])/s;
}
cout<<t;
return 0;
}
T2 新年大扫除
传送门
此题也很简单,只需找出规律:
从到遍历,如果为O,就把到都变成N,最后算出次数。
#include<bits/stdc++.h>
using namespace std;
int n,k,s=0;
char a[10000100];
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++){
if(a[i]=='O'){
for(int j=i;j<=i+k-1;j++){
if(a[j]=='O') a[j]='N';
}
s++;
}
}
cout<<s;
return 0;
}
T3 新年魔法
传送门
此题也是非常简单,一直循环直到或者小于等于0,算出次数即可。
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
int s=0;
for(int i=1;i<=i;i++){
if(a>=b) a-=b;
else b-=a;
s++;
if(a<=0||b<=0) break;
}
cout<<s;
return 0;
}
T4 新年排列(重点!)
传送门
此题是整个比赛最难的一题,其实也是需要找出规律:
以下为蒟蒻整理出的规律!可能不太一样哦。我其实也思考了好久才想出来
首先我们观察3、4样例:
样例3:
4 2
1 3 2 4
很明显,只需要把3、4排序后移动到末尾。
样例4:
4 2
2 3 1 4
这里只需把2、3排序后移到后面,变为1 4 2 3
,再把3、4排序后移动到后面即可。(与说明提示有所不同,为了容易理解所以用这种方法)
我们再自创几个样例:
自创样例1:
5 2
1 4 2 5 3
很明显,只需要把4、5移动到后面即可。
自创样例2:
7 2
1 3 4 2 5 6 7
这里我们发现,只需把3、4移动到后面,变为1 2 5 6 7 3 4
,再把5、6移动到后面,得到1 2 3 4 7 5 6
,最后把6、7移动到后面即可
自创样例3:
7 3
1 6 2 5 3 4 7
这里只需把5、6、7移动到后面即可。
我们发现,我们只需用循环找出第一个出现以下情况的数:排在比他小1的数的前面
,然后在那个数之前的数不用动,把剩下的数除以k(除不尽向上取整),即可。
比如自创样例3,1 6 2 5 3 4 7
,我们发现5排在4前面,是第一个出现这种情况的数,所以1-4不用动,剩下的5、6、7一共3个数,除以k,得到1,输出即可。
#include<bits/stdc++.h>
using namespace std;
int n,k,a[100100],s[100100];
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) if(a[i]==1) s[1]=i;
int res=0;
for(int i=2;i<=n;i++){
bool flag=false;
for(int j=s[i-1];j<=n;j++){
if(a[j]==i){
flag=true;
s[i]=j;
}
}
if(flag==false) {
res=i-1;
break;
}
}
if(res==0) cout<<0;
else{
int t=(n-res)/k;
if(t*k!=n-res) t++;
cout<<t;
}
return 0;
}
T5 新年游戏
传送门
此题也是很简单,只需要找出规律:
只需要在排序后,从最大的数开始,不断地减去比他小的数,然后再排序一遍。
#include<bits/stdc++.h>
using namespace std;
int n,a[101];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
for(int k=1;k<=n;k++){
for(int i=n;i>=1;i--){
for(int j=i-1;j>=1;j--){
if(a[j]!=a[i]){
a[i]-=a[j];
sort(a+1,a+1+n);
j=0;
}
}
}
}
int s=0;
for(int i=1;i<=n;i++) s+=a[i];
cout<<s;
return 0;
}
T6 新年均馔
传送门
此题非常简单,只需要找到最小的数,最后剩下的饼干数量就是这个数乘上n,当然别忘了要输出的事拿出的饼干数量。
#include<bits/stdc++.h>
using namespace std;
int n,a[101];
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+1+n);
int s=0;
for(int i=1;i<=n;i++) s+=a[i];
cout<<s-n*a[1];
return 0;
}
T7 新年花坛守护战
传送门
此题只需要判断每个花坛上的年兽数量是否大于等于k,如果是,就用烟花炮,否则用幸运福花。
#include<bits/stdc++.h>
using namespace std;
int a[101];
int main(){
int n,k,s=0;
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++){
if(a[i]>=k) s+=k;
else s+=a[i];
}
cout<<s;
return 0;
}
T8 新年红包
传送门
此题为类模版题,可以使用bool来做
#include<bits/stdc++.h>
using namespace std;
int n,a[101];
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++){
bool flag=true;
for(int j=1;j<=n;j++){
if(a[j]==a[i]&&j!=i) flag=false;
}
if(flag==true){
cout<<a[i];
break;
}
}
return 0;
}
T9 新年糖果
传送门
此题只需用循环找到n*2糖果数量的最大值即可,从大到小判断。
#include<bits/stdc++.h>
using namespace std;
int n,s,ans;
int main(){
cin>>n>>s;
int t=n*2;
if(n*2*(n+1)<s) s=n*2*(n+1);
for(int i=n+1;i>=0;i--){
if(i*t<=s&&s-i*t>=n+1-i){
ans=i;
break;
}
}
cout<<ans;
return 0;
}
T10 新年消消乐
传送门
此题只需要判断偶数的个数即可,如果偶数的个数不为n,就失败了。因为两数之和为奇数,一定为一奇一偶。
#include<bits/stdc++.h>
using namespace std;
int n,a[101];
int main(){
cin>>n;
for(int i=1;i<=n*2;i++) cin>>a[i];
int s=0;
for(int i=1;i<=2*n;i++){
if(a[i]%2==0) s++;
}
if(s==n) cout<<"YES";
else cout<<"NO";
return 0;
}
感谢观看!给个三连再走吧~
全部评论 13
我系蒟蒻
2024-02-19 来自 浙江
1惊现B站连招(ΩДΩ)/
2024-04-24 来自 浙江
0整第二了?
2024-03-09 来自 浙江
0666
2024-02-22 来自 云南
0挖去
2024-02-22 来自 浙江
0?盗版!
2024-02-22 来自 浙江
0
厉害
厉害
+12024-02-19 来自 浙江
0厉害
2024-02-18 来自 浙江
0老师出没!
2024-03-13 来自 浙江
0
%%%
2024-02-18 来自 浙江
0qpqp
2024-02-18 来自 广东
0%%%
2024-02-18 来自
0新年快乐
2024-02-18 来自 浙江
0求个精
2024-02-18 来自 浙江
0顶
2024-02-18 来自 浙江
0
有帮助,赞一个