懒得朝硬盘的分类里放,存这了

RMQ;

const int sup = 50010; int dp[sup], s[sup], x[sup], y[sup]; struct node { int mmax, mmin;//分别记录所求区间最大最小值 }pz; int n; int big[sup][35], lit[sup][35];//2^31就是int的最大范围了,big[i][j]表示的是i到i+2^j-1范围内的最大值,所以int范围内j最大到32足够 int ary[sup]; inline int Max(int a, int b) { if(a > b) return a; return b; } void Update(int w)//更新w - > n区间的最大值 { big[w][0] = dp[w]; for(int i = 1; w + (1 << i) - 1 <= n; ++ i) big[w][i] = Max(big[w][i - 1], big[w + (1 << (i - 1)) ][i - 1]); } //区间最大值,正在为看不懂线段树发愁,LX一位牛爆料ST, //给不懂线段树的菜带来了福音 inline int RMQ(int st,int ed) { if(st > ed) return 0; if(ed > n) ed = n; int k = (int) (log((double)ed - st + 1) / log(2.0)); if(k < 0) return 0; return Max( big[st][k], big[ed - (1 << k) + 1][k] ); } int main() { while(~scanf("%d", &n)) { memset(big, 0, sizeof(big)); for(int i = 1; i <= n; ++ i) scanf("%d %d %d", s + i, x + i, y + i); for(int i = n; i > 0; -- i) { dp[i] = s[i] + RMQ(i + x[i], i + y[i] - 1); Update(i); } printf("%d/n", dp[1]); } return 0; }

裸搞:

const int sup = 50010; int dp[sup]; int s[sup], x[sup], y[sup]; int n; inline void MAX(int &a, int b) { if(a < b) a = b; } inline int Max(int i)//暴力枚举最优解 { int res = -1; for(int j = i + x[i]; j < i + y[i] && j <= n; ++ j) MAX(res, dp[j]); return res; } /*这个前面的决策可以影响后面的,所以dp的时候倒着推*/ //假设第i天要钱,那么最大收益就是来自未来的合法要钱天数内的某一天再次要钱,dp枚举这一天 //第i天所要钱币获得的最大收入:dp[i] = s[i] + max(dp[j + i], x[i] <= j < y[i]) int main() { while(~scanf("%d", &n)) { for(int i = 1; i <= n; ++ i) scanf("%d %d %d", s + i, x + i, y + i); for(int i = n; i > 0; -- i) dp[i] = s[i] + Max(i);//暴力枚举 printf("%d/n", dp[1] + 1); } return 0; }

ZOJ 3381 Osaisen Choudai !相关推荐

  1. zoj3381 Osaisen Choudai!

    题意:忽略题目背景,就是要收集最多的钱, 如果第i天拿到了si 的钱, 那么第i+x[i] 天 到 第i + y[i] - 1 天必须再拿一次,否则就再也拿不到钱了,当然,第i +x[i]天之前也是拿 ...

  2. ZOJ 2723 Semi-Prime ||ZOJ 2060 Fibonacci Again 水水水!

    两题水题: 1.如果一个数能被分解为两个素数的乘积,则称为Semi-Prime,给你一个数,让你判断是不是Semi-Prime数. 2.定义F(0) = 7, F(1) = 11, F(n) = F( ...

  3. zoj 1204 Additive equations

    ACCEPT acm作业 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=204 因为老师是在集合那里要我们做这道题.所以我很是天 ...

  4. 【HDU/POJ/ZOJ】Calling Extraterrestrial Intelligence Again (素数打表模板)

    http://poj.org/problem?id=1411  POJ http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=168 ...

  5. 模拟 ZOJ 3878 Convert QWERTY to Dvorak

    题目传送门 1 /* 2 模拟:手敲map一一映射,累! 3 除了忘记读入字符串不能用gets用getline外还是很顺利的AC了:) 4 */ 5 #include <cstdio> 6 ...

  6. 矩阵连乘积 ZOJ 1276 Optimal Array Multiplication Sequence

    题目传送门 1 /* 2 题意:加上适当的括号,改变计算顺序使得总的计算次数最少 3 矩阵连乘积问题,DP解决:状态转移方程: 4 dp[i][j] = min (dp[i][k] + dp[k+1] ...

  7. ZOJ 3597 Hit the Target! (线段树扫描线 -- 矩形所能覆盖的最多的点数)

    ZOJ 3597 题意是说有n把枪,有m个靶子,每把枪只有一发子弹(也就是说一把枪最多只能打一个靶子), 告诉你第 i 把枪可以打到第j个靶, 现在等概率的出现一个连续的P把枪,在知道这P把枪之后,你 ...

  8. 九度OJ—题目1032:ZOJ

    题目描写叙述: 读入一个字符串.字符串中包括ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出.当某个字符用完时,剩下的仍然依照ZOJ的顺序输出. 输入: 题目包括多组用例,每组用例占一行,包括ZOJ ...

  9. ZOJ 1410 题解

    题目链接:http://acm.zju.edu.cn/show_problem.php?pid=1410 又是一道简单题,以前做过一次,结果放弃了,今天看了一下,觉得还是比较简单于是下手了. 题目的大 ...

最新文章

  1. 获得PMP证书的这一年
  2. 如何去掉桌面标签背影
  3. layui与eazyui的区别_jquery easyui和layui的区别是什么?
  4. Boost:传输文件的测试程序
  5. 十进制大数的加法运算
  6. Netty 中 IOException: Connection reset by peer 与 java.nio.channels.ClosedChannelException: null
  7. WPF中ContextMenu(右键菜单)使用Command在部分控件上默认为灰色的处理方法
  8. zouxy09博客原创性博文导航
  9. 000+0000 格式的时间转成 年月日
  10. Linux常用基本命令( rmdir, rm, mv )
  11. Python入门(一)-打开世界之Hello World
  12. 【物流选址】基于matlab节约算法求解考虑碳排放及带时间窗的物流选址问题【含Matlab源码 1589期】
  13. android字体设置
  14. C语言练习实例——费氏数列
  15. linux 执行程序时,提示not found问题分析
  16. 网页报404解决办法
  17. hdu3182 状态压缩水题
  18. jQuery绚丽霓虹灯文字特效
  19. mac系统安装手机安装包
  20. 由于找不到vcruntime140_1.dll,无法继续执行代码重新安装程序可能会解决此问题

热门文章

  1. 模拟测静电场实验报告
  2. 为什么要使用二级指针?
  3. 利用java输出一个月的日历表
  4. 「津津乐道播客」#197. 拼娃时代:聊聊帝都拼娃史
  5. oracle 注册表丢了,一次Windows 注册表中注册表项目丢失导致的Oracle 数据库启动有关问题...
  6. 2021国开计算机应用基础形考任务答案,2021电大计算机应用基础形考试题答案解析.doc...
  7. 【洛谷P1462】通往奥格瑞玛的道路
  8. 用el-select处理后台数据进行页面渲染,返回数据如果为空或者无法渲染文字时的处理
  9. H5 水平居中 水平垂直居中
  10. linux组权限管理,Linux组管理和权限管理