
模板
Martin20150405
博客搬家啦,http://martin20150405.github.io
(邮箱Martin20150405@163.com)
展开
-
二维数组旋转模板
//二维数组旋转还是挺简单的,只是有些时候容易搞晕了,记录一下//n行m列的矩阵旋转变为m行n列的矩阵 //顺时针 for (int i=0;i<n;i++){ for(int j=0;j<m;j++){ tmp[j][n-i-1]=s[i][j]; } } //逆时针 for (int i=0;i<n;i++){ for原创 2016-07-12 21:46:07 · 807 阅读 · 0 评论 -
UESTC 1339 郭大侠与线上游戏 (STL插入删除/迭代器)
STL erase后指针变化对于用数组实现的数据结构(vector,deque),除一个元素后之后所有的迭代器都会失效对于关联型数据结构,删除后只会对当前节点有影响删除节点前应该先取得下一个节点或上一个节点的位置for( itList = List.begin(); itList != List.end(); ) { if(shouldDel( *itList)) i原创 2017-04-20 10:06:57 · 661 阅读 · 0 评论 -
[模版]欧拉函数及性质、素数筛法
定义对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) φ(n)=n*(1-1/p1)(1-1/p2)(1-1/p3)*(1-1/p4)…..(1-1/pm),p为n的因子 (见initEuler())欧拉函数的一些性质1.!! φ(1)=1 2.不完全积性函数:若m,n互质,φ(mn)=φ(m)φ(n) 3.对于互质的正整数a和n,有aφ(n) ≡ 1 mod n 4原创 2016-07-26 10:58:13 · 662 阅读 · 0 评论 -
HDU 5446 Unknown Treasure(lucas+中国剩余定理 / CRT)
Lucas + CRT 模版题 中间结果会爆long long Lucas: Cmnmodpk=akC_n^m \mod p_k=a_k CRT:Cmnmod(∏pk)=ansC_n^m \mod (\prod p_k)=ans#include <bits/stdc++.h>#define mem(a,b) memset(a,b,sizeof(a))#define rep(i,a,b原创 2017-02-09 10:27:55 · 580 阅读 · 0 评论 -
[模版] K/最近邻匹配(KD Tree)
nth_element相当于快排的split/choose pivot过程2D 最近#include <bits/stdc++.h>#define mem(a,b) memset(a,b,sizeof(a))const int INF=0x3f3f3f3f;const int maxn=1e5+50;typedef long long ll;using namespace std;int原创 2017-02-08 15:45:22 · 1037 阅读 · 0 评论 -
[TCL]前序中序、中序后序建树求层序
虽然这个问题很水,但是之前打的都特别烦,今天发现一个优雅的写法,记录一下#include <bits/stdc++.h>#define mem(a,b) memset(a,b,sizeof(a))using namespace std;const double PI=acos(-1);typedef long long ll;const int maxn=1e5+50;const int原创 2016-11-27 16:54:22 · 799 阅读 · 0 评论 -
HDU 5973Game of Taking Stones 51nod 1185 威佐夫游戏 V2(威佐夫博弈)
思路威佐夫博弈套公式即可 若b>a则,floor(1.618*(b-a))==a时先手必败 因为精度要求比较高,处理好精度就可以Java高精度+二分求根号+读入优化代码import java.io.*;import java.math.BigDecimal;import java.math.BigInteger;import java.util.Scanner;import java.u原创 2016-10-17 12:39:36 · 637 阅读 · 0 评论 -
【模版】二分查找、最长上升子序列(LIS)、最长下降子序列模版
二分:lower_bound()在first和last二分查找(前闭后开),返回第一个大于等于x的位置upper_bound()返回第一个大于x的位置区别:>=和>,即保持非降序的第一个可安插位置和最后一个可安插位置int lowerBound(int x){ int l=1,r=n; while(l<=r){ int mid=(l+r)>>原创 2016-07-17 10:30:44 · 1252 阅读 · 0 评论 -
[模版]尽整些歪门邪道
二进制相关ll s=12;//传入参数会转换为unsigned int(如果是long long在函数名后加 "ll")cout<<__builtin_ffs(s)<<endl; //右起第一个1的位置cout<<__builtin_clz(s)<<endl; //左侧0的个数cout<<__builtin_ctz(s)<<endl; //右侧0的个数cout<<__built原创 2016-08-12 17:02:09 · 508 阅读 · 0 评论 -
(POJ 3494)Largest Submatrix of All 1’s (DP、单调栈)
思路求最大子矩阵问题相当于对每一行求最大矩形问题问题,可以用单调栈处理。 因为子矩阵必有开始行和结束行,相当于枚举开始行,然后通过histogram的最大矩形问题保证到结束行为止都是1且最宽代码用自带的栈会超时(因为我用了结构体和scanf的关系)#include <iostream>#include <cstdio>#include <algorithm>#include <cstring原创 2016-08-10 20:35:09 · 959 阅读 · 0 评论 -
(HDU 5810)2016 Multi-University Training Contest 7 Elegant Construction (期望、方差、二项分布)
思路咦,这不是方差么, 要求样本方差的期望。。那不就是总体方差吗 可以发现把n个球放入m个里面,对于每一个球都是符合二项分布的(这里放或者不放)期望定义:D=∑mi=1Xi−X¯mD=\sum_{i=1}^m\frac{X_i-\bar X}{m} 期望与方差的关系:D=E(X2)−E(X)2D=E(X^2)-E(X)^2 二项分布的期望为:E=n×pE=n\times p,在题目中就是n÷原创 2016-08-09 22:57:38 · 574 阅读 · 0 评论 -
[模板]扩展KMP模板
#include <bits/stdc++.h>using namespace std;#define mem(a,b) memset(a,b,sizeof(a))//b:source a:template//nxt:a与自己每个后缀的最长公共前缀 //ret:a与b的每个后缀的最长公共前缀 //如果ret[i]==len(a) 则a是b的子串 void extKMP(char*b,c原创 2016-08-08 16:29:45 · 419 阅读 · 0 评论 -
[模板] Lucas 逆元 快速幂模板
一般情况下,当Mod较小,组合数较大时用Lucas求组合数,当Mod较大组合数较小时用逆元求组合数/*逆元定义:x为a的乘法逆元,(b/a) (mod Mod) = (b * x) (mod Mod) x表示a的逆元。并且 a*x ≡ 1 (mod Mod ) 注意:只有当a与Mod互质的时候才存在逆元以下两种写法都必须要求MOD为素数*/typedef long long ll;原创 2016-08-06 20:25:50 · 620 阅读 · 0 评论 -
(HDU 5733)2016 Multi-University Training Contest 1 tetrahedron(几何)
题意:给定四个顶点,求四面体的内心坐标和内切圆半径思路:完全不知道怎么做,但是我们有维基百科~~~体积:如果建立恰当的坐标系统,使得原点与d顶点重合,即d=0的话,该式可以简化为:内切圆半径:外接圆半径(这次没用到,先贴一下):原创 2016-07-20 13:49:52 · 1203 阅读 · 0 评论 -
[博弈]SG函数的求法和一些结论 NIM博弈
后继:按照游戏规则能够达到的下一个状态SG函数性质:1.对于组合游戏(n个不相关的游戏并行,例如3堆石子进行取石子游戏),结果的SG值为各个分量的SG异或值2.y是x的后继,若SG(x)=0,则任意SG(y)!=0,若SG(x)!=0,则存在SG(y)=0(即先手若碰到SG!=0的情况,只要让后手面对的状态SG=0即可)3.当且仅当SG(x)=0时,局面x是必败态原创 2016-07-19 20:45:57 · 990 阅读 · 0 评论 -
[模版]Java 文件读入(字符流) GZip压缩、解压缩String
读文件为字符串也可以采用 BufferedReader br= new BufferedReader( new InputStreamReader( new FileInputStream( new File(""))));import java.i原创 2016-07-28 21:22:18 · 2082 阅读 · 0 评论 -
[模版] unique函数,vector合并,数组、vector快速输出(cout)
//数组去重 int arr[]={1,4,2,2,3,3}; sort(arr,arr+6); //unique返回int指针 int newSize=unique(arr,arr+6)-arr; //将va vb合并到vc中 vector vc=vb; vc.insert(vc.end(),va.begin(),va.end());原创 2016-07-17 11:28:02 · 909 阅读 · 0 评论 -
HDU 3966 Aragorn's Story(树链剖分)
好久没有打线段树了。。题意更新树上的一段路径,查询某个点/路径的权值思路树链剖分模版题,树链剖分将一棵树转化成多条重链,将树的问题变成区间问题 如图,加粗的是重链,打红点的是链的根节点代码#include <bits/stdc++.h>#define mem(a,b) memset(a,b,sizeof(a))#define rep(i,a,b) for(int i=a;i<b;i++)c原创 2017-04-20 19:07:10 · 646 阅读 · 0 评论