三分

给定平面内 \(n <= 2000\) 个节点, 求平面内一点使得到所有点的欧几里得距离和最小

确定 \(y\) 轴时 \(x\) 轴满足单峰函数

\(x\) 轴同理

三分套三分即可

深度优先搜索

从起始状态少的一侧开始搜索更优

例题

给你一副扑克中的 \(n\) 张牌, 出的下一张牌需要为前面出牌点数之和的约数, 求一种合法的方案

此题正向搜索代码如下:

void dfs(int depth, int sum){
if(depth == n){
output();
return ;
}
REP(i, 1, n){
if(!vis[i] && sum % a[i] == 0){
vis[i] = 1;
dfs(depth + 1, sum + a[i]);
vis[i] = 0;
}
}
}

显然初始分支很多, 考虑逆向搜索

void dfs(int depth, int left){
if(depth == 0){output();return ;}
REP(i, 1, n){
if(!vis[i] && (left - a[i]) % a[i] == 0){
vis[i] = 1;
dfs(depth - 1, left - a[i]);
vis[i] = 0;
}
}
}
//调用
dfs(n, sum[a[i]]);

初始分支减少, 搜索量减少

meet-in-the-middle

在指数级别复杂度显然无法承受时, 分别从两侧开始搜索, 在中间相遇, 减少搜索量

一般分别做 \(dfs\) 后, 在左边利用二分查找(或各种数据结构)寻找对应右边的值, 得到解的个数(用 \(STL\ map\) 也是很好的选择)

当发现有 \(\%\) 的时候大大降低搜索次数

通常降低次数的方式是

  1. 减少调用量(整除才进入)
  2. 枚举因子

数学部分

exgcd

\[gcd(a,b) = !b ? a : gcd(b, a \% b)
\]

当 $$b == 0$$ 时, 有 $$gcd(a, 0) = a$$

令 $$ax_{0} + by_{0} = gcd(a, b)$$

此时 $$a * 1 + 0 * 0 = gcd(a, 0) = a$$ 显然有

\[x_{0} = 1, y_{0} = 0
\]

现已递归求得 $$bx_{0} + (a % b)y_{0} = d$$

而$$(a%b) = a - \lfloor \frac{a}{b} \rfloor * b$$

构造成 $$ax + by = d$$ 形式得

\[ay_{0} + b(x_{0} - \lfloor \frac{a}{b} \rfloor * y_{0}) = d
\]

故 $$x = y_{0}, y = x_{0} - \lfloor \frac{a}{b} \rfloor * y_{0}$$

Code

int exgcd(int a, int b, int &x, int &y){
if(!b){x = 1, y = 0;return a;}
int d = exgcd(b, a % b, x, y);
int temp = x;x = y;y = temp - (a / b) * y;
return d;
}

有关于线段树和树剖

线段树标记下推记得考虑对子节点标记的影响

若是多组询问, 初始化时记得考虑如下几个方面

    nume = 1;//原图边编号
memset(head, 0, sizeof(head));//初始化原图
tot = 0;//树剖节点
lazytag = -1;//线段树懒标记

