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

企业网站可概括为上海专业优化排名工具

企业网站可概括为,上海专业优化排名工具,网页制作的网站,建立第一个网站链接:Iroha Loves Strings - AtCoder arc058_d - Virtual Judge 利用bitset这一数据结构,定义bitset类型的变量dp[i]表示第i到n个字符串能拼成的字符串长度都有哪些,比如00100101,表示能拼成的长度有0,2,5,&#xff0…

链接:Iroha Loves Strings - AtCoder arc058_d - Virtual Judge

利用bitset这一数据结构,定义bitset类型的变量dp[i]表示第i到n个字符串能拼成的字符串长度都有哪些,比如00100101,表示能拼成的长度有0,2,5,(注意:bitset中的元素从右往左看,下标从0开始),利用递推关系更新dp[i]如下
dp[i] = dp[i+1] | (dp[i+1] << s[i]的长度)
若dp[i][k] = 1,说明第i到第n个字符串可以拼成长度为k的字符串


之后模拟取数,i从1到k进行遍历,每次取当前能取的最小的字符,具体实现方式如下:(以下描述建议结合代码看)


定义候选对数组 pair<int,int> sel[i][j],i为0或1(用作开关变量),j是候选对象的编号,从1到cnt或ncnt,每个sel[i][j]中存的是
<候选字符所在的字符串的序号,候选字符在该字符串中的下标>
第一个字符的候选字符串i,要满足dp[i+1][k-s[i]的长度] = 1,也就是选了第i个字符串后,之后的字符串必须保证能拼成(k-s[i]的长度)的长度的字符串,将pair<i,0>加入sel


i从1到k遍历,每次在所有候选字符中选择字典序最小的那个字符作为答案,接着分情况讨论:
1.如果字符串还没用完,就继续将该字符串的下一个元素加入候选队列,如果有这样的字符串:
ab和ac,那么b和c都应该加入候选队列,

2.如果有一个字符串用完了,可能出现这样的情况:abc abc,这时应该先选前面的“abc”,因为选完编号为i的字符串后,新入选的字符串的下标从 i+1 开始,如果选了第二个或后面的,就会有字符串没法被用到,从而导致丢失解或错误解,新入选的字符串(编号为 j )要满足dp[ j+1 ][ k-i-新字符串的长度 ]等于1,这样选其能确保最终构成的字符串有可能长度为k,将pair<新字符串的编号,0>加入sel中

复杂度估计:nk

注意:

bitset和pair定义的先后会影响程序运行对错,正确的顺序是先定义bitset后定义pair,原因涉及到C++语言本身

#include<bits/stdc++.h>
using namespace std;const int maxn=2005,maxk=1e4+5;
char s[maxn][maxk];
int len[maxn];
int n,k;
bitset<maxk> dp[maxn];
pair<int,int> sel[2][maxn];//pair和bitset的先后问题int main()
{ios::sync_with_stdio(0);cin.tie(0);//freopen("D:\\in.txt","r",stdin);cin>>n>>k;for(int i=1;i<=n;i++){cin>>s[i];len[i]=strlen(s[i]);}dp[n+1][0]=1;for(int i=n;i>=1;i--){dp[i]=(dp[i+1] | (dp[i+1]<<len[i]));}int cnt=0;//挑出第一个字符的可选对象for(int i=1;i<=n;i++){if(dp[i+1][k-len[i]]){//printf("%d可选\n",i);sel[0][++cnt]={i,0};}}int t=1;for(int i=1;i<=k;i++){int ncnt=0;t^=1;char cur='z';for(int j=1;j<=cnt;j++){cur=min(cur,s[sel[t][j].first][sel[t][j].second]);}cout<<cur;//更新下一组候选对象int minid=n+1;for(int j=1;j<=cnt;j++){int id=sel[t][j].first,pos=sel[t][j].second;if(s[id][pos]!=cur) continue;if(pos<len[id]-1){sel[t^1][++ncnt]={id,pos+1};}else{minid=min(minid,id);       //选序号最小的,这样后面的字符串还能用得上(不然会白白浪费字符串)}}for(int j=minid+1;j<=n;j++){if(k-i-len[j]>=0 && dp[j+1][k-i-len[j]]){sel[t^1][++ncnt]={j,0};}}cnt=ncnt;}return 0;
}

http://www.hkea.cn/news/297928/

相关文章:

  • 品牌推广网站怎样做百度手机助手苹果版
  • 武汉工业网站制作百度人工服务热线24小时
  • 新闻头条最新消息今日头条站长之家seo综合
  • app与网站宁波seo网络推广渠道介绍
  • 国外学做咖啡的网站百度高级搜索网址
  • 建网站开源代码游戏推广怎么找玩家
  • 莱州哪里有做网站的浙江网站建设平台
  • ps网站设计与制作免费推广seo
  • 网站查询功能怎么做关键词搜索量怎么查
  • 付费网站推广网站优化包括哪些内容
  • 在日本做色情网站广州seo外包
  • 最棒的网站建设考研最靠谱的培训机构
  • 广州建设企业网站黑河seo
  • 招商网站建设性价比高seo排名优化的
  • 产品网站怎么做的长沙正规关键词优化价格从优
  • 怎样查询江西省城乡建设厅网站杭州seo网
  • 网站建设空间是指什么软件网站优化最为重要的内容是
  • 做美工要开通什么网站的会员呢新网站友链
  • 网站集约化建设推进情况推广app赚钱
  • 番禺大石做网站域名污染查询网站
  • 长沙市在建工程项目免费seo快速排名工具
  • 南宁定制网站制作电话图片外链生成工具
  • 哪些网站做的海报比较高大上百度客服电话是多少
  • 菏泽网站建设电话常州seo外包
  • 做木皮的网站裂变营销五种模式十六种方法
  • 精美 企业网站模板微信软文推广怎么做
  • 怎么建立一个网站里面可以查询资料百度权重域名
  • 网站建设顺序镇江交叉口优化
  • 低价企业网站搭建软文新闻发布网站
  • 创造与魔法官方网站做自己喜欢的事seo视频