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

网站建设美化中期报告国外网站seo免费

网站建设美化中期报告,国外网站seo免费,网站开发者工具下载,长沙大型做网站公司ARC126D Pure Straight 题目大意 给一个长度为nnn的整数序列A(a1,a2,…,an)A(a_1,a_2,\dots,a_n)A(a1​,a2​,…,an​),其中ai∈[1,k]a_i\in [1,k]ai​∈[1,k]。 你可以做如下操作任意次: 交换相邻两个元素 求最小的操作次数,使得序列AA…

ARC126D Pure Straight

题目大意

给一个长度为nnn的整数序列A=(a1,a2,…,an)A=(a_1,a_2,\dots,a_n)A=(a1,a2,,an),其中ai∈[1,k]a_i\in [1,k]ai[1,k]

你可以做如下操作任意次:

  • 交换相邻两个元素

求最小的操作次数,使得序列AAA满足下列条件:

  • AAA包含(1,2,…,k)(1,2,\dots,k)(1,2,,k)这个子串

2≤k≤16,k≤n≤2002\leq k\leq 16,k\leq n\leq 2002k16,kn200


题解

我们可以先将在111kkk内的数移到一段,然后在这一段区间内排序。

令构成子串的元素的下标从小到大依次为c1,c2,…,cnc_1,c_2,\dots,c_nc1,c2,,cn,中点位置为mid=⌊k2⌋mid=\lfloor\dfrac k2\rfloormid=2k,则显然让所有acia_{c_i}aciacmida_{c_mid}acmid移动是最优的,总步数为

(∑i=1mid−1(cmid−mid+i)−ci)+(∑i=mid+1kci−(cmid+i−mid))(\sum\limits_{i=1}^{mid-1}(c_{mid}-mid+i)-c_i)+(\sum\limits_{i=mid+1}^kc_i-(c_{mid}+i-mid))(i=1mid1(cmidmid+i)ci)+(i=mid+1kci(cmid+imid))

我们发现这个式子中的许多地方可以抵消,最后式子可变为

(∑i=mid+1kci)−(∑i=1mid−1ci)−cmid×(n%2==0)+mid×(n%2==0)+(∑i=1mid−1i)−(∑i=mid+1ki)(\sum\limits_{i=mid+1}^kc_i)-(\sum\limits_{i=1}^{mid-1}c_i)-c_{mid}\times (n\%2==0)+mid\times(n\%2==0)+(\sum\limits_{i=1}^{mid-1}i)-(\sum\limits_{i=mid+1}^ki)(i=mid+1kci)(i=1mid1ci)cmid×(n%2==0)+mid×(n%2==0)+(i=1mid1i)(i=mid+1ki)

后面mid×(n%2==0)+(∑i=1mid−1i)−(∑i=mid+1ki)mid\times(n\%2==0)+(\sum\limits_{i=1}^{mid-1}i)-(\sum\limits_{i=mid+1}^ki)mid×(n%2==0)+(i=1mid1i)(i=mid+1ki)是可以O(1)O(1)O(1)求出的,我们来看看如何求前面的部分。

可以用状压DP,设fi,sf_{i,s}fi,s表示枚举到AAA的第iii位时状态为ssssss的二进制位111表示已取过这个数字,000表示没取过这个数字。我们需要预处理数组hvshv_shvs,表示sss的二进制位中有多少个111

状态转移式如下

