本博客tag
我的Tag列表
CF(93) | 单调栈(3) | KMP循环节(1) | HASH(1) |
TOJ(48) | codeM(3) | loj(1) | dfs序(1) |
Wannafly Union(23) | csa(3) | miller_rabin(1) | 网络流(1) |
AtCoder(17) | 姿势(3) | operator(1) | 网络赛(1) |
日常训练(17) | 容斥定理(3) | pollard_rho(1) | 物理?(1) |
随手练(9) | 科技(3) | python入门中(1) | 贪心(1) |
网赛(7) | 期望(3) | SA(1) | 天梯赛训练(1) |
树状数组(7) | 字符串匹配(2) | SPFA(1) | 图论(1) |
他校校赛(6) | 最短路(2) | ST(1) | 浙南(1) |
hiho(6) | 台州学院we are without brain 训练(2) | 补题(1) | 总决赛(1) |
51nod(5) | 位运算(2) | 概率dp(1) | 经验之谈(1) |
浙南联合训练赛(5) | 图论及其应用(2) | 比赛经验(1) | 矩阵快速幂(1) |
线段树(5) | dp(2) | ZOJ Monthly(1) | 神奇的bfs(1) |
学习?学个屁(5) | EOJ(2) | 2018ZJU校赛(1) | 数位dp(1) |
计算几何(5) | 985月赛(2) | Bestcoder(1) | 面积并(1) |
数论(4) | 2017CCPC网赛(2) | CCPC(1) | 模板题(1) |
概率论(4) | 2017icpc北京(2) | Farey sequences(1) | 逆序对(1) |
好题推荐(4) | 2018TZC训练(2) | fft(1) | 后缀数组(1) |
玲珑杯acm(4) | 多校(2) | Github(1) | 高斯消元(1) |
组合数学(4) | 博弈(2) | hackerrank(1) | 各种姿势(1) |
百度之星(4) | KMP(2) |
FFT入门
线段树入门
数位dp入门
在n+m位二进制数中填入m个1的方案数为c(n+m,m),不填1的其余n位自动填0。再减去不符合要求的C(n+m,m-1)n次入栈m次出栈的合法排列次数则可参考卡特兰数公式。C(n+m,m)-C(n+m,m-1)
闲了滚去入门Python
tls题目集
叉姐的FFT讲义
字符串算法选讲
斐波那契循环节,数学
令人叹服的数学”巧合“
正n边形面积 n*a*a/(4*tan(PI/n))
2017多校5 01代码 bitset的使用
版权属于fls
无脑背包
void ZeroOnePack(int cost,int weight) { for (int i = v; i >= cost; i--) dp[i] = max(dp[i],dp[i - cost] + weight); } void CompletePack(int cost,int weight) { for (int i = cost; i <= v; i++) dp[i] = max(dp[i],dp[i - cost] + weight); } void MultiplePack(int cost,int weight,int n) { if (cost * n > v) { CompletePack(cost,weight); } else { int k = 1; while (k < n) { ZeroOnePack(cost * k,weight * k); n -= k; k *= 2; } ZeroOnePack(cost * n,weight * n); } }
矩阵模板
#includeusing namespace std; typedef long long ll; const int N=105; int G; struct MX { ll v[N][N]; void O() { memset(v,0,sizeof v); } void E() { memset(v,0,sizeof v); for(int i=0; i 1; } void P() { for(int i=0; i ) for(int j=0; j 1?"%d\n":"%d ",v[i][j]); } MX operator+(const MX &b) const { MX c; c.O(); for(int i=0; i ) for(int j=0; j b.v[i][j]; return c; } MX operator*(const MX &b)const { MX c; c.O(); for(int k=0; k ) for(int i=0; i ) if(v[i][k])for(int j=0; j b.v[k][j]; return c; } MX operator^(int p)const { MX y,x; y.E(),memcpy(x.v,v,sizeof(v)); for(; p; x=x*x,p>>=1)if(p&1)y=y*x; return y; } } a,ans;
马拉车
char a[110010]; char b[230000]="$"; int p[230000]; int len; int main(){ while(scanf("%s",a)!=EOF){ for(int i=0;i==0 || a[i-1]!='\0';i++){ b[i*2+1]='#'; b[len=(i*2+2)]=a[i]; } int mx=0,id=0,res=1; for(int i=1;i){ p[i]=mx>i?min(p[2*id-i],mx-i):1; while(b[i+p[i]]==b[i-p[i]])++p[i]; if(i+p[i]>mx)mx=i+p[i],id=i; if(p[i]>res)res=p[i]-1; } printf("%d\n",res); } return 0; }
快速乘O(1)
inline long long multi(long long x,long long y,long long mod) { long long tmp=(x*y-(long long)((long double)x/mod*y+1.0e-8)*mod); return tmp<0 ? tmp+mod : tmp; }
fastIO
namespace fastIO { #define BUF_SIZE 100000 bool IOerror=0; inline char nc() { static char buf[BUF_SIZE],*p1=buf+BUF_SIZE,*pend=buf+BUF_SIZE; if(p1==pend) { p1=buf,pend=buf+fread(buf,1,BUF_SIZE,stdin); if(pend==p1) { IOerror=1; return-1; } } return *p1++; } inline bool blank(charch) { return ch==''||ch=='\n'||ch=='\r'||ch=='\t'; } inline void read(int&x) { charch; while(blank(ch=nc())); if(IOerror)return; for(x=ch-'0'; (ch=nc())>='0'&&ch<='9'; x=x*10+ch-'0'); } #undef BUF_SIZE }; using namespace fastIO;
具体数学中文版目录
黑书上的DP例题
天梯赛经验
TOJ贪心用栈实现经典
TOJ 题目分类
NB的在线编程
必应在线翻译
曾经的个人水博
/* 二分图匹配 * 匈牙利算法邻接表形式 * 使用前用init()进行初始化,给uN赋值 * 加边使用函数addedge(u,v) */ const int MAXN = 50100;//点数的最大值 const int MAXM = 500100;//边数的最大值 struct Edge { int to,next; }edge[MAXM]; int head[MAXN],tot,uN; void init(int un) { uN = un; tot = 0; memset(head,-1,sizeof(head)); } void addedge(int u,int v) { //cout<<"add"< edge[tot].to = v; edge[tot].next = head[u]; head[u] = tot++; } int linker[MAXN]; bool used[MAXN]; bool dfs(int u) { for(int i = head[u]; i != -1;i = edge[i].next){ int v = edge[i].to; if(!used[v]){ used[v] = true; if(linker[v] == -1 || dfs(linker[v])){ linker[v] = u; return true; } } } return false; } int hungary(){ int res = 0; memset(linker,-1,sizeof(linker)); for(int u = 0; u < uN;u++){//点的编号0~uN-1 memset(used,false,sizeof(used)); if(dfs(u)) res++; } return res; }
简单的班级名字对比,当然也可以用C#直接操作excel文件
#includeusing namespace std; set<string>S; string s; int main() { freopen("test.in", "r", stdin); freopen("test.out", "w", stdout); for(int i=0;i<49;i++) cin>>s,S.insert(s); while(cin>>s)S.erase(s); for(auto X:S) cout< endl; return 0; }
多边形重心
#include#include #include using namespace std; double cross(double a[2],double b[2]){ //求向量a,b的叉积大小 return a[0]*b[1]-a[1]*b[0]; } int main(){ int ncase; cin>>ncase; while(ncase--){ int i,k; double S,tS,a[10002][2],sx,sy; cin>>k; for(i=1;i<=k;i++) cin>>a[i][0]>>a[i][1]; S=0.;sx=0.;sy=0.; //S面积,xy横纵坐标和 for(i=1;i<=k;i++){ tS=cross(a[i],a[i%k+1])/2.; S+=tS; sx+=tS*(a[i][0]+a[i%k+1][0])/3; sy+=tS*(a[i][1]+a[i%k+1][1])/3; } if(fabs(S)<1e-7) puts("0.000 0.000"); else printf("%.3lf %.3lf\n",fabs(S),(sx+sy)/S); } system("pause"); return 0; }