目录
T1:牛式
https://www.luogu.com.cn/problem/P1211
题目分析:
枚举三位数和两位数所有的可能,再根据可用的数以及数位要求进行check,check成功后用计数器将可行的方法数量记录下来,然后输出。
错因:
在有限的时间和水平下,为选择更加简易的暴力枚举方法。考试时,原思路是通过将可用的数进行组合,达到可行的可能,但自身能力不够,代码有漏洞,所以错误
正确代码:
#include<bits/stdc++.h>
using namespace std;
int ans;
bool shu[10001];
int check(int num) {
while(num) {
if(shu[num%10]==false) return 0;
num/=10;
}
return 1;
}
int main() {
int n,a;cin>>n;
for(int i=1; i<=n; i++) {
cin>>a;
shu[a]=true;
}
for(int i=100; i<=999; i++) {
for(int j=10; j<=99; j++) {
if(i*(j/10)<=999&&i*(j/10)>=100&&i*(j%10)<=999&&i*(j%10)>=100&&i*j<=9999&&i*j>=1000) {
if(check(i)&&check(j)&&check(i*(j%10))&&check(i*(j/10))&&check(i*j)) ans++;
}
}
}
cout<<ans;
return 0;
}
T2:歌曲
https://www.luogu.com.cn/problem/P2035
题目分析:
第 i 首曲子有一个初始权值 Ri (1≤Ri≤10,000)。
当一首曲子播放完毕,接下来播放的将是所有曲子中权值最大的那首(如果有两首或多首曲子的权值相同,那么这些曲子中编号最小的那首会被选中)。
一首曲子在播放结束后,它的权值会被平均地分给其他 N−1 首曲子,它本身的权值清零。
如果一首曲子的权值无法被平均分配(也就是说,无法被 N−1 整除),那么被N−1 除的余数部分将会以 11 为单位,顺次分配给排名靠前的曲子(也就是说,顺序为曲目 11 、曲目 2⋯2⋯ 依次下去。当然,刚播放过的那首曲子需要被跳过),直到多出的部分被分配完。
此题仅需按题目要求模拟即可。
错因:
忘模拟了一种情况,并且循环的变量名有一点混乱。
正确代码:
#include<bits/stdc++.h>
using namespace std;
int n,t,a[1005],sum;
int main() {
cin>>n>>t;
for(int i=1; i<=n; i++) cin>>a[i];
while(t--) {
int mx=0,j=1;
for(int i=1; i<=n; i++) {
if(a[i]>mx) mx=a[i],j=i;
}
sum=a[j]/(n-1);
cout<<j<<endl;
for(int i=1; i<=n; i++) {
if(i!=j) a[i]+=sum;
}
if(a[j]%(n-1)!=0) {
sum=a[j]%(n-1);
for(int i=1; i<=n&∑ i++) {
if(i!=j) a[i]++,sum--;
}
}
a[j]=0;
}
return 0;
}
T3:牛棚移动
https://www.luogu.com.cn/problem/P6207
题目分析:
这是一道dfs的模板题,就像是走迷宫一样。
错因:
看到Special Judge这几个字就以为只用输出任意一个路径就可以了,但还是需要输出最短路径。
正确代码:
#include <bits/stdc++.h>
using namespace std;
int r,c,minn=2e9;
int b[50000][2],a[50000][2];
char mp[120][85];
bool vis[120][85];
int dx[5]={0,0,0,-1,1},dy[5]={0,1,-1,0,0};
void dfs(int x,int y,int step){
a[step][0]=x;
a[step][1]=y;
if(x==r&&y==c){
if(step<minn){
minn=step;
for(int i=0;i<=step;i++){
b[i][0]=a[i][0];
b[i][1]=a[i][1];
}
}
return;
}
if(step>=minn) return;
for(int i=1;i<=4;i++){
int nx=dx[i]+x;
int ny=dy[i]+y;
if(nx<1||ny<1||nx>r||ny>c||vis[nx][ny]==true||mp[nx][ny]=='*')continue;
vis[nx][ny]=true;
dfs(nx,ny,step+1);
}
}
int main(){
cin>>r>>c;
for(int i=1;i<=r;i++)for(int j=1;j<=c;j++) cin>>mp[i][j];
dfs(1,1,0);
for(int i=0;i<=minn;i++)cout<<b[i][0]<<' '<<b[i][1]<<endl;
return 0;
}
T4:齿轮传动
https://www.luogu.com.cn/problem/P2903
题目分析:
这是一道bfs的模板题,只需替换相关数据即可。
错因:
时间全去死磕前面的题了,没时间做。(时间规划!!!!!(虽然还是不会))
总结:
优点:
Ⅰ.做题策略可行,能在指定时间内完成会的题。
缺点:
Ⅰ.粗心,做第二题时忘记模拟了一种情况。
Ⅱ.对题目了解错误,导致第三题错误。
Ⅲ.自身实力还不足。所以菜就多练!!
希望下一次能拿到理想的成绩,加油!!