智乃买瓜(another version)(DP+逆向思维)
题目连接
https://ac.nowcoder.com/acm/contest/23478/C
题面
思路
我们现在是已经知道每个重量的瓜的个数,出现质量和为奇数是由于我们购买半个瓜的操作
那么就可以从小到大逆推,首先能够知道,f[1]f[1]f[1]的值实际上就是质量为2的瓜的数目。
然后我们回顾上一题的状态转移方程:
f[i][j]=f[i−1][j]+f[i−1][j−a[i]]+f[i−1][j−a[i]∗2]f[i][j] =f[i-1][j] + f[i-1][j-a[i]] + f[i-1][j-a[i]*2]f[i][j]=f[i−1][j]+f[i−1][j−a[i]]+f[i−1][j−a[i]∗2]
我们通过你想思维,怎么加上去的,就怎么减回来即可
f[i−1][j]=f[i][j]−f[i−1][j−a[i]]−f[i−1][j−a[i]∗2]f[i-1][j] = f[i][j] - f[i-1][j-a[i]] - f[i-1][j-a[i] * 2]f[i−1][j]=f[i][j]−f[i−1][j−a[i]]−f[i−1][j−a[i]∗2]
这样,我们就得到了原题的逆动态规划转移方程,倒着来一遍还原即可,同样也可以用滚动数组优化到一维
拓展
来自出题人的想法:
代码
#include<bits/stdc++.h>
using namespace std;
//----------------自定义部分----------------
#define ll long long
#define mod 1000000007
#define endl "\n"
#define PII pair<int,int>
#define INF 0x3f3f3f3fint dx[4]={0,-1,0,1},dy[4]={-1,0,1,0};ll ksm(ll a,ll b) {ll ans = 1;for(;b;b>>=1LL) {if(b & 1) ans = ans * a % mod;a = a * a % mod;}return ans;
}ll lowbit(ll x){return -x & x;}const int N = 2e6+10;
//----------------自定义部分----------------
ll n,m,q,a[N],f[N];
vector<ll> Vec;int main()
{std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);cin>>m;for(int i = 1;i <= m; ++i) {cin>>f[i];}f[0] = 1;for(int i = 1;i <= m; ++i) {while(f[i]){Vec.push_back(i*2);for(int j = 0;j <= m; ++j) {if(i + j <= m) f[i + j] = (f[i + j] - f[j] + mod) % mod;if(2 * i + j <= m) f[2 * i + j] = (f[2 * i + j] - f[j] + mod) % mod;}}}n = Vec.size();cout<<n<<endl;for(int i = 0;i < n; ++i) cout<<Vec[i]<<" \n"[i==n-1];return 0;
}
智乃买瓜(another version)(DP+逆向思维)相关推荐
- 漫画趣解大数据算法建模:买瓜
大数据开发如何转型算法? 算法建模主要做什么?调参为什么玄学? 如何通俗理解算法建模过程.. 夕阳下的村东头,有一人来买瓜. 1 引子(买瓜) 忙碌的一天刚刚结束,村里的小张就匆匆的骑上车,准备买个西 ...
- C1. Pokémon Army (easy version)(DP)
C1. Pokémon Army (easy version)(DP) 思路:dpdpdp. 考虑:分数组长度的奇偶性进行dpdpdp. 令dp[i][0]dp[i][0]dp[i][0]表示前iii ...
- 华强买瓜-梵高星空限定版
文章目录 引言 效果展示 准备工作 具体步骤 业务逻辑 日志 转换风格 读取视频并保存每一帧 问题 引言 你这个模型, 它复现起来难吗? 我一水博客的, 能给你看复现不出来的算法? 效果展示 将梵高的 ...
- Python手撸机器学习系列(四):朴素贝叶斯(华强买瓜版)
目录 一.原理 1.1 买瓜 1.2 算瓜 二.代码实现 三.参考文献 一.原理 1.1 买瓜 大家好,我叫刘华强.我现在手里有一堆西瓜,我希望通过观察我这一堆西瓜中好瓜的特征来总结出判断好瓜的标准, ...
- 小伙用Python爬取3000条B站视频,发现刘华强买瓜是这么火起来的!
大家好,我是小五???? 最近B站这两个月,快被买瓜的刘华强屠版了,上一个这么火的人物,应该还是闪电五连鞭的马保国. 与之前的网络"审丑"视频不同,这次火的片段来自一部影视作品. ...
- 刘华强买瓜是怎么火起来的?我用Python爬取了3000条B站视频才知道的!
最近B站这两个月,快被买瓜的刘华强屠版了,上一个这么火的人物,应该还是闪电五连鞭的马保国. 与之前的网络"审丑"视频不同,这次火的片段来自一部影视作品. 孙红雷在2003年 ...
- 通过python绘制华强买瓜的字符画视频
文章目录 读取视频 转为字符 动画 已经11月了,不知道还有没有人看华强买瓜...要把华强卖瓜做成字符视频,总共分为三步 读取视频 把每一帧转为字符画 把字符画表现出来 读取视频 通过imageio读 ...
- 有一个人前来买瓜 | C++ | 二维背包问题
提醒:这道题目你会不会做,看不看得懂其他大佬的做法,完全取决于你看没看过背包问题,懂不懂背包问题的基本逻辑原理.换言之,只要你会背包,自己做出来不是难题. (因为我身边好多人包括我,一开始都不清楚背包 ...
- CodeForces - 1497E2 Square-free division (hard version)(dp+数论)
题目链接:点击查看 题目大意:给出一个长度为 nnn 的数列,现在最多可以修改 kkk 个数字为任意数值,现在问最少可以将数列划分成多少个连续的数列,使得每一个单独的段中,任意两个数的乘积都不能是完全 ...
最新文章
- 06-jvm-查询命令-01
- Anaconda :利用Anaconda Prompt (Anaconda3)建立、设计不同python版本及对应库函数环境之详细攻略
- 26岁,发25篇SCI,当上211教授、博导。
- mysql虚拟列(Generated Columns)及JSON字段类型的使用
- Mybatis配置文件注释
- Python-IndexError: list index out of range
- 机电传动控制第一周学习笔记
- Java 字节和字符流的读写+Buffered
- usb接口linux系统设计,AUFS 联合文件系统 - 基于USB接口的微型桌面Linux系统设计
- ps文字换行_零基础一周内熟悉使用PS基础工具【Photoshop教程二】
- 【路由优化】基于能量均衡高效的LEACH协议改进算法附matlab代码
- DH算法 | Diffie-Hellman 密钥交换
- TCPMP之旅(一) TCPMP整体软体框架
- Windows 7下可以使用的虚拟光驱软件
- WIN8 与WIN7的64位及32位 分别对Legacy BIOS+MBR和UEFI+GPT两种启动方式和分区架构下的安装可行性分析
- 8522A+7段数码管显示实验
- android 西班牙语,Android新增语言的方法(墨西哥的西班牙语)
- python写xml多了ns0_python – SUDS生成的XML不正确
- 雷达距离分辨力的推导
- matlab铜期货,急停按钮一般是_______色、______形
热门文章
- ubuntu16.04安装百度网盘(使用deepin-wine)2019年3月亲测可用以及安装MATLAB的技巧
- python 计算流形上两点之间的测地距离
- 百度地图api的介绍和使用
- [枚举] Jzoj P3387 终极武器
- Select的onchange事件
- [Java]进程与线程的区别(转)
- 记录用友ERP二次开发全过程(转载)
- 空间换时间--程序策略
- WCF问题:“HTTP 错误 404.17 - Not Found 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理”解决方法...
- SNMP协议交互学习-获取udp的udpindatagrams