ZROI 提高十连测 DAY3
由于我不太会写 觉得从比赛开始就冷静分析。然后看完三道题心态有点爆炸没有紧扣题目的性质。
这个心态是不可取的尽量不要有畏难心理 不要草草的写暴力。
LINK:[最长01子序列](http://zhengruioi.com/contest/399/problem/960)
对于一个序列要求最长01子序列 显然不太能写感觉无从下手的样子 不妨简化一下问题 先推出来一些性质。
如果求连续的最长01子序列且满足题目中的性质我们显然是根据每一个1进行统计答案。我们直接扫一遍即可。
如果是序列呢 我们发现这个序列两个1之间相差的x是关键 因为没有这个x我们不知道自己算的是哪一种。
这个比较暴力的做法是暴力枚举x 然后统计答案 如何统计答案?显然的有贪心前面的0能选就选了这样显然对后面会更优的。
不那么暴力的做法 事实上我有一个假做法 当时以为这是一个单峰函数 但是结果并非如此因为我无法证明这是单峰函数。
实际上也并非单峰函数 因为这个某个x与其相关的y的值和1和0的个数以及其分布位置是有关的 所以这并非单峰函数。(脑残写了一个三分
害怕超时所以把1抽了出来然后预处理了两个数组 暴力枚举x 然后贪心的判断 然后A掉了这道题。
说起来 这个也算是极大的优化吧。考虑正解:正解和上述做法有异曲同工之妙但是复杂度是有保证的。
都是暴力枚举 然后 匹配的话为了为了每次匹配到下一个1决定二分寻找下一个1 显然对于我们枚举的x 1的个数为n/x
那么我们要二分1个个数次 所以 1个数为n/1+n/2+..n/n显然根据调和级数我们1的个数最多有lnn个所以总复杂度为nlnnlogn
还算很好写..
```
//#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define INF 2147483646
#define ll long long
#define R register
using namespace std;
char buf[1'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch>1;
		if(p[mid]-p[w]>=x)r=mid;
		else l=mid+1;
	}
	return r;
}
inline int solve(int x)
{
	int cnt=0,st=0;mark=0;
	while(1)
	{
		int s=calc(st,x);
		if(s==top+1)
		{
			if(w[st]>=x)
			{
				cnt+=x;
				break;
			}
			else
			{
				--mark;
				--cnt;
				break;
			}
		}
		st=s;
		++mark;
		cnt+=x+1;
	}
	if(!mark)return 0;
	return cnt;
}
int main()
{
	freopen("1.in","r",stdin);
	scanf("%s",a+1);n=strlen(a+1);
	last=0;
	for(int i=1;i=1;--i)
		if(a[i]=='1')
		{
			w[mark]=last-i-1+w[mark+1];
			last=i;
			--mark;
		}
	for(int i=0;iT2 绝对是一个比较神仙的题目 我是很难想到的解法 把到每一个点的 路径长度压缩到log1.1的级别 这个还是要推出一些性质 但是性质推出来之后那么一切也就很好写了。
对于每次询问我们直接二分即可 对于合并 采用归并可以做到O(n)而sort就显得比较满了复杂度也显得比较高因为复杂度是近乎mlognlogn这个的复杂度甚至会更高一点 T了也...我不清楚别问我
关于性质这个性质我是没有网这个方面去思考 可能思考也思考不出来什么 看题解也看了半天可能是数学没学好 对对数函数一点也不敏感。
性质是这样的对于三个边权 x y z来说 如果满足 $\frac{1}{1.1z}为什么?为什么?对于一个询问dis考虑三种情况:
$dis$\frac{1}{1.1z}$dis>y$ 那么y显然是不符合条件的。综上y真没用。
所以说log1.1(maxdis)是距离总数。当然写完了还是很虚 觉得这个东西不是我自己推出来的非常不真切 也对log1.1的值没有大概的把握所以比较自闭。
然而我 思考了一晚上还是觉得不真切 因为这个式子真的很难列出来 但是这个方向的优化还是可以写的。
```
const ll MAXN=200010;
ll n,m,Q,t,h,len;
ll ru[MAXN],q[MAXN],tmp[MAXN];
ll f[MAXN][500],flag[MAXN];
ll lin[MAXN],ver[MAXN],nex[MAXN],e[MAXN];
inline void add(ll x,ll y,ll z)
{
	ver[++len]=y;
	nex[len]=lin[x];
	lin[x]=len;
	e[len]=z;
}
inline ll get_x(ll x){return x+x/10ll;}
inline void modify(ll x,ll y,ll z)
{
	if(!flag[x])return;
	ll i=1,j=1,cnt=0;
	for(ll k=1;kflag[y])
		{
			tmp[++cnt]=f[x][i]+z;
			++i;
		}
		else tmp[++cnt]=f[y][j],++j;
	}
	f[y][flag[y]=1]=tmp[1];f[y][0]=-200;
	for(ll i=2;i>1;
		if(f[x][mid]>=y)r=mid;
		else l=mid+1;
	}
	ll w=get_x(y);
	if(r!=flag[x]+1&&f[x][r]
ZROI 提高十连测 DAY3的更多相关文章
- 提高十连测day3
		提高十连测day3 A 我们可以枚举两个 $ 1 $ 之间的相隔距离,然后计算形如 $ 00100100 \cdots $ 的串在原串中最⻓⼦序列匹配即可,复杂度 $ O(n^2) $ .寻找 $ S ... 
- ZROI 提高十连测 Day1
		第一天的提高模拟测 考前特意睡了20min 还是歇菜了,果然自己菜是真实的. 题目质量海星 但是我都不会这是真的...题目由于是花钱买的这里就不放了 LINK:problem 熟悉我的人应该都知道账号 ... 
- ZROI 提高十连测 DAY2
		总结:入题尽量快,想到做法要先证明是否正确是否有不合法的情况,是否和题目中描述的情景一模一样. 不要慌 反正慌也拿不了多少分,多分析题目的性质如果不把题目的性质分析出来的话,暴力也非常的难写,有 ... 
- ZROI2019 提高十连测
		额 掰手指头一数 特么又是第三年十连测了= = 2017一场没打 那时候好像一场比赛也就100人左右 2018前几场还都好好补了 后来开始放飞自我了 这时候一场有150人还多了 2019想让今年的No ... 
- bzoj 5216 [Lydsy2017省队十连测]公路建设 线段树维护 最小生成树
		[Lydsy2017省队十连测]公路建设 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 93 Solved: 53[Submit][Status][ ... 
- ZROI提高组模拟赛05总结
		ZROI提高组模拟赛05总结 感觉是目前为止最简单的模拟赛了吧 但是依旧不尽人意... T1 有一半的人在30min前就A掉了 而我花了1h11min 就是一个简单的背包,我硬是转化了模型想了好久,生 ... 
- bzoj 5216: [Lydsy2017省队十连测]公路建设
		5216: [Lydsy2017省队十连测]公路建设 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 66 Solved: 37[Submit][St ... 
- Lydsy2017省队十连测
		5215: [Lydsy2017省队十连测]商店购物 可能FFT学傻了,第一反应是前面300*300背包,后面FFT... 实际上前面背包,后面组合数即可.只是这是一道卡常题,需要注意常数.. //A ... 
- 正睿 2018 提高组十连测 Day4 T3 碳
		记'1'为+1,'0'为-1; 可以发现 pre[i],suf[i]分别为前/后缀和 a[i]=max(pre[l.....i]); b[i]=max(suf[i+1....r]); ans=max( ... 
随机推荐
- 结合实际需求,在webapi内利用WebSocket建立单向的消息推送平台,让A页面和服务端建立WebSocket连接,让其他页面可以及时给A页面推送消息
			1.需求示意图 2.需求描述 原本是为了给做unity3d客户端开发的同事提供不定时的消息推送,比如商城购买道具后服务端将道具信息推送给客户端. 本篇文章简化理解,用“相关部门开展活动,向全市人民征集 ... 
- Linux下diff命令用法详解
			大家好,我是良许. 我们在平时工作的时候,经常要知道两个文件之间,以及同个文件不同版本之间有何异同点.在 Windows 下,有 beyond compare 这个好用的工具,而在 Linux 下,也 ... 
- Java面向对象详解-下
			一. static static:静态的,可以用来修饰属性.方法.代码块(或初始化块).内部类 static修饰属性(类变量): 由类创建的所有的对象,都共用这一个属性 当其中一个对象对此属性进行修改 ... 
- 数据可视化之powerBI技巧(二十一)简单三个步骤,轻松管理你的Power BI度量值
			最近碰到几个星友的问题,都是问我之前分享的源文件是如何把度量值分门别类放到不同的文件夹中的,就像这样, 其实在之前的文章中也曾提及过做法,这里再详细说一下制作步骤: 01 | 新建一个空表 点击菜单栏 ... 
- 使用Typora写博客,图片即时上传,无需第三方图床-EasyBlogImageForTypora
			背景 习惯使用markdown的人应该都知道Typora这个神器,它非常简洁高效.虽然博客园的在线markdown编辑器也不错,但毕竟是网页版,每次写东西需要登录系统-进后台-找到文章-编辑-保存草稿 ... 
- HTTP版本比较
			HTTP2.0优势 1.采用二进制格式传输数据,而非http1.1文本格式,二进制格式在协议的解析和优化扩展上带来了跟多的优势和可能 2.对消息头采用Hpack进行压缩传输,能够节省消息头占用的网络流 ... 
- 不吹不擂,315 道 Python 面试题,欢迎挑战!
			各位大佬暂时先来315道题尝尝吧,后面有时间再继续补充. 有缘人如果看到这些题,不妨留言一下答案,来证明下你到底有多水,哈哈哈哈哈刀哈哈哈哈哈哈 第一部分 Python基础篇(80题) 1.为什么学习 ... 
- Python基础-异常
			异常捕获 常见异常类型 Exception:顶级异常类,大部分异常类都是它的子类.SyntaxError:语法错误TypeError:类型错误ValueError:值错误NameError:找不到名称 ... 
- 拿不到offer?阿里HR教你简历应该这样写
			首先,要明白公司看重的是你的什么?为什么要聘请你?当然是看重你的能力,聘请你来是要来干活的. 都知道简历是敲门砖,那么这一块砖要怎么才能敲得响,怎么才能敲得开大厂的门. 1 能力萃取!什么是能力萃取? ... 
- web自动化 -- 框架
			一.框架源码 https://github.com/jiangnan27/Autotest_UI_Open 二.框架大概介绍 Python3 + selenium3 + pytest5.3 + a ... 
