头文件,定义,等等
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <math.h>
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <iomanip>#define ll long long
#define ull unsigned long long
#define Pi 3.1415927
#define maxn 100005
#define debug cout<<"*******"<<endl
using namespace std;
const int minn = 1e-9;
const int INF = 0x3f3f3f3f;
const int mod = 1e9+7;
int main(){std::ios::sync_with_stdio(false);//提高cin效率return 0;
}
cout格式化输出
#include <iomanip>//头文件
//感觉就是没有printf好用!
字符串:
//逆置字符串
reverse(s.begin(),s.end());//无返回值,原字符串被逆置。
数学
//两点间距离 (x1,y1),(x2,y2)
sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2))
//球的体积公式 半径r
4*Pi*r*r*r/3
//一元二次方程求根公式
x1 = (-b + sqrt(b*b - 4*a*c))/(2a)
x2 = (-b - sqrt(b*b - 4*a*c))/(2a)
//一元二次方程配方法
ax^2 + bx + c = 0(a != 0)
(x - b/2a)^2 =  -c/a + (b/2a)^2

除法取模

1.(a/b)%mod=a%(b*mod)/b%mod;
2.(a/b)%mod=a*b^(mod-2)%mod,mod为素数
日期
bool is_Leap(int n){//是否为闰年if(n % 4 == 0 && n % 100 != 0 || n % 400 == 0) return true;return false;
}
//月,闰年时二月+1
int month[] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
//求y年m月d日到1年1月1日时的天数
int getDays(int y,int m,int d){int days = 0;for(int i = 1; i < y;i++){days += 365;if(is_Leap(i)){days += 1;}}for(int i = 1; i < m;i++){days += month[i];if(i == 2 && is_Leap(y)){days += 1;}}days += d;return days;
}
位运算
a & b //与运算
a | b //或运算
a ^ b //异或运算
c >>= 1;//等价于c /= 2
//奇偶
if(c&1) is_odd;
else is_even;
幂运算
//快速幂
int pow(int a,int b){int ans = 1;while(b!=0){if(b&1) ans *= a;a *= a;b >>= 1;}return ans;
}
//快速幂取模
int f(int a,int b,int m){int ans = 1;a = a % m;while(b){if(b&1){ans = ans * a % m;}a = a * a % m;b>>=1;}return ans;
}
//矩阵快速幂
void matMulti(int a[][N], int b[][N],  int n)
{//求a*b,并将相乘结果存入a中int temp[N][N];      //先将a与b的乘积存入temp,然后再将其存入a memset(temp, 0, sizeof(temp));for(int i = 0;i < n;i++){for(int j = 0;j < n;j++)for(int k=0;k< n;k++)  temp[i][j]+=a[i][k]*b[k][j]; }    //该循环求a*b,并存入了temp for(int i=0;i<n;i++)      //将temp中的值转存入a  for(int j=0;j<n;j++)  a[i][j]=temp[i][j];
}
void matPow(int a[][N], int n)
{  //求N*N矩阵a的n次幂  int ans[N][N];              //ans用来存放最终结果  memset(ans, 0, sizeof(ans));  //将矩阵ans的所有元素置为0  for(int i=0; i<n; i++)   ans[i][i] = 1;  //设置单位矩阵  while(n)  {   if(n&1) matMulti(ans, a, N);   // ans = ans*a;  matMulti(a, a, N);            //a = a*a,n=n>>1;                  //n = n/2 ;}  return ;
}
//矩阵快速幂结构体表示---求第n个菲波那切数
#include<bits/stdc++.h>
#define ll long long
#define mod 1000000009
using namespace std;
struct Node{ll c[2][2];
}ans;
Node mult(Node a,Node b){Node c = {0};for(int i=0;i<2;i++){for(int j=0;j<2;j++){for(int k=0;k<2;k++){c.c[i][j] += (a.c[i][k] * b.c[k][j]) % mod;c.c[i][j] %= mod;}}}return c;
}
Node mulPow(ll n){Node res = ans;if(n<0) return res;while(n){if(n&1) res = mult(res,ans);ans = mult(ans,ans);n>>=1;}return res;
}
void init(){ans.c[0][0] = 1;ans.c[0][1] = 1;ans.c[1][0] = 1;ans.c[1][1] = 0;
}
int main(){ll n;while(cin>>n){init();Node a = mulPow(n-2);cout<<a.c[0][0]*1<<endl;}
return 0;}
扩展欧几里得
int exgcd(int a,int b,int &x,int &y)
{if(b==0){x=1;y=0;return a; //返回最大公约数}int r=exgcd(b,a%b,x,y);int t=x;//一次一更新x和yx=y;y=t-a/b*y;return r;//返回最大公约数
}
并查集
int find(int root){//紫皮书的findreturn pre[root] == root ? root : pre[root] = find(pre[root]);
}
int find(int root)//自己整理的
{  int son, tmp;  son = root;  while(root != pre[root])  root = pre[root];  while(son != root)  {  tmp = pre[son];  pre[son] = root;  son = tmp;  }  return root;
}
void join(int root1, int root2)//连接
{  int x, y;  x = find(root1);y = find(root2);if(x != y)   pre[x] = y;
}  
动态规划典型问题状态转移方程
//数字三角形:
f[i][j]=max(f[i−1][j],f[i−1][j−1])+a[i][j]
最小生成树—克鲁斯卡尔
struct Edge{ //结点结构体int u,v,w;Edge(){}Edge(int u,int v,int w){//构造方法this->u = u;this->v = v;this->w = w;}bool operator < (const Edge &a){//排序规则return w < a.w;}
};
char a,b;
Edge e[maxn];
int pa[90];
void init(){//并查集初始化for(int i = 0; i <= 30; i++){pa[i] = i;}
}
int findset(int x){//寻找集合代表并进行路径压缩return x == pa[x] ? x : pa[x] = findset(pa[x]);
}
int main(){std::ios::sync_with_stdio(false);int n,m,x,w;while(cin>>n && n){m = 0;int cnt = n;n--;while(n--){cin>>a>>x;int u = a - 'A' + 1;while(x--){cin>>b>>w;int v = b - 'A' + 1;e[m++] = Edge(u,v,w);//添加边,并记录边的个数。}}sort(e,e+m);int cost = 0;//花费init();for(int i = 0; i < m; i++){//贪心,每次找最小花费的边,如果是不同树中的,添加到最小生成树中Edge u = e[i];int x = u.u;int y = u.v;x = findset(x);y = findset(y);if(x != y){cost += u.w;pa[x] = y;cnt--;}if(cnt == 1){break;}}cout<<cost<<endl;}return 0;
}

最短路径 迪杰斯特拉

int n;
struct Edge{int from,to,dist;Edge(int u,int v,int d):from(u),to(v),dist(d){}
};
struct HeapNode{int d,u;HeapNode(int td,int tu) : d(td) , u(tu) { }bool operator < (const HeapNode& rhs) const{return d > rhs.d;}
};
struct Dijkstra{int m;vector<Edge> edges;vector<int> G[maxn];bool done[maxn];int d[maxn];int p[maxn];void init(){for(int i = 0; i <= n+1;i++){G[i].clear();}edges.clear();}void AddEdge(int from,int to,int dist){edges.push_back(Edge(from,to,dist));m = edges.size();G[from].push_back(m-1);}void dijkstra(int s){priority_queue <HeapNode> Q;for(int i = 0; i <= n+1; i++){d[i] = INF;}d[s] = 0;memset(done,0,sizeof(done));Q.push(HeapNode(0,s));while(!Q.empty()){HeapNode x = Q.top();Q.pop();int u = x.u;if(done[u]) continue;done[u] = true;for(int i = 0; i < G[u].size();i++){Edge &e = edges[G[u][i]];if(d[e.to] >= d[u] + e.dist){d[e.to] = d[u] + e.dist;p[e.to] = u;Q.push(HeapNode(d[e.to],e.to));}else if(d[e.to] == d[u] + e.dist){p[e.to] = min(G[u][i], p[e.to]);}}}}
}D;
int main(){std::ios::sync_with_stdio(false);int T,m;cin>>T;while(T--){D.init();cin>>n>>m;int u,v,w;for(int i = 0; i < m;i++){cin>>u>>v>>w;D.AddEdge(v,u,w);}D.dijkstra(n+1);if(D.d[0] >= INF){cout<<-1<<endl;}else if(D.p[0] == n+1){cout<<0<<endl;}else{cout<<D.p[0]<<endl;}}return 0;
}

母函数:

多项式为:(1+x)*(1+x^2)*(1+x^10+x^15)= (1+x^2+x+x^3)*(1+x^10+x^15) = (1+x^10+x^15) + x^2*(1+x^10+x^15) +x*(1+x^10+x^15) +x^3*(1+x^10+x^15) =(1+x^10+x^15) +(x^2+x^12+x^17) +(x+x^11+x^16) +(x^3+x^13+x^18)=1+x+x^2+x^3+x^10+x^11+x^12+x^13+x^15+x^16+x^17+x^18
int main(){int v[] = {1,2,5};int n1[] = {0,0,0};int n2[3];int a[maxn],b[maxn];while(cin>>n2[0]>>n2[1]>>n2[2] && (n2[0] != 0 || n2[1] != 0 || n2[2] != 0)){int k = n2[0]+2*n2[1]+5*n2[2];memset(a,0,sizeof(a));a[0] = 1;for(int i = 0;i<=2;i++){memset(b,0,sizeof(b));for(int j = n1[i];j<=n2[i]&&j*v[i]<=k;j++){for(int t = 0; t+j*v[i]<=k;t++){b[t+j*v[i]] += a[t];}}memcpy(a,b,sizeof(b));}bool f = true;for(int i = 1;i < k;i++){if(a[i]==0){cout<<i<<endl;f = false;break;}}if(f){cout<<k+1<<endl;}}return 0;
}

广搜

int bfs(int n)
{queue<node> que;node fr,en;fr.n=n,fr.step=0;book[n]=1;que.push(fr);while(!que.empty()){fr=que.front();que.pop();if(fr.n==K)return fr.step;for(int i=0;i<3;i++){step[2]=fr.n;en.n=fr.n+step[i];if(en.n>=0&&en.n<=Max&&book[en.n]==0){book[en.n]=1;en.step=fr.step+1;que.push(en);}}}return -1;
}

素数筛法(1不是素数)

int prime[maxn];
bool is_prime[maxn];int sieve(int n){int p = 0;for(int i = 0; i <= n; ++i)is_prime[i] = true;is_prime[0] = is_prime[1] = false;for (int i = 2; i <= n; ++i){   //  注意数组大小是nif(is_prime[i]){prime[p++] = i;for(int j = i + i; j <= n; j += i)//轻剪枝,j必定是i的倍数is_prime[j] = false;}}return p;   //  返回素数个数
}

在ACM的巨坑里挣扎的弱鸡整理的模板相关推荐

  1. mybatis的xml里的sql如何使用注释,以及使用 `--` 进行注释的巨坑

    mybatis的xml里的sql如何使用注释,以及使用 -- 进行注释的巨坑 结论:使用 <!-- 注释 -->,千万别用 --(pgsql) 或者 #(mysql) 之类的,有巨大的坑! ...

  2. 沙漠上不小心挖了个洞,让这个地狱之门般的巨坑,燃烧了50年

    全世界只有3.14 % 的人关注了 爆炸吧知识 在土库曼斯坦的卡拉库姆沙漠深处,有一个神奇的巨坑,直径约为70米,它无论白天还是黑夜,永远都在燃烧. 这个坑的周围一片荒芜,坑里也没有任何明显在助燃的东 ...

  3. Flutter打包apk中的一些巨坑

    许多人在使用Flutter打包apk时都会参照文档的做法,但是按照文档基本上是百分之百失败的[手动狗头],官网的做法是这样的(可以不用看) 官网做法 但是方法基本不可行. 下面介绍一下正确的打包姿势 ...

  4. html onclick事件无效 巨坑

    html onclick事件无效 html无法触发onclick 最近在学习JavaScript的时候,想copy别人的csdn博客上的一个例子 例子1链接 结果onclick死活绑不上去,然后又试了 ...

  5. Android如何动态更换桌面图标(巨坑)

    转载https://blog.csdn.net/pangjl1982/article/details/83308512 1.Android如何动态更换桌面图标 1.1使用场景       APP,在中 ...

  6. 微信小程序服务商模式支付巨坑解决!

    今日有个在同一个小程序支付 款项需要付到不同的银行卡里去??? 于是找了下微信小程序支付文档,只有个requestPayment方法 emmm 去看看小程序后台吧 ok 有个微信支付  但是只能绑定一 ...

  7. synplify成功运行起designware的方法,巨坑

    因为手头FPGA是zynq ultrascale+.所以更新了synplify到2019版本.手里的项目必须要用designware来做验证.各种研究,填了N多的坑.终于搞定. 先说原理: 1. 电脑 ...

  8. Python发邮件遇到的巨坑

      因网站需要,准备添加一个邮箱绑定的功能.使用的是django框架,因为它已经封装好了发邮件的模块,想来不会太难.结果一试,553.553.553-然后,一天过去了- 1.使用QQ邮箱发邮件   上 ...

  9. 深度学习的可解释性方向的研究是不是巨坑?

    链接:https://www.zhihu.com/question/341190239 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 本人是19fall入学phd一枚,即将决定未来的研究方向, ...

最新文章

  1. Unity Game窗口中还原Scene窗口摄像机操作 强化版
  2. 考研英语一2016年真题4篇阅读词汇句子积累(详细!!!)
  3. 12省联考2019口胡
  4. 鼠标在计算机上被关闭了怎么处理,鼠标驱动程序丢失导致系统自动关闭的解决方法...
  5. ASP.NET 连接MySql数据库
  6. 测试集准确率不变_这个医疗AI准确率突破天际,招来了铺天盖地的质疑
  7. Nginx location执行顺序和匹配规则
  8. 五种方法,教你如何在Mac上查看文件完整路径
  9. 数位DP入门之hdu 3652 B-number
  10. Netty入门3之----Decoder和Encoder
  11. 开源新手必看7个小技巧
  12. 开发者注意!盘一盘 iOS 14 中 Swift 和 SwiftUI 的使用情况
  13. 如果SQL Server 配置管理器没有找到就代表安装失败?
  14. 贝塞尔曲线初识 (数学)
  15. echart多个柱状图 设置y轴显示_Origin做多因子柱状图
  16. RichText widgets require a Directionality widget ancestor.
  17. pixi 小游戏_pixi2d小游戏跳一跳源码/pixi教程,基于pixi-spine的2d游戏
  18. Xshell下载安装(解决评估过期问题)
  19. 谷粒商城基础篇-1.分布式基础概念架构图与功能模块图
  20. 2021-07-16 yarn Total VCores allocated for Containers 与服务器上cpu核数不一致原因

热门文章

  1. 关机状态下启动微型计算机叫做,湖南省计算机等级考试题库
  2. stm32正常运行流程图_stm32学习笔记之问题总结
  3. 微信读书项目记录(1)
  4. python制作猜数字小游戏
  5. Android 实现视频聊天1对1功能
  6. 姜数学模型——包饺子案例
  7. Activity + Fragment 页面重叠问题
  8. python 绘制新冠肺炎疫情地图
  9. [附源码]java毕业设计零食销售系统
  10. python 英语翻译_用Python将日语翻译成英语