线性dp,分层图思想
题目大意:给你一串数字,一串运算符,求递推用完运算符时答案的最大值----->线性dp
dp[i][j] i表示所用数字的个数 j表示所用字符的个数
分层图思想
所有字符必须用完
所以取最后一层的dp[m][n]
- #include<bits/stdc++.h>
- #define mp make_pair
- #define pb push_back
- #define pw(x) (1ll << (x))
- #define sz(x) ((int)(x).size())
- #define all(x) (x).begin(),(x).end()
- #define rep(i,l,r) for(int i=(l);i<(r);i++)
- #define per(i,r,l) for(int i=(r);i>=(l);i--)
- #define FOR(i,l,r) for(int i=(l);i<=(r);i++)
- #define eps 1e-9
- #define PIE acos(-1)
- #define cl(a,b) memset(a,b,sizeof(a))
- #define fastio ios::sync_with_stdio(false);cin.tie(0);
- #define lson l , mid , ls
- #define rson mid + 1 , r , rs
- #define ls (rt<<1)
- #define rs (ls|1)
- #define INF 0x3f3f3f3f
- #define LINF 0x3f3f3f3f3f3f3f3f
- #define lowbit(x) (x&(-x))
- #define sqr(a) a*a
- #define ll long long
- #define ull unsigned long long
- #define vi vector<int>
- #define pii pair<int, int>
- #define dd(x) cout << #x << " = " << (x) << ", "
- #define de(x) cout << #x << " = " << (x) << "\n"
- #define endl "\n"
- using namespace std;
- //**********************************
- int n,m,k;
- //**********************************
- const int maxn=1e4+;
- char op[];
- ll dpmin[][maxn],dpmax[][maxn];
- ll cal(ll a,ll b,char op)
- {
- if(op=='+')return a+b;
- if(op=='/')return a/b;
- if(op=='*')return a*b;
- return a-b;
- }
- int a[maxn];
- //**********************************
- int main()
- {
- int T;
- scanf("%d",&T);
- while(T--){
- cl(dpmax,-LINF);cl(dpmin,LINF);
- scanf("%d %d %d",&n,&m,&k);
- dpmin[][]=dpmax[][]=k;
- FOR(i,,n)scanf("%d",&a[i]);
- FOR(i,,m)cin>>op[i];
- //分层图思想
- FOR(i,,m){
- FOR(j,,n){
- //buxuan
- if(j<i)continue;
- dpmin[i][j]=min(dpmin[i][j],dpmin[i][j-]);
- dpmax[i][j]=max(dpmax[i][j],dpmax[i][j-]);
- //xuan
- dpmin[i][j]=min(dpmin[i][j],cal(dpmax[i-][j-],a[j],op[i]));
- dpmin[i][j]=min(dpmin[i][j],cal(dpmin[i-][j-],a[j],op[i]));
- dpmax[i][j]=max(dpmax[i][j],cal(dpmax[i-][j-],a[j],op[i]));
- dpmax[i][j]=max(dpmax[i][j],cal(dpmin[i-][j-],a[j],op[i]));
- // dd(i);dd(j);de(dpmax[i][j]);
- // dd(i);dd(j);de(dpmin[i][j]);
- }
- }
- printf("%lld\n",dpmax[m][n]);
- }
- return ;
- }
线性dp,分层图思想的更多相关文章
- 「hdu 4845 」拯救大兵瑞恩 [CTSC 1999](状态压缩bfs & 分层图思想)
首先关于分层图思想详见2004的这个论文 https://wenku.baidu.com/view/dc57f205cc175527072208ad.html 这道题可以用状态压缩,我们对于每一把钥匙 ...
- Bzoj 2763: [JLOI2011]飞行路线 拆点,分层图,最短路,SPFA
2763: [JLOI2011]飞行路线 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1694 Solved: 635[Submit][Statu ...
- POJ 3635 Full Tank? 【分层图/最短路dp】
任意门:http://poj.org/problem?id=3635 Full Tank? Time Limit: 1000MS Memory Limit: 65536K Total Submis ...
- BZOJ_1916_[Usaco2010 Open]冲浪_分层图+拓扑排序+DP
BZOJ_1916_[Usaco2010 Open]冲浪_分层图+拓扑排序+DP Description 受到秘鲁的马丘比丘的新式水上乐园的启发,Farmer John决定也为奶牛们建 一个水上乐园. ...
- [luogu1073 Noip2009] 最优贸易 (dp || SPFA+分层图)
传送门 Description C 国有n 个大城市和m 条道路,每条道路连接这n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这m 条道路中有一部分为单向通行的道路,一部分 为 ...
- codeforces 677D(分层图dp)
Codeforces 677D 传送门:https://codeforces.com/contest/677/problem/D 题意: 给你一个n*m的方格图,每个点有一个权值val,现在要求你从坐 ...
- 一本通 高手训练 1782 分层图 状压dp
LINK:分层图 很精辟的一道题 写的时候没带脑子 导致搞了半天不知道哪错了. 可以想到状压每次到某一层的状态 然后这个表示方案数 多开一维表示此时路径条数的奇偶即可. 不过显然我们只需要知道路径条数 ...
- POJ3635 Full Tank? 优先队列BFS or 分层图最短路 or DP?
然而我也不知道这是啥啊...反正差不多...哪位大佬给区分一下QWQ.. 好的,我把堆的<写反了..又调了一个小时..你能不能稳一点.... 记录状态:所在位置u,油量c,花费w 扩展状态: 1 ...
- poj3635Full Tank?[分层图最短路]
Full Tank? Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7248 Accepted: 2338 Descri ...
随机推荐
- Qt的多线程总结以及使用(一)
Qt提供QThread类以进行多任务的处理.Qt提供的线程可以做到单个进程做不到的事情.在这里实现最简单的一个多线程.最简单的线程的基类为QThread,然后需要重写QThread的run(),在ru ...
- multer使用
使用multer 1. 在项目中下载multer操作模块 Npm install multer --save 前端代码: <form class="layui-form&q ...
- 手把手封装axios
大佬链接: https://juejin.im/post/5b55c118f265da0f6f1aa354 一.axios的封装 在vue项目中,和后台交互获取数据这块,我们通常使用的是axios库, ...
- 12个提高Java程序员工作效率的工具
Java开发者常常都会想办法如何更快地编写Java代码,让开发过程变得更加轻松,更加高效.目前,市面上涌现出越来越多的高效编程工具.团长总结了几个常用的工具,其中包含了大多数开发人员已经使用.正在使用 ...
- 学习kafka笔记
一:概念 Kafka是一个分布式的消息队列,相当于我们生活中的快递柜,快递点,快递员将快递放到快递柜中,收件人去取,把快递(消息)的入柜(入队)和处理进行解耦,使得双方以自己合适的时间和频率处理快递, ...
- mysql主从同步监控---邮件告警
#!/bin/bash #check MySQL_Slave Status #crontab time : MYSQLPORT=`netstat -na|grep "|awk -F[:&qu ...
- C# 委托、lambda表达式和事件 (7) 持续更新
引用方法 在C++,函数指针只不过是一个指向内存位置的指针,它不是类型安全的. C# 委托 定义了返回类型和参数的类型.委托类包含对方法的引用,还可以包含多个方法引用. 定义委托 public del ...
- centos6 mini安装图形界面,并vnc远程控制
1.安装图形界面sudo yum groupinstall basic-desktop desktop-platform x11 fonts 2.安装vnc服务sudo yum -y install ...
- TBDR下msaa 在metal vulkan和ogles的解决方案
https://developer.arm.com/solutions/graphics/developer-guides/understanding-render-passes/multi-samp ...
- win10 LTSC 2019 激活
win 10 打开终端 1.slmgr -ipk M7XTQ-FN8P6-TTKYV-9D4CC-J462D 2.slmgr -skms kms.03k.org 3.slmgr -ato 4. slm ...