题目背景

loidc,LOI中的传说级哲♂学家,曾经创造一天内入坑maxlongint个弃坑0x7fffffff个的神奇纪录。目前,loidc最喜欢的游戏就是地下城与勇♂士。

题目描述

Loidc是一个勤奋的孩子。 他每天都会勤奋的搬砖刷疲劳,每天都会期待着各种BOSS给他爆点什么神奇的东西(例如魔剑..),但是每次刷远古总会坑到连门票钱也赚不回来。 最近loidc新技能get√ 他每天都会朗诵一遍线段树,将自己升级为”Deep Dark Fantasy”模式(其实是每天去给腾讯爹送钱)下才去搬砖,所以他人品次次爆发,每次刷图后腾讯都会象征性给他爆点好东西。 今天他又来刷一个叫做“痛苦之村列瑟芬”的图,每次刷完图后都会有N个掉落物。但是loidc很健忘,他每次都会忘清空背包,所以不一定是所有东西都能带回去。 i个物品有两个属性A_i和B_i,现在loidc需要在其中选取若干个物品,使得sum{A_i + B_i}最大,同时sum{A_i},sum{B_i}均非负。但是由于loidc太弱,所以这个工作交给了你。

输入输出格式

输入格式:

第一行,一个整数,表示掉落物个数N。 接下来N行,每行两个整数,表示A_i和B_i。

输出格式:

一个整数,表示最大的sum{A_i + B_i}。

输入输出样例

输入样例#1:

  1. 5
  2. -5 7
  3. 8 -6
  4. 6 -3
  5. 2 1
  6. -8 -5
输出样例#1:

  1. 8

说明

N <= 100 , |A_i| <= 1000 , |B_i| <= 1000 sum{}表示求和

LuoguP2340 奶牛会展 双倍经验爽!!

提交地址 : https://www.luogu.org/problemnew/show/P2297#sub

      and https://www.luogu.org/problemnew/show/P2340#sub

分析:

  裸裸的01背包吗。

 把属性a当做体积, 属性b当做价值;

妥妥的ok;

 但有个小问题,数组并不能存负值;

 所以要平移数组,最后就是裸背包;

 然后枚举移动的位数,判断b属性大于零,然后 取max;

 代码:

  1. // By zZhBr
  2. #include <iostream>
  3. #include <cstdio>
  4. #include <cstring>
  5. #include <cmath>
  6. using namespace std;
  7.  
  8. int n;
  9.  
  10. int m;
  11. int a[], b[];
  12.  
  13. int dp[];
  14.  
  15. int ans;
  16.  
  17. int main()
  18. {
  19. cin >> n;
  20.  
  21. for(register int i = ; i <= n ; i ++)
  22. {
  23. scanf("%d%d", &a[i], &b[i]);
  24. m += a[i] > ? a[i] : ;
  25. }
  26.  
  27. memset(dp, 0xcf, sizeof dp);
  28.  
  29. m *= ;
  30. dp[m/] = ;
  31.  
  32. for(register int i = ; i <= n ; i ++)
  33. {
  34. if(a[i] > )
  35. {
  36. for(register int j = m ; j >= a[i] ; j --)
  37. {
  38. dp[j] = max(dp[j], dp[j-a[i]] + b[i]);
  39. }
  40. }
  41. else
  42. {
  43. for(register int j = ; j <= m - a[i] ; j ++)
  44. {
  45. dp[j] = max(dp[j], dp[j-a[i]] + b[i]);
  46. }
  47. }
  48. }
  49.  
  50. int k = m / ;
  51.  
  52. for(register int i = ; i <= k ; i ++)
  53. {
  54. if(dp[i+k] >= )
  55. {
  56. ans = max(ans, i + dp[i+k]);
  57. }
  58. }
  59.  
  60. printf("%d\n", ans);
  61. return ;
  62. }

zZhBr

