目录
六、P2911 [USACO08OCT] Bovine Bones G
一、P1047 [NOIP2005 普及组] 校门外的树
1.题目
2.解决分析
1.存储:将路上的所有数都打上标记,表示这个点没有访问过。
2.读入区间的头和尾,从这个区间的头开始循环,到尾结束,标记为访问过。
3.顺序访问路上的树,访问过就变成1(访问过为0)。
4.将标记为0的树加起来就求出还存在的树的数目。
3.代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int l,m;
cin>>l>>m;
int start,end;
int a[10005]={0};
for(int i=1;i<=m;i++)
{
cin>>start>>end;
for(int j=start;j<=end;j++)
{
if(a[j]==0)
{
a[j]=1;
}
}
}
int tem=0;
for(int i=0;i<=l;i++)
{
if(a[i]==0)
{
tem++;
}
}
cout<<tem;
return 0;
}
二、P5729 【深基5.例7】工艺品制作
1.题目
2.解决分析
1.存储:设置一个三维数组将每个小方块看成一个小点,默认初始化为0
2.循环:输入需要消除的小方块的范围,将出现的小方块看成点进行标记为1
3.总和:将没有被标记的点(小方块)总和加起来就是剩下的小方块的体积
3.代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int w,x,h;
cin>>w>>x>>h;
int q;
cin>>q;
int x1,y1,z1;
int x2,y2,z2;
int a[50][50][50]={0};
int tem=0;
for(int i=1;i<=q;i++)
{
cin>>x1>>y1>>z1;
cin>>x2>>y2>>z2;
for(int j=x1;j<=x2;j++)
{
for(int k=y1;k<=y2;k++)
{
for(int l=z1;l<=z2;l++)
{
if(a[j][k][l]==0)
{
a[j][k][l]=1;
}
}
}
}
}
for(int i=1;i<=w;i++)
{
for(int j=1;j<=x;j++)
{
for(int k=1;k<=h;k++)
{
if(a[i][j][k]==0)
{
tem++;
}
}
}
}
cout<<tem;
return 0;
}
三、P2550 [AHOI2001] 彩票摇奖
1.题目
2.问题分析
1.存储:将中奖号码存储在数组中
2.遍历:输入号码遍历是否对应中奖的号码存入数组中
3.总和:将刚数组中有提及的按奖的排名去累加
3.代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[100]={0};
int tem=0;
int num;
int price[10000]={0};
int b[100]={0};
for(int i=0;i<7;i++)
{
cin>>a[i];
}
for(int j=0;j<n;j++)
{
tem=0;
for(int k=0;k<7;k++)
{
cin>>num;
for(int i=0;i<7;i++)
{
if(num==a[i])
{
tem++;
}
}
}
price[j]=tem;
}
for(int m=0;m<n;m++)
{
if(price[m]==7)
{
b[0]++;
}
if(price[m]==6)
{
b[1]++;
}
if(price[m]==5)
{
b[2]++;
}
if(price[m]==4)
{
b[3]++;
}
if(price[m]==3)
{
b[4]++;
}
if(price[m]==2)
{
b[5]++;
}
if(price[m]==1)
{
b[6]++;
}
}
for(int i=0;i<7;i++)
{
cout<<b[i]<<" ";
}
return 0;
}
四、P1554 梦中的统计
1.题目
2.解决分析
利用除法算出个位数
3.代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m;
cin>>n>>m;
int a[1000]={0};
for(int i=n;i<=m;i++)
{
for(int j=i;j;j/=10)
{
a[j%10]++;
}
}
for(int k=0;k<=9;k++)
{
cout<<a[k]<<" ";
}
return 0;
}
五、P1614 爱与愁的心痛
1.题目
2.问题分析
利用数组存储
3.代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long n,m;
cin>>n>>m;
long long tem=0;
int a[200000];
for(long long i=1;i<=n;i++)
{
cin>>a[i];
}
int sum=0;
for(long long i=1;i<=m;i++)
{
sum+=a[i];
}
for(long long i=1;i<=n-m+1;i++)
{
for(long long k=1;k<=m;k++)
{
tem+=a[i+k-1];
}
if(tem<sum)
{
sum=tem;
}
tem=0;
}
cout<<sum;
return 0;
}
六、P2911 [USACO08OCT] Bovine Bones G
1.题目
2.问题分析
1.存储:数组存储出现次数的频率
2.注意:要求出数组的最大长度(因为这个困住好久)
3.代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int s1,s2,s3;
int a[100000]={0};
cin>>s1>>s2>>s3;
int tem=0;
int maxn=0;
int sum=0;
for(int i=1;i<=s1;i++)
{
for(int j=1;j<=s2;j++)
{
for(int k=1;k<=s3;k++)
{
a[i+j+k]++;
maxn=max(maxn,i+j+k);
}
}
}
for(int i=1;i<=maxn;i++)
{
if(a[i]>tem)
{
tem=a[i];
sum=i;
}
}
cout<<sum;
return 0;
}
六、P1161 开灯
1.题目
2.问题分析
1.用数组存储没有关过灯的编号
2.注意要的是整数所以要进行强制类型转换
3.并且要对不关灯的重新定义为0,光是初始化不行
3.代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
double a,t;
cin>>n;
int m[2000000]={0};
for(int i=1;i<=n;i++)
{
cin>>a>>t;
for(double j=1;j<=t;j++)
{
if(m[int(j*a)]==0)
{
m[int(j*a)]=1;
}
else
{
m[int(j*a)]=0;
}
}
}
for(int i=1;;i++)
{
if(m[i]==1)
{
cout<<i;
break;
}
}
return 0;
}
七、P5731 【深基5.习6】蛇形方阵
1.题目
2.问题分析
利用二维数组找规律,注意要保证数组不能超出范围。
3.代码
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int x=1,y=0;
int k=1;
int a[15][15]={0};
while(k<=n*n)
{
while(y<n&&!a[x][y+1])
a[x][++y]=k++;
while(x<n&&!a[x+1][y])
a[++x][y]=k++;
while(y>1&&!a[x][y-1])
a[x][--y]=k++;
while(x>1&&!a[x-1][y])
a[--x][y]=k++;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
printf("%3d",a[i][j]);
}
cout<<endl;
}
return 0;
}