XIN队算法
XIN队算法
注:名称由莫队算法改编而来
从luogu搬过来了。。。
\(newly\;upd:2021.7.8\)
\(newly\;upd:2021.6.6\)
OI至高算法,只要XIN队算法打满,保证所有比赛 \(rk1\),碾爆标程,让对手望尘莫及。
请慎用
XIN队算法:
1.遇到不会做的题目不用慌,你要想到你还有XIN队算法,仔细读题,理解题目意义,然后开始准备写XIN队算法。
2.这时候,你可以潇洒地敲出:
void xin_team()
然后开始暴搜
XIN队算法框架:
void xin_team(参数)
{
if(边界) return;
for(register int i=1;i<=n;++i)
if(条件1)
{
状态转移
xin_team(参数);
状态回溯
}
}
但是,对于不同的题目, void xin_team
并不能解决所有的题目,那该怎么办呢???
对于很多不能用XIN队\(1\)号算法的,大多数可以使用XIN队\(2\)号算法:
next_permutation(a+1,a+n+1);
大法
框架:
void xin_team2
{
do
{
答案记录
}while(next_permutation(a+1,a+n+1));
}
非常完美
但是,由于XIN队算法时间复杂度 只有 \(\mathcal O(2^n)\)或者是\(\mathcal O(n!)\),所以我们提出优化:
优化XIN队算法:
非常不建议使用
框架:
srand((unsigned)time(0));
do
{
random_shuffle(a+1,a+n+1);
答案记录
}while(next_permutation(a+1,a+n+1));
复杂度:
\]
还附加超大常数
XIN队算法升级:二维XIN队
有很多很多的题目无法用普通的\(XIN\)队算法解决,这时候我们就需要\(XIN\)队算法升级版:\(\color{red}\huge_{\text{二维XIN队}}\)
二维\(XIN\)队对于代码能力的提升是显而易见的,然而对复杂度的提升更是显而易见的,二维\(XIN\)队算法框架:
比方说:
使用此算法,轻松 \(30pts\)
void xin_team2(int x,int now)
{
if(边界)
{
xin_team2(x,now);
记录
return ;
}
for(register int i=1;i<=n;++i)
{
记录状态
xin_team(x,now+1);
回溯状态
}
}
void xin_team1(int x,int now)
{
if(边界)
{
xin_team2(x,now);
记录
return ;
}
for(register int i=1;i<=n;++i)
{
记录状态
xin_team(x,now+1);
回溯状态
}
}
复杂度:
\]
并且只能说是大概
我们发现,对于一般的题目,大多是 \(dp\) 解决,然而纯粹运用上述方法只能拿到部分分数,甚至全部 \(TLE\) 所以,记忆化 \(XIN\) 队算法应运而生。
对于优秀的记忆化 \(XIN\) 算法,想要什么状态就去找什么状态,然后就可以实现飞一般的提升。。。
包准快
使用记忆化 \(XIN\) 队算法,\(NOI\)包准不打铁!
比方说这个题: \(NOI2020\)美食家
使用 \(XIN\) 队算法,轻轻松松 \(40pts\)
框架:
void xin_team(int i,int j)
{
if(f[i][j]) return f[i][j];
for(k ...)
xin_team(k,~);
return f[i][j];
}
算法的时间复杂度就是:
\]
\(num\)为状态,复杂度总体海星。。。
然而:
\(\color{red} \huge{\text{方程推不出}}\)
\(\color{green} \huge{\text{亲人两行泪}}\)
\(XIN\) 优化分块预处理
一个月没更了,这次在刷题的时候发现了最新的 \(XIN\) 队算法应用
这是在写蒲公英的时候发现的。
做了好长时间,中途还跑去做树链去了。
时间相差的确实长了一些。。。
在用分块解决这个问题的时候。
发现狂 \(T\) 不止。
但是。
不知道为什么在其他的 \(OJ\) 上都可以过掉
只不过就是很慢。
但是在学校的 \(OJ\) 上最多只有 \(70pts\)。
好评测机
然而并不敢找老师去开大时限
所以我只能优化暴力。。。
然后。
我发现在预处理 \(p_{i,j}\) 的时候,时间差的很多很多。
然而如果用 \(query\) 函数而不是暴力去搞就会错。。。
因为有些需要的状态还没有附上值但是接下来处理需要用到。。。
所以我集中生智
发现了 \(XIN\) 队优化分块预处理法
我都没想到 \(XIN\) 队算法还有优化别的东西的一天
主要思想就是 缺啥找啥
然后状态就有了。。。
双指针突然不香了 \(\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\) --摇摆兵
然后飞快
void xin_team(int x,int y)
{
if(p[x][y]) return;
if(abs(y - x) <= 2) {p[y][x] = p[x][y] = query(l[x],r[y],0); return;}
xin_team(x+1,y-1);
p[x][y] = p[y][x] = query(l[x],r[y],0);
}
\(\color{red}{\huge{\uparrow \text{精华}}}\)
\(\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\huge{record}\)
XIN队算法的更多相关文章
- NBUT 1457 莫队算法 离散化
Sona Time Limit:5000MS Memory Limit:65535KB 64bit IO Format: Submit Status Practice NBUT 145 ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose) [莫队算法]【学习笔记】
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 7687 Solved: 3516[Subm ...
- NPY and girls-HDU5145莫队算法
Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description ...
- Codeforces617 E . XOR and Favorite Number(莫队算法)
XOR and Favorite Number time limit per test: 4 seconds memory limit per test: 256 megabytes input: s ...
- Bzoj 2038---[2009国家集训队]小Z的袜子(hose) 莫队算法
题目链接 http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Description 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色 ...
- 【BZOJ-3052】糖果公园 树上带修莫队算法
3052: [wc2013]糖果公园 Time Limit: 200 Sec Memory Limit: 512 MBSubmit: 883 Solved: 419[Submit][Status] ...
- 莫队算法 2038: [2009国家集训队]小Z的袜子(hose)
链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2038 2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 ...
- Codeforces 617E XOR and Favorite Number(莫队算法)
题目大概说给一个序列,多次询问区间异或和为k的连续子序列有多少个. 莫队算法,利用异或的性质,通过前缀和求区间和,先处理出序列各个前缀和,然后每次区间转移时维护i以及i-1前缀和为某数的个数并增加或减 ...
- 信心题--FUOJ2226(莫队算法)
http://acm.fzu.edu.cn/problem.php?pid=2226 信心题,还说是信心题,题目给的真好.但是一点都不像信心题. 又是一个新的算法,莫队算法 莫队算法是一个用数组就可以 ...
随机推荐
- P4779 【模板】单源最短路径(标准版)单源最短路Dijkstra
题目描述 给定一个$n$个点,$m$条有向边的带非负权图,请你计算从$s$出发,到每个点的距离. 数据保证你能从$s$出发到任意点. 输入格式 第一行为三个正整数$n,m,s$. 第二行起$m$行,每 ...
- 『言善信』Fiddler工具 — 13、Fiddler断点功能的使用详解
目录 1.Fiddler断点的应用 2.断点的分类 3.设置全局断点 (1)设置before Requests全局断点: (2)设置After Responses全局断点: 4.设置局部断点 (1)设 ...
- 关于使用JS去除URL中的指定参数问题,js 对url进行某个参数的删除,并返回url
在网页上找了半天,发现现在的资源实在是少的可怜,而前端尤甚.所以没办法,于是自己花了一些时间写了一个: 1 /** 2 * 删除URL中的指定参数 3 * @param {*} url 4 * @pa ...
- Luat Inside | 致敬经典,使用Air724UG制作简易贪吃蛇
作者简介: 打盹的消防车--活跃于Luat社群的新生代全能开发者,东北小伙儿爽朗幽默.好学敏思,更是实力行动派.幼年曾手握火红炽铁而后全然无恙,堪称魔幻经历:如今热衷于各类嵌入式软硬件研究,快意物联江 ...
- WEB安全新玩法 [2] 防范前端验证绕过
用户登录,几乎是所有 Web 应用所必须的环节.Web 应用通常会加入一些验证手段,以防止攻击者使用机器人自动登录,如要求用户输入图形验证码.拖动滑动条等.但是,如果验证的逻辑仅仅在前端执行,是很容易 ...
- jQuery筛选选择器
<!DOCTYPE html><html><head> <meta http-equiv="Content-type" conten ...
- CentOS-yum安装Docker环境(含:常用命令)
安装Docker环境 $ yum install docker -y 启动Docker $ systemctl start docker 设置自启动 $ systemctl enable docker ...
- shiro框架基础
一.shiro框架简介 Apache Shiro是Java的一个安全框架.其内部架构如下: 下面来介绍下里面的几个重要类: Subject:主体,应用代码直接交互的对象就是Subject.代表了当前用 ...
- leetcode第157场周赛5213
当时居然没想到,我真菜,就当记录一下了. 思路分析: 分为两种: 第一种:走两步的,无论是奇或偶的位置,只要走两步,代价为0: 第二种:走一步的,就是偶数到奇数,或者奇数到偶数,代价为1: 那么实际上 ...
- WPF教程三:学习Data Binding把思想由事件驱动转变为数据驱动
之前大家写代码都喜欢用事件驱动,比如说鼠标输入的click事件.初始化的内容全部放在窗体加载完毕的load事件,等等,里面包含了大量的由事件触发后的业务处理代码.导致了UI和业务逻辑高度耦合在一个地方 ...