这是第一题https://www.luogu.org/problemnew/show/P1046
这道题嘛,陶陶能够到的高度是固定的,所以可以枚举每个苹果,与陶陶能够到的高度比较,然后再把计数器加1就行了。
#include
#include
using namespace std;
int a[15],hei,ans;
int main()
{
freopen("apple.in","r",stdin);
freopen("apple.out","w",stdout);
for(int i=1; i<=10; i++)
cin>>a[i];
cin>>hei;
hei+=30;//滔滔能摸到的最高的位置
for(int i=1;i<=10;i++)
if(a[i]<=hei)
ans++;//如果能摸到,那么ans+1
cout<return 0;
}
这是第二题:https://www.luogu.org/problemnew/show/P1047
这道题,用的是一个简简单单的线段树,也就没有其他的考点了。
#include
#include
using namespace std;
int len,n,a[40100];
void insert(int x,int l,int r,int left,int right)
{
if(a[x]==r-l+1)
return;
if(l==left&&r==right){
a[x]=r-l+1;
return;
}
int m=(l+r)/2;
if(right<=m)
insert(x+x,l,m,left,right);
else if(left>m)
insert(x+x+1,m+1,r,left,right);
else{
insert(x+x,l,m,left,m);
insert(x+x+1,m+1,r,m+1,right);
}
a[x]=a[x+x]+a[x+x+1];//把两边的值加起来就好了~~~
}
int main()
{
freopen("tree.in","r",stdin);
freopen("tree.out","w",stdout);
cin>>len>>n;
for(int i=1;i<=n;++i){
int x,y;
cin>>x>>y;
insert(1,0,len,x,y);
}
cout<1-a[1]<return 0;
}
这里是第三题:https://www.luogu.org/problemnew/show/P1048
这道题,好像就是一道简单的背包问题吧~ ~
二话不说,直接上我的代码
#include
#include
using namespace std;
int T,M,f[200][1100],t[200],m[200];
void prepare()
{
for(int j=1;j<=T;++j){
if(j1]) f[1][j]=0;
else f[1][j]=m[1];
}
for(int i=2;i<=M;++i){
for(int j=1;j<=T;++j){
if(j>=t[i])
f[i][j]=max(f[i-1][j],m[i]+f[i-1][j-t[i]]);
else
f[i][j]=f[i-1][j];
}
}
}
int main()
{
freopen("medic.in","r",stdin);
freopen("medic.out","w",stdout);
cin>>T>>M;
for(int i=1;i<=M;++i)
cin>>t[i]>>m[i];
prepare();
cout<return 0;
}
至于第四题嘛,有点难度,我今后会专门写一篇博客的。