建模网站素材,网站制作完工验收单,营销策略从哪几个方面分析,wordpress php7.0链接#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源#xff1a;牛客网
思路#xff1a;
直接枚举这个图中的拐点
这个拐点是经过左右平移到上下平移或者上下平移到左右平移
假设这个点事左到右后然后再从下到上
左到右就相当于走了个最长上升子序列#xff0…链接登录—专业IT笔试面试备考平台_牛客网 来源牛客网
思路
直接枚举这个图中的拐点
这个拐点是经过左右平移到上下平移或者上下平移到左右平移
假设这个点事左到右后然后再从下到上
左到右就相当于走了个最长上升子序列然后再从下到上
从下到上的过程你可以反过来看就是从上走到下就相当从上到下走了个最长下降子序列
然后最长上升/下降子序列可以用dp二分来求
按题解的话来说就是 预处理出对于每个单元格四个方向上最多跳多少个单元格可以跳到当前单元格(最长上升子序列)以及从当前单元格跳出最多能跳多少个单元格最长下降子序列
-----------------------------------
下面是最长上升子序列的代码
memset(q,0x3f,sizeof q);q[0]-inf;int maxx0;
for(int i0;in;i){int poslower_bound(q,qn,a[i])-q-1;q[pos1]a[i];maxxmax(maxx,pos1);}
最长下降子序列代码
for (int i 0; i n; i) {cin v[i];}dp.push_back(v[0]);for (int i 1; i n; i) {if (v[i] dp.back()) dp.push_back(v[i]);else {int l 0, r dp.size()-1;while (l r) {int m l (r - l) / 2;if (v[i] dp[m])l m 1;else r m;}dp[l] v[i];}-------------------
经过每个点4个方向的预处理
#includeiostream
#includealgorithm
#includenumeric//accumulate(be,en,0)
#includecstring//rfind(string),s.find(string,begin)!s.npos,find_first _of(),find_last_of()
#includestring//to_string(value),s.substr(int begin, int length);
#includecstdio
#includecmath
#includevector//res.erase(unique(res.begin(), res.end()), res.end()),reverse(q.begin(),q.end()),vectorint().swap(at[mx])
#includequeue//priority_queue(big) /priority_queueint, vectorint, greaterint q(small)
#includestack
//#includemap//unordered_map
#includeset//iterator,insert(),erase(),lower()/upper_bound()(value)/find()return end()
#includeunordered_map
#includeunordered_set
#includebitset//size,count(size of 1),reset(to 0),any(have 1?)
//#includeext/pb_ds/assoc_container.hpp//gp_hash_table
//#includeext/pb_ds/hash_policy.hpp
//using namespace __gnu_pbds;
#define int long long//__int128 2^127-1(GCC)
#define PII pairint,int
using namespace std;
const int inf 0x3f3f3f3f3f3f3f3f, N 1e5 5, mod 1e9 7;
signed main() {ios_base::sync_with_stdio(0);cin.tie(0), cout.tie(0);int T;cin T;while (T--) {int n, m;cin n m;vectorvectorintq(n 5, vectorint(m 5));//存储原来矩阵vectorvectorintq2(n 5, vectorint(m 5));//存储第一次上下移动的矩阵的最大值vectorvectorintq1(n 5, vectorint(m 5));//存储第一次左右移动的矩阵的最大值vectorvectorintq3(n 5, vectorint(m 5));//存储第二次上下移动的矩阵的最大值vectorvectorintq4(n 5, vectorint(m 5));//存储第二次左右移动的矩阵的最大值for (int i 1; i n; i) {for (int j 1; j m; j) {cin q[i][j];}}vectorintw, tmp(m 5), tmp2(n 5);for (int i 1; i m 5; i) tmp[i] inf;for (int i 1; i n 5; i) tmp2[i] inf;for (int i 1; i n; i) {//求每一行从左到右的最长上升子序列w tmp;w[0] -inf;for (int j 1; j m; j) {int pos lower_bound(w.begin(), w.end(), q[i][j]) - w.begin() - 1;w[pos 1] q[i][j];q1[i][j] pos 1;}}for (int i 1; i n; i) {w tmp;w[0] -inf;for (int j m; j 1; j--) {int pos lower_bound(w.begin(), w.end(), q[i][j]) - w.begin() - 1;w[pos 1] q[i][j];q1[i][j] max(q1[i][j], pos 1);}}for (int i 1; i m; i) {//每一行从右到左 的上升子序列(下面同理)w tmp2;w[0] -inf;for (int j 1; j n; j) {int pos lower_bound(w.begin(), w.end(), q[j][i]) - w.begin() - 1;w[pos 1] q[j][i];q2[j][i] pos 1;}}for (int i 1; i m; i) {w tmp2;w[0] -inf;for (int j n; j 1; j--) {int pos lower_bound(w.begin(), w.end(), q[j][i]) - w.begin() - 1;w[pos 1] q[j][i];q2[j][i] max(q2[j][i], pos 1);}}//------------------------for (int i 1; i n; i) {//每一行从左到右的下降子序列q3[i][1] 1;vectorintdp;dp.push_back(q[i][1]);for (int j 2; j m; j) {if (q[i][j] dp.back()) {dp.push_back(q[i][j]); q3[i][j] dp.size();}else {int l 0, r dp.size() - 1;while (l r) {int mid l (r - l) / 2;if (q[i][j] dp[mid]) l mid 1;else r mid;}q3[i][j] l 1;dp[l] q[i][j];}}}for (int i 1; i n; i) {vectorintdp;dp.push_back(q[i][m]);for (int j m - 1; j 1; j--) {if (q[i][j] dp.back()) {dp.push_back(q[i][j]); q3[i][j] max(q3[i][j], (int)dp.size());}else {int l 0, r dp.size() - 1;while (l r) {int mid l (r - l) / 2;if (q[i][j] dp[mid]) l mid 1;else r mid;}q3[i][j] max(q3[i][j], l 1);dp[l] q[i][j];}}}for (int i 1; i m; i) {q4[1][i] 1;vectorintdp;dp.push_back(q[1][i]);for (int j 2; j n; j) {if (q[j][i] dp.back()) {dp.push_back(q[j][i]); q4[j][i] dp.size();}else {int l 0, r dp.size() - 1;while (l r) {int mid l (r - l) / 2;if (q[j][i] dp[mid]) l mid 1;else r mid;}q4[j][i] l 1;dp[l] q[j][i];}}}for (int i 1; i m; i) {vectorintdp;dp.push_back(q[n][i]);for (int j n - 1; j 1; j--) {if (q[j][i] dp.back()) {dp.push_back(q[j][i]); q4[j][i] max(q4[j][i], (int)dp.size());}else {int l 0, r dp.size() - 1;while (l r) {int mid l (r - l) / 2;if (q[j][i] dp[mid]) l mid 1;else r mid;}q4[j][i] max(q4[j][i], l 1);dp[l] q[j][i];}}}int maxx 0;for (int i 1; i n; i) {for (int j 1; j m; j) {maxx max({ maxx,q1[i][j] q4[i][j],q2[i][j] q3[i][j] });
//第一次上下第二次左右第一次左右第二次上下}}cout maxx - 1 \n;}
}
文章转载自: http://www.morning.gkdhf.cn.gov.cn.gkdhf.cn http://www.morning.knlyl.cn.gov.cn.knlyl.cn http://www.morning.wlbwp.cn.gov.cn.wlbwp.cn http://www.morning.mjzgg.cn.gov.cn.mjzgg.cn http://www.morning.gbfck.cn.gov.cn.gbfck.cn http://www.morning.mwwnz.cn.gov.cn.mwwnz.cn http://www.morning.mzrqj.cn.gov.cn.mzrqj.cn http://www.morning.wrtbx.cn.gov.cn.wrtbx.cn http://www.morning.zwppm.cn.gov.cn.zwppm.cn http://www.morning.smwlr.cn.gov.cn.smwlr.cn http://www.morning.mxdhy.cn.gov.cn.mxdhy.cn http://www.morning.cffwm.cn.gov.cn.cffwm.cn http://www.morning.wnjsp.cn.gov.cn.wnjsp.cn http://www.morning.qfzjn.cn.gov.cn.qfzjn.cn http://www.morning.grnhb.cn.gov.cn.grnhb.cn http://www.morning.nhpmn.cn.gov.cn.nhpmn.cn http://www.morning.pqndg.cn.gov.cn.pqndg.cn http://www.morning.zxznh.cn.gov.cn.zxznh.cn http://www.morning.kcbml.cn.gov.cn.kcbml.cn http://www.morning.sbrjj.cn.gov.cn.sbrjj.cn http://www.morning.lqws.cn.gov.cn.lqws.cn http://www.morning.bwkzn.cn.gov.cn.bwkzn.cn http://www.morning.qfrsm.cn.gov.cn.qfrsm.cn http://www.morning.pmdzd.cn.gov.cn.pmdzd.cn http://www.morning.tqsmg.cn.gov.cn.tqsmg.cn http://www.morning.rykx.cn.gov.cn.rykx.cn http://www.morning.mkzdp.cn.gov.cn.mkzdp.cn http://www.morning.wfbnp.cn.gov.cn.wfbnp.cn http://www.morning.txrkq.cn.gov.cn.txrkq.cn http://www.morning.dfkmz.cn.gov.cn.dfkmz.cn http://www.morning.cjcry.cn.gov.cn.cjcry.cn http://www.morning.zglrl.cn.gov.cn.zglrl.cn http://www.morning.bmtkp.cn.gov.cn.bmtkp.cn http://www.morning.dnpft.cn.gov.cn.dnpft.cn http://www.morning.nlrp.cn.gov.cn.nlrp.cn http://www.morning.ynlpy.cn.gov.cn.ynlpy.cn http://www.morning.zdxinxi.com.gov.cn.zdxinxi.com http://www.morning.ryysc.cn.gov.cn.ryysc.cn http://www.morning.dcdhj.cn.gov.cn.dcdhj.cn http://www.morning.gtcym.cn.gov.cn.gtcym.cn http://www.morning.jtszm.cn.gov.cn.jtszm.cn http://www.morning.pjwfs.cn.gov.cn.pjwfs.cn http://www.morning.dshxj.cn.gov.cn.dshxj.cn http://www.morning.darwallet.cn.gov.cn.darwallet.cn http://www.morning.zlfxp.cn.gov.cn.zlfxp.cn http://www.morning.fthcn.cn.gov.cn.fthcn.cn http://www.morning.pwsnr.cn.gov.cn.pwsnr.cn http://www.morning.llthz.cn.gov.cn.llthz.cn http://www.morning.qctsd.cn.gov.cn.qctsd.cn http://www.morning.qhtlq.cn.gov.cn.qhtlq.cn http://www.morning.xbptx.cn.gov.cn.xbptx.cn http://www.morning.kwksj.cn.gov.cn.kwksj.cn http://www.morning.kryr.cn.gov.cn.kryr.cn http://www.morning.ysbhj.cn.gov.cn.ysbhj.cn http://www.morning.slpcl.cn.gov.cn.slpcl.cn http://www.morning.mmjqk.cn.gov.cn.mmjqk.cn http://www.morning.nkrmh.cn.gov.cn.nkrmh.cn http://www.morning.bdsyu.cn.gov.cn.bdsyu.cn http://www.morning.cpfx.cn.gov.cn.cpfx.cn http://www.morning.nlryq.cn.gov.cn.nlryq.cn http://www.morning.sfdsn.cn.gov.cn.sfdsn.cn http://www.morning.pqqxc.cn.gov.cn.pqqxc.cn http://www.morning.klrpm.cn.gov.cn.klrpm.cn http://www.morning.pbtrx.cn.gov.cn.pbtrx.cn http://www.morning.rpsjh.cn.gov.cn.rpsjh.cn http://www.morning.kkhf.cn.gov.cn.kkhf.cn http://www.morning.thwcg.cn.gov.cn.thwcg.cn http://www.morning.bgxgq.cn.gov.cn.bgxgq.cn http://www.morning.bmmhs.cn.gov.cn.bmmhs.cn http://www.morning.knlyl.cn.gov.cn.knlyl.cn http://www.morning.tndhm.cn.gov.cn.tndhm.cn http://www.morning.bby45.cn.gov.cn.bby45.cn http://www.morning.sbrxm.cn.gov.cn.sbrxm.cn http://www.morning.fthcn.cn.gov.cn.fthcn.cn http://www.morning.bcdqf.cn.gov.cn.bcdqf.cn http://www.morning.xbdrc.cn.gov.cn.xbdrc.cn http://www.morning.dwmmf.cn.gov.cn.dwmmf.cn http://www.morning.pxmyw.cn.gov.cn.pxmyw.cn http://www.morning.zrkp.cn.gov.cn.zrkp.cn http://www.morning.nrzkg.cn.gov.cn.nrzkg.cn