Tony的口胡呼呼(。-ω-)zzz的更多相关文章

  1. Topcoder口胡记 SRM 562 Div 1 ~ SRM 599 Div 1

    据说做TC题有助于提高知识水平? :) 传送门:https://284914869.github.io/AEoj/index.html 转载请注明链接:http://www.cnblogs.com/B ...

  2. 口胡FFT现场(没准就听懂了)&&FFT学习笔记

    前言(不想听的可以跳到下面) OK.蒟蒻又来口胡了. 自从ZJOI2019上Day的数论课上的多项式听到懵逼了,所以我就下定决心要学好多项式.感觉自己以前学的多项式都是假的. 但是一直在咕咕,现在是中 ...

  3. BZOJ 口胡记录

    最近实在是懒的不想打代码...好像口胡也算一种训练,那就口胡把. BZOJ 2243 染色(树链剖分) 首先树链剖分,然后记录下每个区间的左右端点颜色和当前区间的颜色段.再对每个节点维护一个tag标记 ...

  4. Atcoder/Topcoder 口胡记录

    Atcoder/Topcoder 理论 AC Atcoder的❌游戏示范 兴致勃勃地打开一场 AGC 看 A 题,先 WA 一发,然后花了一年时间 Fix. 看 B 题,啥玩意?这能求? 睡觉觉. e ...

  5. NOIP2016考前做题(口胡)记录

    NOIP以前可能会持续更新 写在前面 NOIP好像马上就要到了,感觉在校内训练里面经常被虐有一种要滚粗的感觉(雾.不管是普及组还是提高组,我都参加了好几年了,结果一个省一都没有,今年如果还没有的话感觉 ...

  6. 关于有向图走“无限次”后求概率/期望的口胡/【题解】HNCPC2019H 有向图

    关于有向图走"无限次"后求概率/期望的口胡/[题解]HNCPC2019H 有向图 全是口胡 假了不管 讨论的都是图\(G=(V,E),|V|=n,|E|=m\)上的情况 " ...

  7. 「口胡题解」「CF965D」Single-use Stones

    目录 题目 口胡题解 题目 有许多的青蛙要过河,可惜的是,青蛙根本跳不过河,他们最远只能跳 \(L\) 单位长度,而河宽 \(W\) 单位长度. 在河面上有一些石头,距离 \(i\) 远的地方有 \( ...

  8. PKUSC 2022 口胡题解

    \(PKUSC\ 2022\)口胡题解 为了更好的在考试中拿分,我准备学习基础日麻知识(为什么每年都考麻将 啊啊啊) 首先\(STO\)吉老师\(ORZ,\)真的学到了好多 观察标签发现,这套题覆盖知 ...

  9. 「线性基」学习笔记and乱口胡总结

    还以为是什么非常高大上的东西花了1h不到就学好了 线性基 线性基可以在\(O(nlogx)\)的时间内计算出\(n\)个数的最大异或和(不需要相邻). 上述中\(x\)表示的最大的数. 如何实现 定义 ...

随机推荐

  1. Android之JSON格式数据解析

    查看原文:http://blog.csdn.net/hantangsongming/article/details/42234293 JSON:JavaScript 对象表示法(JavaScript ...

  2. K 班前7次作业成绩汇总

    K 班前7次作业成绩汇总 得分榜 千帆竞发 详细 短学号 名 1 2 3 4 5 6 7 TOTAL 505 基智 4.55 1 -2 0 0 -10 4.37 -2.08 414 圳源 5.43 2 ...

  3. 【转】STM32和ARM的区别

    转自:http://www.cnblogs.com/nuc-boy/archive/2012/09/11/2680157.html 这个问题大概2009年的时候很多人就在问,请看09年的时候大家给出的 ...

  4. Online Resource Mapping for SDN Network Hypervisors using Machine Learning

    发表时间:2016 一些定义: self-configuring networks: FlowVisor: FlowVisor是建立在OpenFlow之上的网络虚拟化工具,它可以将物理网络划分成多个逻 ...

  5. 使用非服务器磁盘(MBROnly)安装ESXi时的方法.

    From ESXi 5.0, if you install ESXi to a empty hard disk, the target disk will be prepared with GPT-b ...

  6. ESXi虚拟机开机进入bios的方法

    想要修改启动顺序, 发现界面比较难弄 应该是在设置里面有修正. 首先编辑设置 增加如下设置 就可以了.

  7. Linux常用指令-ssh

    目录 ssh远程登陆 ssh免密码登陆 生成公钥和私钥 将公钥复制到其他从机 文件说明 id_rsa id_rsa.pub authorized_keys known_host SSH(远程连接工具) ...

  8. 配合es5.8的使用,升级sb版本到2.X,遇到一个问题

    问题:Failed to bind properties under 'spring.redis.jedis.pool.max-wait' to java.time.Duration: Propert ...

  9. 【Java】 内部类

    [Java]内部类 可以将一个类的定义放在另一个类的定义内部,这就是内部类. 使用内部类的的原因主要有三点: 内部类方法可以访问该类定义所在的作用域中的数据,包括私有的数据. 内部类可以对同一个包中的 ...

  10. 【题解】Hanoi双塔问题

    题目描述 给定A,B,C三根足够长的细柱,在A柱上放有2n个中间有空的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的(下图为n=3的情形).现要将这些圆盘移到C柱上, ...