P1270 “访问”美术馆

#include<bits/stdc++.h>
using namespace std;
int t, n, m, dp[1005][605];
//dp[i][j]表示到第i个走廊,在这里(及其子树)要用j秒时间偷的最多画数
struct node {
    int tim, pic; //tim表示走廊时间,pic表示图片个数
}tr[5005];

inline int read() {
    int red = 0, f_f = 1; char ch = getchar();
    while(ch>'9' || ch <'0') {if(ch=='-') f_f = -1; ch = getchar();}
    while(ch>='0' &&ch<='9') red = red*10+ch-'0', ch = getchar();
    return red*f_f;
}

void dfs_read(int a) { //读入基本差不多
    tr[a].tim = read() * 2, tr[a].pic = read();
    //走廊要走肯定是来回走的,所以读入时直接*2就避免后面这么多个*2了
    if(!tr[a].pic) {
        dfs_read(a << 1); dfs_read(a << 1| 1);
    }
}

void dfs(int a, int r) {
    if(dp[a][r] || !r) return;
    //第一遍交WA了,就是这里写挂了,要注意不要打错,打错就凉凉了
    if(tr[a].pic) { //已经到最里面了
        dp[a][r] = min(tr[a].pic, (r - tr[a].tim) / 5);
        //计算到第a个走廊在这里(及他子树)要花费r秒的时间偷的做多画数
        return;
    }
    for (int i = 0; i <= r - tr[a].tim; i++) { //枚举往左用几秒
        dfs(a << 1, i); //左边用 i 秒 
        dfs(a << 1 | 1, r - tr[a].tim - i); //右边用 r-tim-i 秒 
        //还要减去过a的走廊的时间(已经*过2了
        dp[a][r] = max(dp[a][r], dp[a << 1][i] + dp[a << 1 | 1][r - tr[a].tim - i]);
    }
}

int main()
{
    memset(dp, 0, sizeof(dp));
    t = read() - 1; //就是众所周知的坑,警察来了你还逃得走吗?
    dfs_read(1);
    dfs(1, t); //因为没有返回值所以放外面
    printf("%d\n", dp[1][t]);
    return 0;
}

  

转载于:https://www.cnblogs.com/hahaha2124652975/p/11243517.html

Python网络爬虫与推荐算法新闻推荐平台:网络爬虫:通过Python实现新浪新闻的爬取,可爬取新闻页面上的标题、文本、图片、视频链接(保留排版) 推荐算法:权重衰减+标签推荐+区域推荐+热点推荐.zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值