- 博客(36)
- 收藏
- 关注

原创 【模板】数据结构 - 线段树
注意在C++中,加减运算比移位运算优先级高,移位运算比按位运算优先级高。封装版:const int MAXM=200000; //MAXM 为线段最大长度int a[MAXM+5],st[(MAXM<<2)+5]; //a数组为原数组st数组为四倍大小...
2018-08-24 10:47:59
273
1
原创 Codeforces 183B - Zoo 暴力、计算几何
连续出了3个锅:nm不分、访问内存前不检查地址偏移、分类不当。#include<bits/stdc++.h>using namespace std;#define ll long longint maxans[1000005];ll x[255];ll y[255];int main(){ int n,m; scanf("%d%d",&n...
2019-01-12 02:23:44
332
原创 凸包
https://blog.youkuaiyun.com/g21glf/article/details/80976917https://blog.youkuaiyun.com/u014688145/article/details/72200018分治和graham都是很优秀的nlognhttps://blog.youkuaiyun.com/yangkunpengD/article/details/51336453...
2018-12-06 01:06:12
201
转载 数据离散化
https://blog.youkuaiyun.com/weixin_43061009/article/details/82083983离散化线段树https://blog.youkuaiyun.com/nudt_spy/article/details/82682344
2018-12-06 00:33:32
202
原创 pb_ds数据结构
https://ksmeow.moe/wp-content/uploads/2017/07/C%E7%9A%84pb_ds%E5%BA%93%E5%9C%A8OI%E4%B8%AD%E7%9A%84%E5%BA%94%E7%94%A8-1.pdf大致看出来:优先队列添加了“插入元素”、“删除元素”、“合并”的操作平衡树添加了“合并”、“分裂”、“返回第k大”和“查询比x大的有几个”...
2018-12-04 23:39:04
389
原创 【模板】数据结构 - Treap
一种插入、删除、查询x是第k大、查询第k大是几的期望复杂度都是对数的数据结构。特点:代码简单(Splay性能均衡功能巨多就是太复杂了),好像还有可持久化版本普通的平衡树在特殊数据可能退化成链(被递增递减数据卡),Splay也是。但是Treap的平衡是期望平衡的,不受数据卡,而且常数比较小。当然据说Splay支持更多操作比如一些线段树的工作(所以Splay只做某些特定操作会慢?)。只是S...
2018-12-04 23:11:29
170
原创 【kuangbin带我飞】专题七 线段树
由于我不会线段树,先弄一份模板。基本线段树模板(建树、点/区间修改、查询)基础线段树(闭区间)(单点修改、单点查询):const int MAXM=50000; //定义 MAXM 为线段最大长度int a[MAXM+5],st[(MAXM<<2)+5]; // a 数组为 main 函数中读入的内容,st 数组为需要查询的数的信息(如和、最值...
2018-12-03 23:32:14
218
原创 Codeforces Round #521 (Div. 3)
A 略。B 似乎只需要在一个方向贪心就好了,和书上说的一样,证明几种方法中,其中一种不比别的差,就是贪心了。所以必须要关一盏灯的话,因为贪心方向是向右的,所以关右边不会比关左边更差。C 下标访问数组的时候一定要注意越界的问题,或者用map的count方法适用性更广?其实这题只需要分去掉那个数是最大的(判断第二大数是不是一半)或者不是(判断最大数是不是一半)就行了。D 从一个数组里面...
2018-11-17 23:13:11
205
原创 搜索总结
简单搜索bfs1.要定义结构体数组,包含结点的位置,方便用队列管理,可以不包含时间(用vis数组记录时间)2.vis数组-1表示不可拓展,inf表示未入队,其他非负数表示已访问(暂时不需要区别是否出队);结点入队的同时修改vis数组为t3.用inline enqueue管理判断越界、不可拓展、已访问不用写到头秃4.从enqueue找到一个解后立刻退出可以减少大量叶子节点注1...
2018-11-07 23:30:11
177
原创 【kuangbin带我飞】专题二 搜索进阶
A - Eight 看起来好像在bzoj见过的?状压爆搜?一般好像爆搜都是用bfs的,有没有什么是使用进阶的搜索方法呢?H - Gap bfs+hash应该想到bfs的,毕竟每一步都只有4种选法,最多24步?4^24肯定是太大了的,怎么就可以保证bfs可以得到结果呢?还是说要充分理解搜索的上界是一个很松的上界?用hash判重我倒是可以理解。hash的博客:https://www.c...
2018-11-04 23:35:16
309
原创 【kuangbin带我飞】专题一 简单搜索
A-棋盘问题 dfs1.dfs进入时打上标记,退出时清除,不需要额外的状态记录2.可行性剪枝,减小常数3.用r[i],c[j]表示行和列的占用情况,减小常数#include<bits/stdc++.h>using namespace std;int n,k;char g[10][10];int r[10],c[10];int top,ans;pair&...
2018-11-04 16:24:01
373
原创 【BZOJ1088】扫雷Mine dfs
据说可以从头两格确定状态,但是我没有多想,直接就上了dfs/*1.在一头一尾加入空格?不行,还是要特判,或者加0或1?2.据说确定前两格检验就行了,不过我还是深搜?3.默认不需要取模吗?废话深搜(暴力)假如要取模早就T了,先试一下暴力深搜对不对4.用x1、x2、x3表示格子附近的第二行的状态*/#include<bits/stdc++.h>using namesp...
2018-11-04 10:46:31
208
原创 【总结】初等数论总结
https://blog.youkuaiyun.com/CYCKCN/article/details/68165147费马平方和定理:奇质数能表示为两个完全平方数之和,当且仅当它是4k+1型。换句话说能表示为两个完全平方数之和的数的4k+3因子必定有偶数次。https://blog.youkuaiyun.com/bigbigship/article/details/272343251.线性求逆元证明在http...
2018-11-03 23:36:10
742
原创 【BZOJ1041】圆上的整点 数论
也是完全不会做,靠百度搜索出来的鬼东西。太数学了以至于自己需要想的地方不多。既然要求圆上的整点,我们联想一下直线上的整点,是跟起点终点的gcd有关的?(事后诸葛亮) 已知圆中心对称,不妨设x>0,y>0求出第一象限点,最后加上坐标轴上的就好。问题变成求x^2+y^2=r^2的整数解。接下来又到了抄抄抄的时间。改写为y^2=r^2-x^2=(r+x)(r-x) 令d=gcd...
2018-11-03 23:19:11
398
原创 【BZOJ1026】windy数 数位dp
做的第一道数位dp的题目,看出来明显的数位dp特征但是不会做。还是约定一个解题步骤,以设计思路、数据结构、算法分析、细节、备注的顺序解决。设计思路就是看出数位dp之后百度一下?至少知道怎么设置状态之后后面的细节才自己想。数据结构:dp[i][j]表示数字位数为i位,最高位为j的合法数字的数量。 可以用pre[a]表示[0,a]的合法数字的总和,前缀和统计数量。算法分析:要转移到dp...
2018-11-03 09:41:00
232
原创 HDU 2102 判断最小的环的数量,可用并查集,这里是dfs写法
忘记考虑重边,要改成while跑到余量为0才走。#include<bits/stdc++.h>using namespace std;#define ll long longint vis[10000+5];int g[1000+5][1000+5];int res=0;int n,m;void dfs(int id){ /*printf("id=%d...
2018-11-02 00:37:52
308
原创 HDU 2102 A计划
/*1.尝试使用刷表法解决,bfs会不会更快呢?2.原来传送到对应位置是指真的对应位置而不是什么隔壁的传送门,是题目的歧义3.scanf读空行好像没有问题的样子4.相对位置是传送门对面Exo me?不对,好像是因为可以无限传送所以错了,去掉flashin再试一次5.dfs版本是不是可以剪枝?6.第2的改了居然没有修改坐标偏移*/#include<bits/stdc++.h&...
2018-11-01 00:54:04
214
原创 HDU 1007 Quoit Design(分治)
#include<bits/stdc++.h>using namespace std;double mindis2;struct cor { double x, y; bool operator<(const cor &that) { return x < that.x ? 1 : (x == that.x ? y < that.y : 0...
2018-08-30 22:36:38
122
原创 【模板】数据结构 - 并查集
代码://4.2 并查集struct DisjointSet { vector<int>father, rank; DisjointSet(int n) :father(n + 1), rank(n + 1) { for (int i = 1; i <= n; ++i) { father[i] = i; } } int find(int v) {...
2018-08-24 05:38:57
155
原创 Codeforces 1027 D. Mouse Hunt(并查集、dfs)
#include<bits/stdc++.h>using namespace std;#define sc(d) scanf("%d",&d)#define ll long longint c[200005];int g[200005];int n;struct DisjointSet { vector<int>father, rank;...
2018-08-19 06:20:58
698
原创 Codeforces 1016E. Rest In The Shades (二分查找、简单几何)
原题链接:http://codeforces.com/contest/1016/problem/E 题意简述:平面上有一个点光源,它以每秒1单位长度的速度从点 移动到点 。 轴正方向上有 个 不相交不接触的栅栏,它们可以表示为 。当点 与点光源的连线与某个栅栏相交或接触时,称点在阴影内。给定 个点,求出每个点在点光源从点 移动到点 时,处在阴影内的总时间 。...
2018-08-05 05:08:09
605
原创 Codeforces 7C. Line (裴蜀定理、扩展欧几里德)
题意是很简单的,找直线穿过的整点存在与否,存在则输出其中任意一个解,否则输出 -1 ,注意数据范围即可。需要用到以下两个简单的数论知识。 裴蜀定理方程: 中, 均是整数,则方程有整数解 的充要条件是 , 也是整数。扩展欧几里德算法考虑方程: 。不妨设 ,当 时, ,令 即可。当 时,由朴素欧几里德算法有 ll exgcd(ll a, ll b, l...
2018-08-03 16:30:58
251
原创 Codeforces 7
A. Kalevitch and Chess虽然想到了每次要涂完一整行才能计数,结果还是被算计了,有一种情况是全黑的。#include<bits/stdc++.h>using namespace std;char g[10][10];int paintR(int i){ for(int j=0;j<8;j++){ if(g[i][j]=...
2018-08-03 14:31:22
166
原创 Codeforces 3B. Lorry
大神说考虑到数据范围不能使用背包求解,但是由于物品的大小只有两种就很好办。一种方法是枚举大小为2的船一共占的大小,剩下的空间尽可能填1。另一种方法是先全部填1,然后每次拿最小的两个出来检测,要是他们的和比最大的2小,那么替换即可。 居然 sort 反向了,交了一个WA。#include <bits/stdc++.h>using namespace std;#d...
2018-08-02 04:48:46
212
原创 Codeforces 2С. Commentator problem (模拟退火、简单几何)
这个问题的正确解法实在是太复杂了,完全不知道怎么做,上网搜了巨神的答案才发现有个叫做“模拟退火”算法的东西,大概就是先假设一个初始值,算出他和题意的误差(方差),然后逐步逼近。假如一次移动让误差变小,则直接继续,否则让移动的幅度变小。也就是先确定大致的范围再逐步缩小范围求解。和标准的模拟退火不同,这里只有一个最优解,就不需要概率跳出。 #include<bits/stdc++....
2018-08-02 03:27:00
3400
原创 Codeforces 2B. The least round way
原来弄的一发AC原来是假的AC啊,这份代码里面加了一些修正。特例就在于0的处理,处理不好还会死循环。思路:要是矩阵中有0,则去找一条ans=0的路径,否则经过此0即可。否则找最短路径。 用一个巧妙的方法可以不用特判,用10代替0,则经过0的正常算法得到的结果至少为ans=1,不会引起以下错误:30 0 00 0 00 0 0 #include <io...
2018-08-02 03:05:09
274
原创 Codeforces 2A. Winner
一条以前写过的题居然还WA了好几次。先是没认真读题目,把 at least m 忽略掉了。题解居然是直接模拟三次就好了,反正都是 O(n) 的算法,实际上是一样的。#include<bits/stdc++.h>using namespace std;#define ll long longint n;map<string, map<ll, int >&...
2018-08-02 01:47:29
224
原创 Codeforces 1C. Ancient Berland Circus
前前后后卡了好多次的计算几何,涉及到很多几何题的坑。需要注意的点基本都在下面的注释里。用到了很多高中要用的几何公式,还牵扯到浮点数的最大公因数问题,总而言之是非常坑爹了。注意很多非递归的函数可以直接写成 inline 省去很多时间。#include<bits/stdc++.h>using namespace std;#define ll long long#def...
2018-08-01 17:49:46
236
原创 Codeforces 1B. Spreadsheets
就是熟悉一下分类讨论和string转int,唯一的难度在于关于 'Z' 的讨论,发现其实进制还是26进制,不过这里没有0反而有26,那就每次 C%26==0 时手动分离一个 'Z' 出来就好了。注意一下行和列别搞反,cin.tie(0) 对cout的影响(未解决),substr方法的两个参数分别是begin和length即可。#include<bits/stdc++.h>u...
2018-08-01 16:01:56
313
原创 Codeforces 1A. Theatre Square
一个n*m的广场,用a*a的方块铺满,求至少多少方块,可以多铺,边要平行。(1 ≤ n, m, a ≤ 10^9) 取上整乘积即可,注意是否要使用long long 。#include<bits/stdc++.h>using namespace std;#define ll long longint n,m,a;int solution(){ c...
2018-08-01 15:13:31
265
原创 SCUT_ACM-ICPC_Day001
2018/4/6http://www.cnblogs.com/clrs97/p/8020452.html今天的启发:map不会真是不行。明明会抄凸包,却不会抄旋转卡壳。
2018-04-06 00:25:53
215
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人