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 ...
随机推荐
- POJ 3666 Making the Grade (动态规划)
Description A straight dirt road connects two fields on FJ's farm, but it changes elevation more tha ...
- scws安装
mkdir scws cd scws wget http://www.xunsearch.com/scws/down/scws-1.2.3.tar.bz2 tar xvjf scws-.tar.bz2 ...
- 2018-2019-2 实验二 Java面向对象程序设计
实验内容 1.初步掌握单元测试和TDD 2.理解并掌握面向对象三要素:封装.继承.多态 3.初步掌握UML建模 4.熟悉S.O.L.I.D原则 5.了解设计模式 实验要求 1.没有Linux基础的同学 ...
- MySQL打包执行SQL
当一次业务处理计算服务和数据库交互较多时,将可能有大量时间浪费在数据传输上,尤其对于计算服务和数据库跨机房或跨地区部署时,浪费的时间会极其可观.为了减少时间浪费可以使用MySQL提供的SQL打包功能. ...
- DataTable某一列转换为分隔字符串
//把DataTable的某一列转化为逗号分隔字符串 private static string DataTableColumnSplit(DataTable dataTable,string str ...
- mybatis中 keyProperty="id" 的作用
keyProperty="id"的作用是: 一般都是结合数据库自动生成主键来使用,由于是数据库生成的主键, 所以在这个对象持久化到数据库之前是对象中的这个属性是没有属性值的,但是在 ...
- charles抓包https设置
写在前面 https抓包的实现 (一)首先,电脑得装个证书 (二)然后,移动设备上安装证书 (三)最后,Charles添加SSL Proxying 写在前面 开发时,面对各种接口数据,绝大多数时间都会 ...
- Technocup 2019 - Elimination Round 1
http://codeforces.com/contest/1030 B. Vasya and Cornfield 判断点是否在矩形内(包括边界) 把每条边转化为一个不等式 public static ...
- Groovy中的GString
在讨论GString之前,我们先讨论一下Groovy里面的String.在Groovy里面String有 println 'test string' println '''test string''' ...
- mysql8.0卸载干净--win10
本文介绍,在Windows10系统下,如何彻底删除卸载MySQL... 1>停止MySQL服务开始->所有应用->Windows管理工具->服务,将MySQL服务停止.2> ...