B. Menci 的序列
题解:
首先subtask1直接状压暴力就好
subtask2我的处理和题解不太一样
仍然正向考虑
设i的时候有最高位为j,那么这个时候数一定越大越好(这个比较好yy)
然后$f[i][j]$搞个高精度dp就可以了
复杂度$(n^3/64)$
我懒得手写了。。就写了$n^3$的
还有bitset本地开O2 0.5s 不开O2 32s 真可怕
subtask4
显然我们会先用1,然后到一定时候为了保证位数有0就得用
#include <bits/stdc++.h>
using namespace std;
#define rint register int
#define IL inline
#define rep(i,h,t) for (int i=h;i<=t;i++)
#define dep(i,t,h) for (int i=t;i>=h;i--)
bitset<> f[][];
const int N=2e6;
char c[N];
#define te bitset<510>
IL bool pd1(te B,int k)
{
rep(i,,k) if (B[i]!=) return();
return();
}
IL te plu(te B1)
{
te B=B1;
int i;
for (i=;i<=;i++) if (B[i]==) break;
B[i]=;
i--;
for (;i>=;i--) B[i]=;
return B;
}
bool pd(te x,te y)
{
for (int i=;i>=;i--)
{
if (x[i]>y[i]) return ;
if (x[i]<y[i]) return ;
}
return ;
}
IL void maxa(te &a,te b)
{
if (pd(a,b)) a=b;
}
te ans;
int n,m;
namespace subtask4{
int f[N];
void solve()
{
dep(i,n,) if (c[i]=='*') f[i]=f[i+]+;
else f[i]=f[i+];
bool tt=;
int cnt=,cnt3=;
rep(i,,n)
{
if (c[i]=='+')
{
cout<<; tt=; cnt++; cnt3=;
} else
{
cnt3++;
if (cnt3>&&tt&&f[i]<m-cnt) { cout<<; cnt++;}
}
if (cnt==m) {break;}
}
if (tt&&cnt!=m&&cnt3>) cout<<;
if (!tt) cout<<;
}
};
int main()
{
freopen("1.in","r",stdin);
freopen("2.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n>>m; rep(i,,n) cin>>c[i];
if (n<=&&m<=)
{
rep(i,,n)
rep(j,,m)
{
if (c[i]=='+')
{
if (j&&pd1(f[i-][j-],j-)) f[i][j][j]=;
if (!pd1(f[i-][j],j))
maxa(f[i][j],plu(f[i-][j]));
} else
{
if (j) f[i][j]=f[i-][j-]<<;
}
maxa(f[i][j],f[i-][j]);
}
int pos=;
dep(i,,) maxa(ans,f[n][i]);
dep(i,,) if (ans[i]) { pos=i; break;}
dep(i,pos,) cout<<ans[i];
} else
{
subtask4::solve();
}
return ;
}
然后正解其实就是先做一个转化
把*后面相邻的+变成乘前面的+
于是这样就变成subtask4
B. Menci 的序列的更多相关文章
- Menci的序列
题目大意 一个长度为n的字符串s,只包含+和×. 选出一个子序列,然后你有一个ret,初始为0,按顺序扫你选出的这个子序列. 如果碰到的是+,ret+1,否则ret*2. 最大化ret%2^k. 首先 ...
- 【夯实PHP基础】UML序列图总结
原文地址 序列图主要用于展示对象之间交互的顺序. 序列图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色 ...
- Windows10-UWP中设备序列显示不同XAML的三种方式[3]
阅读目录: 概述 DeviceFamily-Type文件夹 DeviceFamily-Type扩展 InitializeComponent重载 结论 概述 Windows10-UWP(Universa ...
- 软件工程里的UML序列图的概念和总结
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习! 软件工程的一般开发过程:愿景分析.业务建模,需求分析,健壮性设计,关键设计,最终设计,实现…… 时序图也叫序列图(交互图),属于软件 ...
- python序列,字典备忘
初识python备忘: 序列:列表,字符串,元组len(d),d[id],del d[id],data in d函数:cmp(x,y),len(seq),list(seq)根据字符串创建列表,max( ...
- BZOJ 1251: 序列终结者 [splay]
1251: 序列终结者 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 3778 Solved: 1583[Submit][Status][Discu ...
- 最长不下降序列nlogn算法
显然n方算法在比赛中是没有什么用的(不会这么容易就过的),所以nlogn的算法尤为重要. 分析: 开2个数组,一个a记原数,f[k]表示长度为f的不下降子序列末尾元素的最小值,tot表示当前已知的最长 ...
- [LeetCode] Sequence Reconstruction 序列重建
Check whether the original sequence org can be uniquely reconstructed from the sequences in seqs. Th ...
- [LeetCode] Binary Tree Longest Consecutive Sequence 二叉树最长连续序列
Given a binary tree, find the length of the longest consecutive sequence path. The path refers to an ...
随机推荐
- mac下安装android-sdk
安装sdk brew cask install android-sdk 配置Path环境 vim ~/.bash_profile 设置路径 #Setting PATH for android-sdk ...
- com.fasterxml.jackson工具类
老版本的Jackson使用的包名为org.codehaus.jackson,而新版本使用的是com.fasterxml.jackson. Jackson主要包含了3个模块: jackson-core ...
- Java虚拟机—垃圾回收算法(整理版)
1.概述 由于垃圾收集算法的实现涉及大量的程序细节.因此本节不打算过多地讨论算法的实现,只是介绍几种算法的思想及其发展过程.主要涉及的算法有标记-清除算法.复制算法.标记-整理算法.分代收集算法. 2 ...
- webpack-dev-server live reloading 技术实现
webpack-dev-server live reloading https://github.com/webpack/webpack-dev-server Use webpack with a ...
- 循环队列和链式队列(C++实现)
循环队列: 1.循环队列中判断队空的方法是判断front==rear,队满的方法是判断front=(rear+1)%maxSize.(我曾经想过为什么不用一个length表示队长,当length==m ...
- kaldi通用底层矩阵运算库——CUDA
cudamatrix/cublas-wrappers.h 该头文件对cuBLAS的接口进行了简单的封装(函数名的简化和部分kaldi函数的封装). 比如 cublasSgemm_v2封装为cublas ...
- Centos6.5使用yum安装mysql——快速上手必备(转载)
第1步.yum安装mysql[root@stonex ~]# yum -y install mysql-server安装结果:Installed: mysql-server.x86_64 0: ...
- JAVA进阶18
间歇性混吃等死,持续性踌躇满志系列-------------第18天 1.飞机游戏小项目 ①创建窗口 package cn.xfj.game; import javax.swing.*; import ...
- Houdini Distributed Simulations and Render
1.HQueue是我最早搭建到本地农场.经过测试,效率极其低下.基本上是个玩具,离真正的管理软件差的十万八千里. 不是说Hqueue不行,因为发现了用 农场管理软件API调用Houdini Rende ...
- hammer.js初探
hammer.js官方文档 hammerjs是什么 hammerjs是一个短小精悍的库,他可以让我们轻松的实现移动端上的手势. hammerjs的两大优势如下: 为移动端网页添加相关手势. 去除移动端 ...