- 闫晟淏 的博客
2025年2月7日 思维训练 day4(未完成版)
- @ 2025-2-7 12:08:29
错题:
章节四T2
错因:
未理解取出的意思,写成了改为d而不是改成0。
思路:
一个个输入橙子的大小,小于等于b则被记录果汁总量的加上,如果大于果汁机能盛的总量则改为0,小田要操作的次数加一。
参考代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,b,d,a,sum=0,cnt=0;
cin>>n>>b>>d;
for(int i=0;i<n;i++){
cin>>a;
if(a<=b) sum+=a;
if(sum>d){
sum=0;
cnt++;
}
}
cout<<cnt<<endl;
return 0;
}
章节四T4
错因:
代码过于复杂,思路不清晰。
思路:
通过计算一边最少要花的钱数来推导另一边要花的钱数, 如果另一边要用的钱数 少于看守想要获得的钱数,则输出-1。
参考代码
#include<bits/stdc++.h>
using namespace std;
int main(){
bool t=true;
int n,a,b,c,d;
cin>>n;
for(int i=0;i<4;i++){
cin>>a>>b>>c>>d;
if(min(a,b)+min(c,d)<=n){
t=false;
cout<<i+1<<" "<<min(a,b)<<" "<<n-min(a,b);
return 0;
}
}
if(t) cout<<-1;
return 0;
}
章节四T5
错因:
把包涵认为是只能拥有 所以sort排序之后再判断,导致失误。
思路
使用桶排序来记录其中出现的数字 for循环判定各个≤K的数是否存在, 如果全存在就计数变量+1。
参考代码
#include<bits/stdc++.h>
using namespace std;
int a[10002];
int b[10];
int main(){
int n,k,as,cnt=0,sum=0;
cin>>n>>k;
for(int i=0;i<n;i++){
for(int j=0;j<10;j++){
b[j]=0;
}
for(int j=0;j<cnt;j++){
a[j]=0;
}
bool t=true;
cnt=0;
cin>>as;
while(as){
a[cnt++]=as%10;
as/=10;
}
for(int i=0;i<cnt;i++){
b[a[i]]=1;
}
for(int i=0;i<=k;i++){
if(!b[i]) t=false;
}
if(t) sum++;
}
cout<<sum<<endl;
return 0;
}
THE END