
技巧
Zeolim
这个作者很懒,什么都没留下…
展开
-
[思维]挖矿
这个挖矿游戏会给出一个n*m个格子的地图,每个格子都有黄金。在游戏开始时小明会随机出现在地图的某一个格子当中。小明可以将他所在的格子的黄金收归囊中,并且还可以向下或者向右移动,然后继续收集黄金。地图上某些格子是障碍物,小明不能移动到有障碍物的格子上。不过,在游戏开始时,小明可以随意地在地图上放置传送门。传送门可以传送到地图上某一个确定的格子,传送门放置的位置和该传送门传送的位置在游戏开始之前必须...原创 2019-10-21 16:07:13 · 354 阅读 · 0 评论 -
[模板]BM求线性递推式
要求第n项时,直接linear_seq::(gao,n)即可,不放第0项的话,就是linear_seq::(gao,n-1)#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll mod=1e9+7;const int N=1024; ll modpow(ll a...原创 2019-10-07 22:31:14 · 229 阅读 · 0 评论 -
[树状数组] Galahad
题意:求给定区间内不同数的和经典例题https://vjudge.net/problem/HDU-3333解题思路:这两天有点傻,emmm离线操作扫一遍数组对于重复的值树状数组维护最靠近当前坐标的那一个,等同于把之前重复的元素删掉。这样再对询问进行前缀和计算则只能计算到最靠近当前点的每个只出现一次的元素不在区间的自然查询不到,树状数组快速求前缀和记录答案输出即可...原创 2019-09-15 17:40:46 · 224 阅读 · 0 评论 -
[技巧]ARubbish
套树会爆内存,sort PAIR 离散后暴搜染色/* Zeolim - An AC a day keeps the bug away*///#pragma GCC optimize(2)#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef long double ld;#...原创 2019-06-09 19:21:02 · 255 阅读 · 0 评论 -
[组合数]lucas定理 排列组合取模
lucas: 计算 C 时 当 n, m范围大 mod范围小时可以将 n m 缩减至 mod 范围内计算预处理: 当 n m 范围小 mod 范围大时可以预处理阶乘逆元 O(1)计算const int FN = 1e5 + 10;const int MOD = 1e9 + 7;ll fac[FN] = {1, 1}, inv[FN] = {1,1}, f[FN] = {1,1};...原创 2019-05-05 10:50:23 · 690 阅读 · 0 评论 -
[hash] 哈希的简单入门
算法竞赛中的哈希是往往是种种概率/玄学但是又贼鸡儿快方便的神奇算法本质是通过对目标数据建立唯一映射进行缩小数据规模的权值判断, 常常可以乱搞一些题目对循环数组的hashhttps://www.acwing.com/problem/content/139/解题思路: 对每个六元组求最小表示, 然后用乘积与和对应的双hash映射入一个链表 再判断即可字符串哈希http...原创 2019-05-05 10:48:56 · 294 阅读 · 0 评论 -
[思维]奇数码问题
奇数码问题给定奇数版, 和两种状态A B问能否有解使板A 变为板 B例:1 2 30 4 67 5 81 2 34 5 67 8 0解: 将板A, B化为一维向量,转化为逆序对问题首先去掉位0有 1.空格的左右移动不影响整个串的顺序2.空格的上下移动必有等价与 swap(s[i], s[i - n - 1]) / swap(s[i], s[i...原创 2019-04-07 09:18:58 · 377 阅读 · 0 评论 -
[模板]三分搜索
三分思想是二分的一个简单延展二分区间要求是简单线性变换而对于二次函数等单 峰 / 谷 函数无法获得正确的逼近趋向而三分搜索可以解决这样的问题设左右两三分点 X, Y若F(X) > F(Y) 则有 X = A&&Y = B 或 X = A &&Y = C; 则必定有峰在X 右侧同理 则必定...原创 2019-03-13 19:05:39 · 216 阅读 · 0 评论 -
[杂谈]关于GCC128位大整数的使用
GCC官方提供了int128 (有符号128位整数)uint128 (无符号128位整数)两种变量类型, 但是windows环境下大多编译器无法编译OnlineJudge 主要是linux环境 所以平时用ubuntu / linux环境的在线编译器 刷题还是比较贴近竞赛环境的GCC库自带 IO 没有提供对 int128环境的支持 所以需要自己编译读入读出模板:void...原创 2019-03-11 10:08:22 · 2660 阅读 · 2 评论 -
[思维]蚂蚁感冒
蚂蚁的问题都有相似性从相遇等同于擦肩而过开始推导如果第一只蚂蚁是正值那么他后面所有负值蚂蚁都会和他碰面(如果有的话) 那么这些蚂蚁肯定会和他背后所有和正值的蚂蚁碰面同理 负值也如此#include <bits/stdc++.h>using namespace std;const int MAXN = 1e5 + 10;int arr[MAXN] = ...原创 2019-03-14 21:29:45 · 190 阅读 · 0 评论 -
[模板] 常用数论 -> gcd、exgcd、乘法逆元、快速幂、快速乘、筛素数、快速求逆元、组合数
1.gcdll gcd(ll a, ll b){ return b ? gcd(b, a % b) : a;} 2.扩展gcd )extend great common divisor ll exgcd(ll l, ll r, ll &x, ll &y){ if(r == 0) { x = 1, y = 0; ...原创 2018-11-02 11:39:35 · 215 阅读 · 0 评论 -
[模板] 快速乘 O(1)乘法 解决模运算下整数乘法64位变量溢出问题
快速乘原理同快速幂不做赘述ll qmul(ll a, ll b, ll mod) //快速乘{ ll ans = 0; while(b) { if(b & 1) ans = (ans + a) % mod; a = (a + a) % mod; b >>= 1; ...原创 2019-03-10 10:37:17 · 405 阅读 · 0 评论 -
[同余][前缀和]K倍区间
若一段连续子序列[l, r]和为k的倍数则必定有 sum[r] - sum[l - 1] % k == 0由同余定理sum[r] % k == sum[l - 1] % k由输入数据顺序则必定有已输入数据均在当前数据之前则可用brr数组记录当前数之前的所有模数 得解typedef long long ll;const int MAXN = 1e6 + 10;ll...原创 2019-03-06 15:40:12 · 323 阅读 · 0 评论 -
[51nod] 1024 矩阵中不重复的元素
这个最暴力的想法就是暴力模拟算出详细值加set去重时间复杂度空间复杂度过大。所以需要对值进行映射,再用set去重映射方式很多,比较方便的是取对数logn(a ^ b) = b * logn(a)n可以取e->log()10->log10()2->log2()因为取了对数肯定会有误差所以需要重载一下EPS或者log2的精度比较高 可以...原创 2018-11-26 16:24:54 · 249 阅读 · 0 评论 -
[差分] [POJ] 3276 Face The Right Way
数组开太大memset超时好几发N方枚举+前缀标记一顿操作/* Zeolim - An AC a day keeps the bug away*///pragma GCC optimize(2)#include <cstdio>#include <iostream>#include <cstdlib>#include ...原创 2018-11-16 12:46:30 · 206 阅读 · 0 评论