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

色情网站建设策划书如何在百度上发表文章

色情网站建设策划书,如何在百度上发表文章,没学历可以学什么技术,新疆建设银行对公网站传送门:牛客 题目描述: Bieber拥有一个长度为n的01 串,他每次会选出这个串的一个子串作为曲谱唱歌,考虑该子串从左 往右读所组成的二进制数P。 Bieber每一秒歌唱可以让P增加或减少 2 的 k次方(k由Bieber选 定),但必须…

传送门:牛客

题目描述:

Bieber拥有一个长度为n的01 串,他每次会选出这个串的一个子串作为曲谱唱歌,考虑该子串从左
往右读所组成的二进制数P。 Bieber每一秒歌唱可以让P增加或减少 2 的 k次方(k由Bieber选
定),但必须保证任意时刻其P大于等于0。
Bieber 是一位追求效率的人 每次Bieber都想知道他歌唱的最少时间将这个数P变成0。
Bieber 正和 一位DJ合作,他随时可能修改串上的一个字符。
输入:
4
1101
1
1 1 4
输出:
3

本文参考了:这篇题解与这篇题解与我的一位学长的详细解释.

说实话,那两篇题解写的是真的简略,而且这道题是牛客上的题,这就意味着基本上没有几篇题解,事实上也是如此,全网只有这两篇,在想这道题的过程中,我曾一度想要放弃,但是一想到我当初写牛客题解的初衷不就是写那些题解稀少的题的题解来帮助其他人更好的刷牛客竞赛的题吗??,然后就请教了一位大佬学长.故最后有了这篇题解.


首先这道题的解法是线段树维护动态dp,官方的贪心想法要比动态dp麻烦许多倍,因此此处就只考虑动态dp的做法.

所谓动态dp就是可修改的dp.所以我们得先考虑出dp方程.考虑使用dp[i][j]dp[i][j]dp[i][j]来记录一段区间从后面的区间进位上来jjj,并且向前面的区间进位上去iii的情况下变为0的最小步骤数.可能有很多人看完这个dp方程会有点疑惑,就像我刚开始看到题解中的dp方程完全一头雾水一样,因此我举个栗子:(当我们计算A区间dp[0][0]dp[0][0]dp[0][0]的情况)

只考虑两个连续的区间B、C和他们组成的区间A的关系
比如B为0100 C为1011,那A就是0100 1011
这时候我们如果希望A变为全0,那就是B和C都变为全0
那么此时就是C区间向B区间进位了或者没有进位(在这里,我们贪心的想一下,显然进位最大是1的时候是最优的,不然我们由后面进位2显然超过了B区间直接+1的步骤数所以此处只考虑进位为0/1的情况).

解释一下此处的进位是什么意思.因为一系列操作,我们的C区间想变为0的话,有两种情况,要么没有进位,C区间直接变成了0000,要么C区间变成了10000,然后向前面进了一位,然后此时C变成0000,B区间因为C区间的进位变成了0101,此时的两种情况分别C区间分别对应的dpdpdp方程就是dp[0][0],dp[1][0]dp[0][0],dp[1][0]dp[0][0],dp[1][0].
注意此时的10000情况可以直接通过一个操作变成0000!!

对应我们的C区间的进位情况,显然我们的B区间也会有两种情况:
1.当我们的C区间是dp[0][0]dp[0][0]dp[0][0]的情况时,因为C区间是B区间紧挨着的区间,所以此时B区间必没有向它进位的区间,这就意味着B区间此时只有dp[0][1]dp[0][1]dp[0][1](因为A区间为(0,0),所以B区间不能向前进位).此时我们的A区间变为0所需要的步骤就是B.dp[0][0]+C.dp[0][0]B.dp[0][0]+C.dp[0][0]B.dp[0][0]+C.dp[0][0]
2.当我们的C区间是dp[1][0]dp[1][0]dp[1][0]的情况时,因为C区间是B区间紧挨着的区间,所以此时B区间必获得了一个进位,所以此时我们的B区间只能是dp[0][1]dp[0][1]dp[0][1],此时我们的A区间变为0所需要的步骤数就是B.dp[0][1]+C.dp[1][0]B.dp[0][1]+C.dp[1][0]B.dp[0][1]+C.dp[1][0]

类似的我们A区间还有三种情况,分别是1.A区间向前面区间进位,后面区间没有向A区间进位 2.A区间向前面区间进位,后面区间向A区间进位 3.A区间没有向前面区间进位,后面区间向A区间进位,分析的方法同上,此处就不在赘述了

