题目大意

一个长度为n的字符串s,只包含+和×。

选出一个子序列,然后你有一个ret,初始为0,按顺序扫你选出的这个子序列。

如果碰到的是+,ret+1,否则ret*2。

最大化ret%2^k。

  首先可以注意到,每一个+对答案有2^c的贡献,c为该+后的×数量(因为遇到了×每次乘二)。

 从这个结论推广开来,可以得到×+++=+×+这样一个性质(前者每个+的贡献为2^0=1,总和为3,后者第一个加号的贡献为2^1=2,第二个+的贡献为2^0=1,总和也为3)。

  有了以上两种结论,我们可以把任意一个大于2的+序列从中抽取两个+,又前面的离他最近的一个×前添加一个+。循环多次,就可以使得每一个+序列的长度不超过2。

  建立一个a[],a[i]表示后面×的数量为i的+有多少个,这样来存取每个+的贡献。依第三段的结论可以推出,a[i]<=2因此在二进制运算中,最多只能进一次位。

点击查看代码
#include<cstdio>
#include<algorithm>
#include<cstring>
#define fo(i,a,b) for(i=a;i<=b;i++)
#define fd(i,a,b) for(i=a;i>=b;i--)
using namespace std;
const int maxn=1000000+10;
char s[maxn];
int a[maxn],ans[maxn];
int i,j,k,l,t,n,m,p;
int main(){
scanf("%d%d",&n,&k);
scanf("%s",s+1);
t=0;
fd(i,n,1)
if (s[i]=='*') t++;else a[t]++;
n+=10;
fo(i,0,n){
t=(a[i]-1)/2;
a[i]-=2*t;
a[i+1]+=t;
}//将多个加号组成的串转化成最多只有两个连续加号组成的串
p=k-1;
while (n>=0){
while (n>=0&&!a[n]) n--;
if (n<0) break;
if (n>=p) ans[p--]=1;
else{
fo(i,0,p-1){
t=a[i]/2;
a[i]-=2*t;
a[i+1]+=t;
}
fo(i,0,p) ans[i]=a[i];
break;
}
n--;
}
p=k-1;
while (p>=0&&!ans[p]) p--;
if (p>=0){
fd(i,p,0) printf("%d",ans[i]);
printf("\n");
}
else printf("0\n");
}

Menci的序列的更多相关文章

  1. B. Menci 的序列

    题解: 首先subtask1直接状压暴力就好 subtask2我的处理和题解不太一样 仍然正向考虑 设i的时候有最高位为j,那么这个时候数一定越大越好(这个比较好yy) 然后$f[i][j]$搞个高精 ...

  2. 【夯实PHP基础】UML序列图总结

    原文地址 序列图主要用于展示对象之间交互的顺序. 序列图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色 ...

  3. Windows10-UWP中设备序列显示不同XAML的三种方式[3]

    阅读目录: 概述 DeviceFamily-Type文件夹 DeviceFamily-Type扩展 InitializeComponent重载 结论 概述 Windows10-UWP(Universa ...

  4. 软件工程里的UML序列图的概念和总结

    俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 软件工程的一般开发过程:愿景分析.业务建模,需求分析,健壮性设计,关键设计,最终设计,实现…… 时序图也叫序列图(交互图),属于软件 ...

  5. python序列,字典备忘

    初识python备忘: 序列:列表,字符串,元组len(d),d[id],del d[id],data in d函数:cmp(x,y),len(seq),list(seq)根据字符串创建列表,max( ...

  6. BZOJ 1251: 序列终结者 [splay]

    1251: 序列终结者 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 3778  Solved: 1583[Submit][Status][Discu ...

  7. 最长不下降序列nlogn算法

    显然n方算法在比赛中是没有什么用的(不会这么容易就过的),所以nlogn的算法尤为重要. 分析: 开2个数组,一个a记原数,f[k]表示长度为f的不下降子序列末尾元素的最小值,tot表示当前已知的最长 ...

  8. [LeetCode] Sequence Reconstruction 序列重建

    Check whether the original sequence org can be uniquely reconstructed from the sequences in seqs. Th ...

  9. [LeetCode] Binary Tree Longest Consecutive Sequence 二叉树最长连续序列

    Given a binary tree, find the length of the longest consecutive sequence path. The path refers to an ...

随机推荐

  1. 理解 Angular 服务

    理解 Angular 服务 本文写于 2021 年 3 月 29 日 理解 Angular 服务 什么是服务 服务写法 原理简述 提供服务 1. 在服务中注册 2. 在 module 中注册 3. 在 ...

  2. 每日一题20180330-Linux

    一.问题 1.1 统计/var/log/下所有文件个数 1.2 查找出/var/log目录下面修改时间是7天以前,大小在50k到2M之间,并以.log结尾的文件把这些文件复制到/data目录中 1.3 ...

  3. awk应用场景之过滤举例

    以/etc/passwd举例,passwd文本 [root@196 tmp]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bi ...

  4. sklearn数据集的导入及划分

    鸢尾花数据集的导入及查看: ①鸢尾花数据集的导入: from sklearn.datasets import load_iris ②查看鸢尾花数据集: iris=load_iris()print(&q ...

  5. .NET MAUI 正式发布,再见了 Xamarin.Forms

    David Ortinau 在dotnet 团队博客上发表了一篇文章<Introducing .NET MAUI – One Codebase, Many Platforms>,在这篇文章 ...

  6. SMFL 教程&个人笔记

    本文大部分来自官方教程的Google翻译 但是加了一点点个人的理解和其他相关知识 转载请注明 原文链接 :https://www.cnblogs.com/Multya/p/16273753.html ...

  7. 构建基于React18的电子表格程序

    背景 2022年3月29日,React正式发布18.0.0.本次升级内容包括开箱即用的改进,如自动批处理.新的API(如startTransition)和支持Suspense 的流式服务器端渲染.关于 ...

  8. WindowsServer评估版转为正式版并激活

    更新记录 本文迁移自Panda666原博客,原发布时间:2021年5月16日. 一般从官网下载的Windows Server版本都是评估试用版本.这时候想转为正式版本,就需要使用转换激活代码.请参照不 ...

  9. go-zero微服务实战系列(五、缓存代码怎么写)

    缓存是高并发服务的基础,毫不夸张的说没有缓存高并发服务就无从谈起.本项目缓存使用Redis,Redis是目前主流的缓存数据库,支持丰富的数据类型,其中集合类型的底层主要依赖:整数数组.双向链表.哈希表 ...

  10. react native 0.6x 在创建项目时,CocoaPods 的依赖安装步骤卡解决方案

    前言 你需要做两件事 gem换源 pod repo 换源 实战 如果你已经成功安装了CocoaPods.那么这里你需要卸载它.gem换源1. 卸载CocoaPods 查看gem安装的东西 gem li ...