巅峰赛#15 T1~T3题解
2024-12-02 07:41:19
发布于:江苏
T1 高塔
这道题较为简单,需要注意的是判断另一座高塔是否大于最左边的高塔。(不会只有我没看清题目被卡了半天吧)
时间复杂度:
#include<bits/stdc++.h>
using namespace std;
int n,x,y;//滚动优化
int main(){
cin>>n>>x;//先录入第一个元素
for(int i=2;i<=n;++i){
cin>>y;
if(y>x){//如果大于,直接结束
cout<<i;
return 0;
}
}
cout<<-1;//如果无,输出-1
return 0;//好习惯
}
T2 营养均衡
其实这题只要把每一项加起来,在进行判断是否大于标准就行了。赛时我保险开了 long long
,经过测验不用开。
时间复杂度:
#include<bits/stdc++.h>
using namespace std;
int n,m,a[3][101];//滚动优化
bool f;//全局变量bool默认是false
int main(){
cin>>n>>m;
for(int i=1;i<=m;++i) cin>>a[0][i];//读入标准量
while(n--){
for(int i=1;i<=m;++i){
cin>>a[2][i];//读入每一项
a[1][i]+=a[2][i];//把每一项相加
}
}
for(int i=1;i<=m;++i){
if(a[0][i]>a[1][i]){
f=true;
break;
}
}
if(!f) cout<<"Yes";//!是取反
else cout<<"No";
return 0;//好习惯
}
T3 ^_^ 还是 :-(
有一定思维难度,要特判,不妨先实现 与 不相同这个条件。
如果有一项是 ,就只能取 这个值,如果是其他数,就可以取 。
我们定义一个变量,如果一项是 ,就把它增加 ,如果一项不是 ,就把它减少 ,最后只需要判断这个变量是否大于 就行了。
易证:如果 的数量比其他数少就不可行。
原因:如果其他数多,标准量就会小于 ,不难推断出肯定可以分给别的值。
时间复杂度:
#include<bits/stdc++.h>
using namespace std;
int T,n,x;//滚动优化
int main(){
cin>>T;
while(T--){
int cnt=0;//定义标准量,注意main里的变量要初始化
cin>>n;
while(n--){
cin>>x;
if(x==1) ++cnt;
else --cnt;
}
if(cnt<=0) cout<<"^_^";
else cout<<":-(";
cout<<'\n';//别忘了换行
}
return 0;//好习惯
}
至于后面 题······当然是因为我太菜了不会写
最后祝大家都能在以后的竞赛中取得好成绩!
全部评论 3
2024-12-02 来自 江苏
0顶
2024-12-02 来自 广东
0给个赞吧球球了,刚入站
2024-12-02 来自 江苏
0
有帮助,赞一个