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 ...
随机推荐
- hd RFS USB Sever/ NetworkUSB/16 Pro+ / NET-USB16-P+
s 方法一: 第一步,USB设备lan2和台式机网线对插,设置台式机IP 192.168.1.252.子网掩码255.255.255.0第二部,打开设备USB 固有IP页面192.168.1.250 ...
- ELK 构建 MySQL 慢日志收集平台详解
ELK 介绍 ELK 最早是 Elasticsearch(以下简称ES).Logstash.Kibana 三款开源软件的简称,三款软件后来被同一公司收购,并加入了Xpark.Beats等组件,改名为E ...
- 1.9 分布式协调服务-Zookeeper(二)
zoo.cfg配置文件分析 tickTime=2000 zookeeper中最小的时间单位长度 (ms) initLimit=10 follower节点启动后与leader节点完成数据同步的时间 ...
- SVG---DEMO
SVG代码: <svg id="circle" data-name="circle_1" xmlns="http://www.w3.org/20 ...
- ArcGis Python脚本——将细碎小面合并到相邻的面积最大的面
参数: polygon_fc 面要素类 area_limit 给定面积值,小于它的面会被合并 给定两个参数即可,这回没有注释. #polygon_fc 面要素类 #area_limit 给定面积值,小 ...
- 一次对JDK进行"减肥"的记录
起因 最近做的一个小项目,因为要涉及到批量部署,每次在部署之前都需要在各个主机上先安装jdk环境(为了使用jdk自带的工具如jps等,所以没有单纯安装jre),但是因为jdk文件太大(以jdk-8u1 ...
- 20155324《网络对抗》Exp1 PC平台逆向破解(5)M
20155324<网络对抗>Exp1 PC平台逆向破解(5)M 实验目标 本次实践的对象是一个名为~pwn1~的~linux~可执行文件. 该程序正常执行流程是:~main~调用~foo~ ...
- GBDT原理及利用GBDT构造新的特征-Python实现
1. 背景 1.1 Gradient Boosting Gradient Boosting是一种Boosting的方法,它主要的思想是,每一次建立模型是在之前建立模型损失函数的梯度下降方向.损失函数是 ...
- EF提交插入数据catch捕获具体异常方法
try { db.SaveChanges(); } catch (DbEntityValidationException ex) { StringBuilder errors = new String ...
- Oracle问题整合
1.安装Oracle和ado.net连接Oracle 在“环境变量”的“系统变量”中[必须添加]: ORACLE_HOME = C:\instantclient_11_2 TNS_ADMIN = C: ...