Tony的口胡呼呼(。-ω-)zzz
三分
给定平面内 \(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\) 也是很好的选择)
当发现有 \(\%\) 的时候大大降低搜索次数
通常降低次数的方式是
- 减少调用量(整除才进入)
- 枚举因子
数学部分
exgcd
\]
当 $$b == 0$$ 时, 有 $$gcd(a, 0) = a$$
令 $$ax_{0} + by_{0} = gcd(a, b)$$
此时 $$a * 1 + 0 * 0 = gcd(a, 0) = a$$ 显然有
\]
现已递归求得 $$bx_{0} + (a % b)y_{0} = d$$
而$$(a%b) = a - \lfloor \frac{a}{b} \rfloor * b$$
构造成 $$ax + by = 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的更多相关文章
- Topcoder口胡记 SRM 562 Div 1 ~ SRM 599 Div 1
据说做TC题有助于提高知识水平? :) 传送门:https://284914869.github.io/AEoj/index.html 转载请注明链接:http://www.cnblogs.com/B ...
- 口胡FFT现场(没准就听懂了)&&FFT学习笔记
前言(不想听的可以跳到下面) OK.蒟蒻又来口胡了. 自从ZJOI2019上Day的数论课上的多项式听到懵逼了,所以我就下定决心要学好多项式.感觉自己以前学的多项式都是假的. 但是一直在咕咕,现在是中 ...
- BZOJ 口胡记录
最近实在是懒的不想打代码...好像口胡也算一种训练,那就口胡把. BZOJ 2243 染色(树链剖分) 首先树链剖分,然后记录下每个区间的左右端点颜色和当前区间的颜色段.再对每个节点维护一个tag标记 ...
- Atcoder/Topcoder 口胡记录
Atcoder/Topcoder 理论 AC Atcoder的❌游戏示范 兴致勃勃地打开一场 AGC 看 A 题,先 WA 一发,然后花了一年时间 Fix. 看 B 题,啥玩意?这能求? 睡觉觉. e ...
- NOIP2016考前做题(口胡)记录
NOIP以前可能会持续更新 写在前面 NOIP好像马上就要到了,感觉在校内训练里面经常被虐有一种要滚粗的感觉(雾.不管是普及组还是提高组,我都参加了好几年了,结果一个省一都没有,今年如果还没有的话感觉 ...
- 关于有向图走“无限次”后求概率/期望的口胡/【题解】HNCPC2019H 有向图
关于有向图走"无限次"后求概率/期望的口胡/[题解]HNCPC2019H 有向图 全是口胡 假了不管 讨论的都是图\(G=(V,E),|V|=n,|E|=m\)上的情况 " ...
- 「口胡题解」「CF965D」Single-use Stones
目录 题目 口胡题解 题目 有许多的青蛙要过河,可惜的是,青蛙根本跳不过河,他们最远只能跳 \(L\) 单位长度,而河宽 \(W\) 单位长度. 在河面上有一些石头,距离 \(i\) 远的地方有 \( ...
- PKUSC 2022 口胡题解
\(PKUSC\ 2022\)口胡题解 为了更好的在考试中拿分,我准备学习基础日麻知识(为什么每年都考麻将 啊啊啊) 首先\(STO\)吉老师\(ORZ,\)真的学到了好多 观察标签发现,这套题覆盖知 ...
- 「线性基」学习笔记and乱口胡总结
还以为是什么非常高大上的东西花了1h不到就学好了 线性基 线性基可以在\(O(nlogx)\)的时间内计算出\(n\)个数的最大异或和(不需要相邻). 上述中\(x\)表示的最大的数. 如何实现 定义 ...
随机推荐
- Linux内核分析作业八
进程的切换和系统的一般执行过程 贾瑗 原创作品转载请注明出处 <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029 ...
- github个人心得
github真难全是英语真费劲 以后要好好学习英语 https://github.com/huangjingyi/test
- VS2015 导航栏 查看每个cpp文件中类以及类成员函数的框框
这个可以查看每个cpp文件中类以及类成员函数的框框叫导航栏! 怎么打开导航栏可以再百度.
- jstack 使用一例
31jstack -m -F 2340 >libra.log 2>&1 jstack -m -F 2340 >libra2.log 2&>1 jstack -m ...
- Jquery 组 tbale表格滚动条
<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8&qu ...
- KNN python实践
本文实现了一个KNN算法,准备用作词频统计改进版本之中,这篇博文是从我另一个刚开的博客中copy过来的. KNN算法是一个简单的分类算法,它的动机特别简单:与一个样本点距离近的其他样本点绝大部分属于什 ...
- python模块_hashlib详解
hashlib 摘要算法简介 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长 ...
- 数字证书签发,授权等相关以及https建立通信过程
一直以来都对数字证书的签发,以及信任等事情一知半解.总算有个闲适的周末来总结和深入一下相关的知识. CA: CA(Certificate Authority)是证书的签发机构,它是负责管理和签发证书的 ...
- 如何使用grep 等命令快速的在日志中找到自己需要的内容
虽然使用linux也有好几年了,但是服务器端开发的活儿正经来算才干不到一年. 一直没有需求和机会会去花大量的时间排查日志啥的,直到我摊上了大事t t,写的代码在线上出了bug需要排查问题. grep可 ...
- 关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()
嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折 ...