Luogu P2297 刷图 DP的更多相关文章

  1. 【Trie图+DP】BZOJ1030[JSOI2007]-文本生成器

    [题目大意] 给出单词总数和固定的文章长度M,求出至少包含其中一个单词的可能文章数量. [思路] 对于至少包含一个的类型,我们可以考虑补集.也就是等于[总的文章可能性总数-不包含任意一个单词的文章总数 ...

  2. html+JS刷图实现视频效果

    网页播放视频须要载入播放器,可是通过刷图也能实现视频播放的效果 JS中用到Z-index属性,记录一篇解说Z-index属性的博客的地址: http://www.cnblogs.com/gisdrea ...

  3. Tarjan缩点+DAG图dp

    题目背景 缩点+DP 题目描述 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只 ...

  4. ZOJ 1232 【灵活运用FLOYD】 【图DP】

    题意: copy自http://blog.csdn.net/monkey_little/article/details/6637805 有A个村子和B个城堡,村子标号是1~A,城堡标号是A+1~B.马 ...

  5. HDU 2296 Ring ( Trie图 && DP && DP状态记录)

    题意 : 给出 m 个单词,每一个单词有一个权重,如果一个字符串包含了这些单词,那么意味着这个字符串拥有了其权重,问你构成长度为 n 且权重最大的字符串是什么 ( 若有权重相同的,则输出最短且字典序最 ...

  6. codeforces 677D(分层图dp)

    Codeforces 677D 传送门:https://codeforces.com/contest/677/problem/D 题意: 给你一个n*m的方格图,每个点有一个权值val,现在要求你从坐 ...

  7. 1023: [SHOI2008]cactus仙人掌图(DP+单调队列优化)

    这道题吗= =首先解决了我多年以来对仙人掌图的疑问,原来这种高大上的东西原来是这个啊= = 然后,看到这种题,首先必须的就是缩点= = 缩点完之后呢,变成在树上找最长路了= =直接树形dp了 那么那些 ...

  8. ACdream 1083 有向无环图dp

    题目链接:点击打开链接 人民城管爱人民 Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 128000/64000 KB (Java/Othe ...

  9. 【特殊的图+DP】【11月校赛】大家一起玩游戏

    大家一起玩游戏 Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submi ...

随机推荐

  1. SQLServer的网络协议

    一.总结 1.SQL Server访问协议包括Shared Memory.Named Pipes.TCP/IP.VIA四种,多数应用系统都是通过TCP/IP协议访问数据库.安装数据库后需要启用TCP/ ...

  2. Spring Boot 面试题总结

    1.什么是spring boot 答案:springboot是用来简化spring应用的初始搭建和开发过程,使用特定的配置文件来配置,例如application.properties,简化来maven ...

  3. 47 (OC)* OC反射机制

    Objective-C反射机制:是类似于Java的反射机制,这种动态机制可以让oc语言更加的灵活.这句话是对oc反射机制的初步认识,不过具体的怎么类似于java机制,怎么让oc更加的灵活,还得看下面的 ...

  4. Mybatis源码解析,一步一步从浅入深(一):创建准备工程

    Spring SpringMVC Mybatis(简称ssm)是一个很流行的java web框架,而Mybatis作为ORM 持久层框架,因其灵活简单,深受青睐.而且现在的招聘职位中都要求应试者熟悉M ...

  5. Spring Cloud Gateway 之请求坑位[微服务IP不同请求会失败]

    问题产生背景 在使用Spring Cloud Gateway过程中,希望配置多Routes映射不同的微服务,因为Gateway 和Zuul的访问路径不同(zuul 会带有服务service Id),造 ...

  6. asp.netcore3.0 netstandard2.1 使用 DbProviderFactories 连接数据库

    在.netstandard2.0时 System.Data.Common 这个包里并没有加入DbProviderFactories DbProviderFactories类在.netframework ...

  7. java、if判断和循环

    一.选择.循环语法    选择        if            if(表达式)语句A:                如果表达式的值是真的,就会执行语句A,否则不执行             ...

  8. 判断java中最多的词组

    其中的难点,是空格,以及如果第一个是空格怎么办,虽然事后看着很简单,但是做的时候却十分的困难! static void Daunyu()throws IOException {     Word wo ...

  9. 从壹开始学习 NetCore 新篇章 ║ Blog.Core 开发社之招募计划书

    宫 哈喽大家好,国庆马上就要来了,在新的第四季度来临之际,祝大家年末能顺顺利利,解决所有的难题.大家可能从我的标题里也能看的出来,老张又要耍花样,搞事情了,近来随着 netcore 3.0 的正式推出 ...

  10. Jmeter日记,很乱很随意

    这个笔记是写给自己看的,很乱很随意,可能以后自己都看不懂.哈哈 Jmeter两种录制方式: 1使用badboy 2.使用代理 浏览器设置代理 参数化 随机参数化 插件的使用 官网下载和说明https: ...