当前位置: 首页 > news >正文

怎样才能建设一歌网站湖北网站建设软件有哪些

怎样才能建设一歌网站,湖北网站建设软件有哪些,添加网站栏目的步骤,教师进修学校网站建设方案题意#xff1a; 给定一段长为N的序列#xff0c;选取其中的至多M段使这些子段和最大。 当N1000时#xff0c;我们可以采用动态规划解法 令\(dp[i][j][k]\)代表当前选至位置\(i\)处于第\(j\)段当前是否选取(1选0不选) 则转移为\(dp[i][j][0]max(dp[i-1][j][1],dp[i-1][j][0]…题意 给定一段长为N的序列选取其中的至多M段使这些子段和最大。 当N1000时我们可以采用动态规划解法 令\(dp[i][j][k]\)代表当前选至位置\(i\)处于第\(j\)段当前是否选取(1选0不选) 则转移为\(dp[i][j][0]max(dp[i-1][j][1],dp[i-1][j][0])\)\(dp[i][j][1]max(dp[i-1][j-1][0],dp[i-1][j][1])score[i]\) 其中\(i\)的一维可以滚动掉 Code #include cstdio #include cstring int max(int x,int y){return xy?x:y;} const int N503; const int inf0x3f3f3f3f; int dp[N][N][2],n,k,score[N]; void init() {scanf(%d%d,n,k);for(int i1;in;i)scanf(%d,scorei);memset(dp,-0x3f,sizeof(dp));dp[1][0][0]0,dp[1][1][1]score[1]; } void work() {for(int i2;in;i)for(int j0;jk;j){dp[i][j][0]max(dp[i-1][j][1],dp[i-1][j][0]);dp[i][j][1]max(dp[i-1][j-1][0],dp[i-1][j][1])score[i];}int ans-inf;for(int i0;ik;i)ansmax(ans,max(dp[n][i][0],dp[n][i][1]));printf(%d\n,ans); } int main() {init();work();return 0; }当N100,000时我们可以采用贪心解法 注意到每次选取时一段连续的正数或者连续的负数要么我们不取选它要么全部选走。 我们先缩个点使序列变成正负数交错的其中第一项和最后一项的负数我们一定不去选择故舍去。 设当前有\(k\)个正数。 则当\(Mk\)时直接选取\(k\)个正数即可。 当\(Mk\)时对每个正数我们有两种选择放弃它或者跨过负数选择它。 则当选中一个负数\(a\)时我们损失了\(-a\)当放弃一个正数\(b\)时我们损失了\(b\) 则不管哪种情况我们只需要找到绝对值最小的一个数选择它或者放弃它 采用二叉堆维护这个最小值 当这个最小值被操作时其实等价于新产生了一个权值为 它和它旁边的两个元素的权值和 的新元素这时候产生的新数列一定会少一个正数 值得一提的是当第一项和最后一项是负数的时候不一定一定减少一个正数所以我们根据贪心不去选择这些点即可 合并元素可以采用链表进行维护 Code:实在是不好看QAQ #include cstdio #include cstring #include iostream #include queue #define ll long long #define P pair ll,ll using namespace std; const int N1000010; ll a[N],b[N],n0,k,n,pre[N],suc[N],cnt,used[N]; ll labs(ll x){return x0?x:-x;} void init() {scanf(%lld%lld,n0,k);for(int i1;in0;i)scanf(%lld,ai);int k0;a[0]-1;while(a[k]0) k;for(int ik;in0;i){if(a[i]*a[i-1]0)b[n]a[i];elseb[n]a[i];}while(nb[n]0) n--;for(int i1;in;i){pre[i]i-1;suc[i]i1;}suc[0]1;suc[n]0; } priority_queue P,vector P ,greater P q; P p; void work() {for(int i1;in;i){if(b[i]0) cnt;p.firstlabs(b[i]);p.secondi;q.push(p);}while(cntk){int posq.top().second;q.pop();if(used[pos]) continue;if(!suc[pos]b[pos]0){suc[pre[pos]]suc[pos];pre[suc[pos]]pre[pos];continue;}if(!pre[pos]b[pos]0){pre[suc[pos]]pre[pos];suc[pre[pos]]suc[pos];continue;}used[pre[pos]]used[suc[pos]]1;b[pos]b[pre[pos]]b[suc[pos]];cnt--;if(pre[pos]){pre[pos]pre[pre[pos]];suc[pre[pos]]pos;}if(suc[pos]){suc[pos]suc[suc[pos]];pre[suc[pos]]pos;}p.firstlabs(b[pos]),p.secondpos;q.push(p);}int nowsuc[0];ll ans0;while(now){if(b[now]0) ansb[now];nowsuc[now];}printf(%lld\n,ans); } int main() {init();work();return 0; } 当N1,000,000时我们可以将算法近似优化到\(O(N)\) 具体大家可以参考出题人的题解 我在这里解释一下这个近似原题解没有说道找到第\(k\)值的问题 主要就是利用基于快速排序思想的STL函数\(nth\_element\)可以在近似\(O(n)\)的复杂度找到第\(k\)值 关于第k值 代码我没写感觉不太好写 转载于:https://www.cnblogs.com/butterflydew/p/9280322.html
http://www.sadfv.cn/news/427964/

相关文章:

  • 360任意看地图网站哈尔滨企业建站系统模板
  • 网站开发人员的短中长期目标wordpress主题去除授权
  • 做网站跟推广哪家公司好重庆在线高校开放平台
  • 沧浪手机网站建设方案淘宝运营公司
  • 如何免费注册一个网站有关网站空间不正确的说法是
  • 专做logo网站叫什么地方雷电模拟器手机版下载官方网站
  • 快速网站备案多语言网站如何做
  • 网站维护技术wordpress链接微博
  • 网站模板怎么制作模板ppt
  • 大型网站开发模型网站建设公司哪家好 尖端磐石网络
  • 闵行 网站建设公司微网站一键通话
  • 网站外包的恶意刷流量能上网但是浏览器打不开网页
  • 五大免费资源网站做企业网站要不要我们自己提供网站相关的图片?
  • seo网站关键词优化费用做海关授权的网站
  • 怎么用wordpress建手机网站飞机加速器
  • 网站开发的招标参数wordpress当前分类名
  • 教做蛋糕的网站厦门注册公司流程和费用多少
  • 建一个网站花费企业的网站特点
  • 武义建设局网站首页嘉兴网站制作公司
  • 京东电子商务网站建设哪个公司可以做网站
  • 赣州高端网站开发wordpress 评论不了
  • 网站公司大全宣讲家网站做四讲四有模范
  • 可以做审计初级题的网站网站设计模版
  • 国外做的比较好的购物网站g4560做网站服务器
  • 哪个医学网站大夫可以做离线题大冶专业建站公司
  • 江门网站建设设计如何自己制作一个软件
  • 安阳市建设工程招标投标协会网站谷歌chrome浏览器下载
  • 切管机维修 东莞网站建设微信小程序安装
  • 中和阗盛工程建设有限公司网站素材免费下载素材库
  • 在线ps网站深圳华强北现在能去吗