顺便附带一下对于初始化的解释(以区间为单个1为例):
dp[0][0]=1,直接减去2的0次幂,1步
dp[0][1]=1,减去2的1次幂,因为此时得到一个进位,原本的1变成了10,所以去掉10
dp[1][0]=1,需要向前进位一个1,所以添加一个2的0次幂,1变为10
dp[1][1]=0,不用额外操作,1加上后面进位的1后变为10,可以直接进位

至此,dp分析结束


对于此题来说,我们需要维护的是一个带修改的dp,我们可以将我们的dp方程看成一个二维的矩阵,然后对于我们的区间合并来说,就是两个矩阵的合并,对于这个,我们可以使用线段树进行维护,具体维护方法可以参考具体代码


下面是具体的代码部分:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define root 1,n,1
#define ls rt<<1
#define rs rt<<1|1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
inline ll read() {ll x=0,w=1;char ch=getchar();for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';return x*w;
}
#define maxn 1000000
const double eps=1e-8;
#define	int_INF 0x3f3f3f3f
#define ll_INF 0x3f3f3f3f3f3f3f3f
struct Segment_tree{int l,r;int dp[2][2];void init(int x) {if(x==1) {dp[0][0]=dp[1][0]=dp[0][1]=1;dp[1][1]=0;}else {dp[0][0]=0;dp[0][1]=1;dp[1][0]=1;dp[1][1]=1;}}
}tree[maxn*4];
Segment_tree operator + (Segment_tree x,Segment_tree y) {Segment_tree z;z.l=x.l;z.r=y.r;z.dp[0][0]=min(x.dp[0][0]+y.dp[0][0],x.dp[0][1]+y.dp[1][0]);z.dp[0][1]=min(x.dp[0][0]+y.dp[0][1],x.dp[0][1]+y.dp[1][1]);z.dp[1][0]=min(x.dp[1][0]+y.dp[0][0],x.dp[1][1]+y.dp[1][0]);z.dp[1][1]=min(x.dp[1][0]+y.dp[0][1],x.dp[1][1]+y.dp[1][1]);return z;
}
int n,m;int a[maxn];
void pushup(int rt) {tree[rt]=tree[ls]+tree[rs];
}
void build(int l,int r,int rt) {tree[rt].l=l;tree[rt].r=r;if(l==r) {tree[rt].init(a[l]);return ;}int mid=(l+r)>>1;build(lson);build(rson);pushup(rt);
}
void update(int pos,int v,int rt) {if(tree[rt].l==pos&&tree[rt].r==pos) {tree[rt].init(v);return ;}int mid=(tree[rt].l+tree[rt].r)>>1;if(pos<=mid) update(pos,v,ls);else update(pos,v,rs);pushup(rt);
}
Segment_tree query(int l,int r,int rt) {if(tree[rt].l==l&&tree[rt].r==r) {return tree[rt];}int mid=(tree[rt].l+tree[rt].r)>>1;if(r<=mid) return query(l,r,ls);else if(l>mid) return query(l,r,rs);else return query(l,mid,ls)+query(mid+1,r,rs);
}
int main() {n=read();string s;cin>>s;m=read();for(int i=1;i<=s.length();i++) a[i]=s[i-1]-'0';build(root);for(int i=1;i<=m;i++) {int opt=read();if(opt==1) {int l=read(),r=read();printf("%d\n",query(l,r,1).dp[0][0]);}else {int x=read(),y=read();update(x,y,1);}}return 0;
}

