随笔 - 531  文章 - 0  评论 - 3  阅读 - 10215 

有n个苹果,和一个数k,第i个苹果的重量是k+i(1<=i<=n). 已知其中只有一个苹果是甜的,所有比它重量轻的都是苦的,比它重的都是酸的。为了要找出甜的苹果,就要去一个一个地吃它,且吃了咬了苹果就必须把它吃完,不管苹果是苦的还是酸的。

例如,先吃#1,
如果#1是甜的,花费1
如果#2是甜的,那么选择吃#3,不管#3是什么味道,都可以推测出#2和#4的味道,那么花费1+3
如果#3是甜的,第二次选择吃#3, 共花费1+3 = 4
如果#5是甜的,方案和上面一样, 共花费1+3 = 4
总共1+4+4+4 = 13,这方案更好。

给出n和k,问最少的吃的苹果总重量是多少?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
const int N= 503 ;
 int n,m,f[N][N];
 int dp(int l,int r){
    if(l>r) return 0;
    if(f[l][r]!=-1) return f[l][r];
    if(l==r ) return f[l][r];
    int t= 1e9;
    for(int k=l;k<=r;k++)
        t=min(t,dp()+f[k+1][r]+(k+m)*(r-l+1));
         
    return f[l][r] =t;
 }
  
 signed main(){
    int tes;cin>>tes;
    int cas=0;
    while(tes--){
        cin>>n>>m;
        memset(f,-1,sizeof f) ;
         
        printf("Case %d: %d\n", ++cas,dp(1, n));
    }  
 }

 

posted on   towboat  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示