fi,s∣(1<<ai−1)={fs−i+ps,aihvs+1<midfs−i×(k%2==0)+ps,aihvs+1=midfs+i+ps,aihvs+1>midf_{i,s|(1<<a_i-1)}= \left\{\begin{matrix} f_s-i+p_{s,a_i} \qquad\qquad\qquad\qquad \ \ hv_s+1<mid \\ f_s-i\times(k\%2==0)+p_{s,a_i} \qquad hv_s+1=mid\\ f_s+i+p_{s,a_i} \qquad\qquad\qquad\qquad \ \ hv_s+1>mid \end{matrix}\right.fi,s(1<<ai1)=fsi+ps,ai  hvs+1<midfsi×(k%2==0)+ps,aihvs+1=midfs+i+ps,ai  hvs+1>mid

其中fi,s∣(1<<ai−1)f_{i,s|(1<<a_i-1)}fi,s(1<<ai1)与后面的部分取max⁡\maxmax

下面来解释一下ppp是什么。因为在将111kkk内的数移到一段后,内部还要调整。根据冒泡排序的原理,若要用最少的操作次数排好序,每个数对操作次数的贡献为在它之前比他大的数的个数。ps,ip_{s,i}ps,i表示在sss中二进制位数大于iii且该位为111的数量,在转移式中表示加入这个元素的贡献。

求出fff后,加上mid×(n%2==0)+(∑i=1mid−1i)−(∑i=mid+1ki)mid\times(n\%2==0)+(\sum\limits_{i=1}^{mid-1}i)-(\sum\limits_{i=mid+1}^ki)mid×(n%2==0)+(i=1mid1i)(i=mid+1ki)即为答案。

时间复杂度为O(n⋅2k)O(n\cdot2^k)O(n2k)

code

#include<bits/stdc++.h>
using namespace std;
int n,k,mid,ans,a[205],v[20],hv[1<<16],p[1<<16][20],f[1<<16];
void pd(int now){f[now]=1000000000;int s=0;for(int i=k;i>=1;i--){p[now][i]=s;s+=v[i];}hv[now]=s;
}
void dfs(int t,int now){if(t<k) dfs(t+1,now);else pd(now);now+=(1<<t-1);v[t]=1;if(t<k) dfs(t+1,now);else pd(now);v[t]=0;
}
int main()
{scanf("%d%d",&n,&k);mid=(k+1)/2;for(int i=1;i<=n;i++){scanf("%d",&a[i]);}dfs(1,0);f[0]=0;for(int i=1;i<=n;i++){for(int s=(1<<k)-1;s>=0;s--){if(s&(1<<a[i]-1)) continue;int t=s|(1<<a[i]-1);if(hv[s]+1<mid) f[s|t]=min(f[s|t],f[s]-i+p[s][a[i]]);else if(hv[s]+1==mid) f[s|t]=min(f[s|t],f[s]-i*(k%2==0)+p[s][a[i]]);else f[s|t]=min(f[s|t],f[s]+i+p[s][a[i]]);}}ans=f[(1<<k)-1];if(k%2==0) ans+=mid;ans=ans+(mid)*(mid-1)/2-(k-mid)*(k+mid+1)/2;printf("%d",ans);return 0;
}
http://www.mnyf.cn/news/33298.html

相关文章:

  • 产品宣传短视频在线优化seo
  • 芜湖有没有网站建设公司吗济南网络优化网址
  • 网站设计网站建设网站制作seo的收费标准
  • b站推广网站mmm的推荐机制网站怎么做优化排名
  • 怎么删除织梦做的网站微信加人推码35一单
  • 四级a做爰片免费网站app引流推广方法
  • 海口网站建设公司网站关键词排名优化系统
  • 电商网站怎样优化重庆seo网络推广优化
  • 加若格网站做么样seo一键优化
  • 科技公司网站建设如何做好网络推广工作
  • 网上帮做一些小事赚零花钱的网站北京seo招聘信息
  • 最新被百度收录的网站360优化大师官方下载手机
  • iis7.5怎么做网站8个公开大数据网站
  • 杭州便宜的手机网站建设百度收录申请
  • 人才招聘网最新招聘网络优化培训
  • 梅陇做网站seo赚钱培训课程
  • 做落地页素材在什么网站上找天津seo网络营销
  • 浙江建设厅 继续教育 网站首页写软文推广
  • 四站合一网站建设个人推广平台
  • 营销型企业网站优化的作用百度点击率排名有效果吗
  • 怎们自己做网站哈尔滨百度推广联系人
  • 服务好的高端网站建设公司网络营销做得好的企业有哪些
  • 云空间可以做网站网站排行榜前十名
  • 电商网站设计公司力推亿企邦热点军事新闻
  • 兰州产品营销网站建设最近的新闻事件
  • 东乡做网站项目营销推广策划
  • 深圳做兼职的网站设计设计网站模板
  • 中山哪里有好网站建设公司seo高手培训
  • 网站建设多少钱一个公司网站设计模板
  • ppt做杂志模板下载网站网站免费优化