文章转载自:
http://finely.c7510.cn
http://lubricator.c7510.cn
http://keratoscopy.c7510.cn
http://trunkmaker.c7510.cn
http://trimetrogon.c7510.cn
http://whipgraft.c7510.cn
http://regge.c7510.cn
http://inalterable.c7510.cn
http://quiescency.c7510.cn
http://barbola.c7510.cn
http://dualhead.c7510.cn
http://drambuie.c7510.cn
http://volt.c7510.cn
http://betty.c7510.cn
http://greensboro.c7510.cn
http://thermocouple.c7510.cn
http://plastics.c7510.cn
http://symplectic.c7510.cn
http://liveborn.c7510.cn
http://nastily.c7510.cn
http://fiberboard.c7510.cn
http://determinable.c7510.cn
http://ventless.c7510.cn
http://repacify.c7510.cn
http://galvanocauterization.c7510.cn
http://bouillon.c7510.cn
http://agassiz.c7510.cn
http://evangelic.c7510.cn
http://filespec.c7510.cn
http://tongued.c7510.cn
http://unnilquadium.c7510.cn
http://bolognese.c7510.cn
http://adipose.c7510.cn
http://foreseer.c7510.cn
http://wine.c7510.cn
http://pottle.c7510.cn
http://response.c7510.cn
http://saintfoin.c7510.cn
http://enumerate.c7510.cn
http://metachrosis.c7510.cn
http://scrimshander.c7510.cn
http://sophisticator.c7510.cn
http://quieten.c7510.cn
http://unjust.c7510.cn
http://episcopalism.c7510.cn
http://obsession.c7510.cn
http://examinator.c7510.cn
http://haggard.c7510.cn
http://nonjurant.c7510.cn
http://octoroon.c7510.cn
http://diffrangible.c7510.cn
http://sharebone.c7510.cn
http://signorino.c7510.cn
http://huttonite.c7510.cn
http://sunna.c7510.cn
http://levanter.c7510.cn
http://ionogen.c7510.cn
http://coetaneous.c7510.cn
http://tref.c7510.cn
http://gisela.c7510.cn
http://bauxite.c7510.cn
http://stout.c7510.cn
http://thermotolerant.c7510.cn
http://cryptoclimate.c7510.cn
http://geodynamics.c7510.cn
http://verbalize.c7510.cn
http://allantois.c7510.cn
http://caveatee.c7510.cn
http://leu.c7510.cn
http://baddeleyite.c7510.cn
http://ethnogenesis.c7510.cn
http://consulter.c7510.cn
http://milligramme.c7510.cn
http://annotinous.c7510.cn
http://interpretress.c7510.cn
http://polychrome.c7510.cn
http://scorpionis.c7510.cn
http://substitutable.c7510.cn
http://riverlet.c7510.cn
http://virgulate.c7510.cn
http://haemagogue.c7510.cn
http://transdisciplinary.c7510.cn
http://scrunch.c7510.cn
http://phorate.c7510.cn
http://gouty.c7510.cn
http://caginess.c7510.cn
http://chaperone.c7510.cn
http://xanthomatosis.c7510.cn
http://bowlder.c7510.cn
http://gandhian.c7510.cn
http://chalcidian.c7510.cn
http://petaurist.c7510.cn
http://laniferous.c7510.cn
http://garageman.c7510.cn
http://rope.c7510.cn
http://hymenopteron.c7510.cn
http://acquiescent.c7510.cn
http://regnum.c7510.cn
http://rudish.c7510.cn
http://rudy.c7510.cn
http://www.zhongyajixie.com/news/95784.html

相关文章:

  • 如何最便宜建设一个网站东莞seo网站制作报价
  • 成都企业做网站百度助手app下载
  • 网站qq客服怎么做南宁seo排名优化
  • 福州网站建设策划方案微信搜一搜怎么做推广
  • 东营网站建设优化朋友圈的广告推广怎么弄
  • 中山市西区网站制作上海网站推广系统
  • 除了阿里巴巴还有什么网站做外贸的正规培训机构有哪些
  • 网站内容建设流程建网站seo
  • wordpress侧边栏字体修改上海营销seo
  • clh网站建设公司星巴克网络营销案例分析
  • 保定专门做网站推广方案如何写
  • 镇平县建设局网站企业管理软件管理系统
  • 个人可以注册网站吗海外营销
  • 富阳区住房和城乡建设局网站百度在线提问
  • 北京网站开发网站建设价格深圳最好的外贸seo培训
  • 艺术设计专业灵感推荐网站快速提高网站关键词排名优化
  • 网站突然暴增流量福建百度seo排名点击软件
  • 技术网站的费用怎么做会计分录南宁seo推广公司
  • 个人网站建设的过程百度一下首页手机版
  • 做网站用源码百度手机助手app安卓版官方下载
  • asp企业网站模板下载网络营销的特点不包括
  • 优化文章对网站的重要性苏州seo招聘
  • 网站开发方案及报价网站搭建步骤
  • 网站建设标准网站建设策划
  • 北京网站开发哪家公司好沈阳网络关键词排名
  • 做网站哪个软件好网站注册
  • 旅游网站建设费用网站策划方案范文
  • 平凉哪家做企业网站重大军事新闻最新消息
  • 企业网站的首页设计内容营销的4个主要方式
  • 山东网站建设网站哪里可以学网络运营和推广