- 博客(20)
- 收藏
- 关注
原创 FFT快速傅里叶
传送门 表示只会抄板子,看了个半懂。。 我因为重载运算符出了点儿问题,调了好久好久…… 贴代码:#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#include<cstdlib>using namespace std;inline int read(){
2017-12-26 09:19:40 234
原创 扩展CRT&&扩展lucas
直接上板子,这里没有证明,只是提供一个还不错的板子 扩展CRT:#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#include<cstdlib>#define ll long longusing namespace std;inline int read(){
2017-12-22 21:54:42 538
原创 可持久化并查集
传送门1 传送门2 写法和主席树相似,具体我觉得自己YY就可以想出来的 就是用可持久化线段树来修改就好了,还有加上路径压缩和启发式合并 然后也不多说,上代码:(1A,强制在线版)#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#include<cstdlib>
2017-12-21 15:56:27 191
原创 指针Splay
传送门 今天突发奇想写了个指针Splay,居然还很神奇地调过了 其实就是按着原来的板子写,然后改成指针罢了 注意要用null代替NULL,不然很有可能RE 具体写法可以看我的代码(虽然是自己YY的,可是还是可以看的吧)#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm
2017-12-21 11:21:03 672
原创 二维树状数组
题目看这里:http://blog.csdn.net/stone41123/article/details/78848061 然后发一张图,对比一下二维树状数组和四分树:(第一个是二维树状数组) 差的真不是一点半点,差距太大了 首先二维树状数组的写法:inline void update(int x,int y){ int tmp=y; while(x<=n){
2017-12-20 15:25:57 221
原创 四分树
1013: 【模板】四分树(二维线段树 / 二维树状数组)时间限制: 4 Sec 内存限制: 512 MB 提交: 4 解决: 2 [提交][状态][讨论版][命题人:stone41123][Edit] [TestData] 题目描述给定一个n*m的矩阵,有q个操作,分为两种,分别为update和sum 对于每一个update,给出(x1,y1)为左上角坐标,(x2,y2)为右下角坐标,
2017-12-19 22:17:33 1499
原创 [NOI2010]:海拔
传送门 想了想就发现其实就是求一个最小割,然后dinic直接上,只有90分 好像正解是对偶图SPFA最短路,以后再来补吧。。 代码:(dinic)#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#include<cstdlib>#define R registe
2017-12-17 08:30:29 274
原创 [NOI2010]:成长快乐
传送门 目前30 at 12.14 话说洛谷此题样例错了,而且第二个点是第十个点。。。 首先第一个点可以手算,10分 第二个点爆搜:#include<cstdio>#include<cstdlib>#include<algorithm>#include<cstring>#include<cmath>#define ll long long#define min(a,b) a
2017-12-14 13:26:56 1542
原创 [NOI2010]:超级钢琴
传送门 这个题有趣。。。 巧妙地利用st表和堆 首先最暴力的我就不说了 第二个暴力就是主席树+堆,预计得分70~80,时间O(klog2n)O(klog^2n) std是用堆存储可能的区间,然后用st表查询区间最小值 因为其实如果知道区间右端点,再处理个前缀和s 那么就只要查询区间最小值就可以了,可以st表O(1)做 代码:#include<cstdio>#include<cstd
2017-12-13 21:51:16 279
原创 [NOI2010]:能量采集
传送门 首先,80分暴力很明显,直接枚举然后算gcd就好了 然后其实100分也很简单(要不然怎么可能给80分暴力) 枚举gcd,然后算有多少个gcd(i,j)=d就好了,这里需要减去之前重复的,可以看我的代码。 代码:#include<cstdio>#include<cstdlib>#include<cmath>#include<cstring>#include<algorithm>
2017-12-13 21:46:33 203
原创 [poj1556]:The Doors
传送门 计算几何基础题——第四题 就是暴力连边最短路,判是否可以连边的时候用叉积判一下就好了。 具体可以看我的代码:#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#include<cstdlib>#define ll long longusing names
2017-12-13 11:05:53 227
原创 [poj1269]:Intersecting Lines
传送门 计算几何基础题——第三题 这个题就是直线判重合,直线判平行,直线求交 以下假设Line1(P1,P2),Line2(P3,P4) 判重合: 我们只需要判断Cross(P1-P3,P2-P3)和Cross(P1-P4,P2-P4)都为0 也就是P1,P2,P3共线且P1,P2,P4共线 判平行: 只要Cross(P1-P2,P3-P4)为0就好了 也就是平移到同一点,然后判共
2017-12-12 11:58:42 201
原创 [poj3304]:Segments
传送门 计算几何基础题——第二题 枚举直线上两点(用已知线段端点枚举) 可转化成直线与线段的相交问题 然后就可以做了。。 只要判断线段两个端点是否在直线同侧就好了 可以用叉积做 代码:#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#include<cst
2017-12-12 10:57:17 152
原创 [poj2318]:TOYS
传送门 计算几何基础题——第一题这个题需要用到的有: 1.向量 2.向量基本运算(加减法) 3.向量叉积 (https://wenku.baidu.com/view/6d53cdcd58f5f61fb73666c6.html) (http://blog.csdn.net/hc14519/article/details/50716299) (第一篇是ppt,必须看,讲的非常基础) (
2017-12-11 19:56:35 241
原创 基数排序
原理就是以65336为底,分别做两次计数排序 代码:#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#include<cstdlib>#define ll long long#define R registerusing namespace std;inlin
2017-12-07 14:01:07 137
原创 后缀数组SA
传送门 板子题不多说。。。 代码:#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#include<cstdlib>#define ll long longusing namespace std;const int N=2e6+5;char s[N];in
2017-12-07 11:43:24 194
原创 [51Nod 1326]:遥远的旅途
传送门 这个题的思路就是个dp,不过是在模意义下的dp 我们来设计一个dp[i][j],代表在i这个点,当前路径长度%mod==j,的最小路径长度 我们枚举终点周围的每一条边x,然后mod=2*x,跑spfa,看dp[n][T%mod]是否被访问过 关于证明可以采用反证法。 这个题细节挺多的 代码:#include<cstdio>#include<cstring>#include<i
2017-12-06 15:04:46 260
原创 [luogu2742]:[USACO5.1]圈奶牛Fencing the Cows
传送门 突然心血来潮开始搞计算几何。。 首先肯定是凸包。。 直接贴代码吧。。。 代码:#include<cstdio>#include<cstring>#include<iostream>#include<cmath>#include<algorithm>#include<cstdlib>#define ll long longusing namespace std;inli
2017-12-04 14:52:09 251
原创 [bzoj1019]:[SHOI2008]汉诺塔
传送门 我只能说,乍一看题解好简单,结果看了一个多小时。。 就是f[x][i]代表从x到g[x][i]的最小步数 然后dp 具体的我不会讲 可以看这个,这个有图: http://blog.163.com/suicidal_tomato/blog/static/2344980402014918104434888/ 代码:#include<cstdio>#include<cstring>
2017-12-03 17:15:34 320
原创 [bzoj1018]:[SHOI2008]堵塞的交通traffic
传送门 我自从月考完了,就在调这个题。。 首先,先看一下官方题解。 算法:线段树 先贴一个连接:https://www.luogu.org/problemnew/show/U16516 这个是分测试点,可以看自己对了多少分。 然后开始算法解释。 一部分一部分来。这里是data的声明,初始化(很重要),还有输出调试。 data里的l,r代表所管理的区间 数组a代表存储的联通信息 具
2017-12-03 14:28:47 400
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人