从此开始荔枝(励志)

P2437蜜蜂路线

1.该题目应使用高精度(血的教训)

2.应用斐波那契数列:f(i)=f(i-1)+f(i-2)就可以转化为从m到n的路线数等价于1到m-n的路线数,代码如下:

void cal(int index){
    int x=0;
    int i=1;
    while(i<=lens){
        f[index][i]=f[index-1][i]+f[index-2][i]+x;
        x=f[index][i]/10;
        f[index][i]%=10;
        i++;
    }
    if(x>0){
        lens++;
        f[index][lens]=x;
    }
}

3.数列的前两项应赋值为1和2

4.使用二维数组比较好,主代码如下:

int main(){
    cin>>m>>n;
    f[1][1]=1,f[2][1]=2;
    for(int i=3;i<=n-m;i++){
        cal(i);
    }
    for(int i=lens;i>=1;i--){
        cout<<f[n-m][i];
    }
    return 0;
}

P1478陶陶摘苹果

1.该题使用贪心思想:先摘花费力气小的苹果(前提是能够得到,记得判断一下):

bool cmp(apple a1,apple a2){
    if(a1.y!=a2.y){
        return a1.y<a2.y;
    }
    return a1.x<a2.x;
}

2.可以使用结构体:

struct apple{
    double x,y;
}ap[5002];

3.(没有了~~)这道题很简单,但要讲究做题策略,不会就跳过,先做会的题

主干如下:

for(int i=1;i<=n;i++){
        if(ap[i].x<=(a+b)){
            sum+=ap[i].y;
            if(sum<=s){
                cnt++;
            }
            else break;
        }
    }
    cout<<cnt<<endl;

P2249查找

1.本题可以使用二分答案法:

int sea(int arr[],int n,int x){
    int high=n,mid,low=1,res=-1;
    while(low<=high){
        mid=(high+low)/2;
        if(x==a[mid]){
            res=mid;
            high=mid-1;
        }
        else if(a[mid]>x){
            high=mid-1;
        }
        else low=mid+1;
    }
    return res;
}

(额~~好像也没有别的了)(那我还是错了)(干嘛,哎呦~~)

(奉劝各位一句,一定要多做题)

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值