礼物gift(DP)
这道题的DP非常的有意思……
一开始我们总是会以为这是一个背包问题,直接dp[0] = 0,dp[j] += dp[j-c[i]]进行转移。之后统计一下从dp[m-minn]~dp[m]的答案之和为结果。
其中minn指花费最小的那个物品的花费。
不过这样是会丢解的。因为统计的过程我们只统计了不选最小的时候的情况,我们其实完全没有考虑到,选择了比一个物件花费小的所有物件却没有选择这个物件的情况。也就是说,上面的做法其实是相当于强制性不取最小的+全取的情况之和。
那么我们就应该选择强制性不取第2,3,……n个,然后保证前面比它们小的每一个都被选取,而更大的就直接背包dp,最后统计一下选不到当前这个物品共有多少种情况。也就是先从小到大排个序,之后依次处理就可以了。
啊啊啊怎么也想不到真是弱死了orz
- #include<cstdio>
- #include<algorithm>
- #include<cmath>
- #include<iostream>
- #include<queue>
- #include<cstring>
- #define rep(i,a,n) for(int i = a;i <= n;i++)
- #define per(i,n,a) for(int i = n;i >= a;i--)
- #define enter putchar('\n')
- using namespace std;
- typedef long long ll;
- const int M = ;
- const int mod = 1e7+;
- int read()
- {
- int ans = ,op = ;
- char ch = getchar();
- while(ch < '' || ch > '')
- {
- if(ch == '-') op = -;
- ch = getchar();
- }
- while(ch >= '' && ch <= '')
- {
- ans *= ;
- ans += ch - '';
- ch = getchar();
- }
- return ans * op;
- }
- int m,n,c[M],dp[M],minn = ,ans;
- int main()
- {
- // freopen("gift.in","r",stdin);
- // freopen("gift.out","w",stdout);
- n = read(),m = read();
- rep(i,,n) c[i] = read();
- sort(c+,c++n);
- rep(k,,n)
- {
- m -= c[k];
- if(m < ) break;
- if(m == || m < c[k+] || k == n)
- {
- ans++;
- break;
- }
- memset(dp,,sizeof(dp));dp[] = ;
- rep(i,k+,n)
- per(j,m,c[i]) dp[j] += dp[j-c[i]],dp[j] %= mod;
- rep(j,m-c[k+]+,m) ans += dp[j],ans %= mod;
- }
- printf("%d\n",ans);
- return ;
- }
- /*
- 6 25
- 8 9 8 7 16 5
- 30 250
- 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
- */
礼物gift(DP)的更多相关文章
- cdoj 1131 男神的礼物 区间dp
男神的礼物 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1131 Descr ...
- [UOJ422][集训队作业2018]小Z的礼物——轮廓线DP+min-max容斥
题目链接: [集训队作业2018]小Z的礼物 题目要求的就是最后一个喜欢的物品的期望得到时间. 根据$min-max$容斥可以知道$E(max(S))=\sum\limits_{T\subseteq ...
- 【CF506E】Mr. Kitayuta's Gift dp转有限状态自动机+矩阵乘法
[CF506E]Mr. Kitayuta's Gift 题意:给你一个字符串s,你需要在s中插入n个字符(小写字母),每个字符可以被插在任意位置.问可以得到多少种本质不同的字符串,使得这个串是回文的. ...
- UESTC 2015dp专题 A 男神的礼物 区间dp
男神的礼物 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/contest/show/65 Descri ...
- bzoj2228[ZJOI2011]礼物(gift)
据说联赛之前写题解可以涨RP 这题的输入格式半天没看懂-其实是有q层摞在一起,每一层大小都是p*r,依次输入q层的情况.那么首先我们枚举三种挖方块的姿势,分别使切出的方块的上面/前面/右面是正方形的面 ...
- P7276-送给好友的礼物【dp】
正题 题目链接:https://www.luogu.com.cn/problem/P7276?contestId=39577 题目大意 \(n\)个点的一棵树,\(k\)个关键点,两个人从根出发分别走 ...
- BZOJ 2228 礼物(gift)(最大子长方体)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2228 题意:给出一个只含有NP两种字母的长方体.从中找出只含有字母N的长方体,造型为a* ...
- P3331 [ZJOI2011]礼物(GIFT)
题解: 首先转化为平面问题 对于每一个z,f(x,y)的值为它能向上延伸的最大高度 ...莫名其妙想出来的是n^4 以每个点作为右下边界n^3枚举再o(n)枚举左下边界计算z的最大值 然而很显然这种做 ...
- 【整理】简单的数学期望和概率DP
数学期望 P=Σ每一种状态*对应的概率. 因为不可能枚举完所有的状态,有时也不可能枚举完,比如抛硬币,有可能一直是正面,etc.在没有接触数学期望时看到数学期望的题可能会觉得很阔怕(因为我高中就是这么 ...
随机推荐
- 抽球游戏(fwt)
地址:https://nanti.jisuanke.com/t/26017 分析: 现在是给定p,求是否存在这样的数列c,我们可以让p进行fwt变换,然后把点值都三次方根,然后再把得到的点值ufwt成 ...
- Java常用的集合类(转)
继上一篇文章http://www.cnblogs.com/EasonJim/p/6937690.html中介绍的集合类有非常多,但是在实际使用中,最常用的应该是下面这几种: Java的集合框架分为Li ...
- Spring Boot集成Spring Data Reids和Spring Session实现Session共享
首先,需要先集成Redis的支持,参考:http://www.cnblogs.com/EasonJim/p/7805665.html Spring Boot集成Spring Data Redis+Sp ...
- 用systemtap来做系统性能分析和事件分析
http://zhengheng.me/2015/02/11/systemtap-analy/
- OC - 读歌词
类的头文件: #import <Foundation/Foundation.h> //FILE_PATH是文件名称. #define FILE_PATH @"/Users/qia ...
- weex 项目开发(二) weex 与 weexpack 的区别
1.weex 与 weexpack 即 weex-toolkit 与 weexpack 的区别 weex-toolkit 初始化的项目是针对开发单个 Weex 页面而设计的,也就是说这样的项目只包括 ...
- 【LeetCode从零单排】No 114 Flatten Binary Tree to Linked List
题目 Given a binary tree, flatten it to a linked list in-place. For example,Given 1 / \ 2 5 / \ \ 3 4 ...
- 多线程网页爬虫 python 实现(二)
#!/usr/bin/env python #coding=utf-8 import threading import urllib import re import time cur=0 last= ...
- Git的使用 -- 用git玩翻github,结尾有惊喜!有惊喜!有惊喜!林妙妙看了说:牛呲呼啦带闪电 (三)(超详解)
简介 上一篇主要讲解的是Git安装及配置,这一篇就详细的从无到有的来用Git玩翻github. 一.什么是Github Github是全球最大的社交编程及代码托管网站(https://github.c ...
- 2015-03-12---外观模式,建造者模式(附代码),观察者模式(附代码),boost库应用
今天白天主要看了boost库的应用,主要是经常使用的一些库,array,bind,function,regex,thread,unordered,ref,smartpointers库,晚上看了看设计模 ...