NOIP前模板整理
图
最短路径
#include <queue>
#define N 1000
typedef long long ll;
using namespace std;
int d[N], w[N][N], num[N];
ll dis[N];
queue<int> que;
void spfa(){
for (int i=;i<=n;i++) dis[i]=0x7fffff;
que.push();d[]=;dis[]=;
do{
int h=que.front();
d[h]=,que.pop();
for (int i=,v;i<=num[h];i++){
v = s[h][i];
if (dis[v] > dis[h] + w[h][s[v]]) {
dis[v] = dis[h] + w[h][v];
if (!d[v]) que.push(v),d[v]=;
}
}
}while(!que.empty())
}
spfa
void floyd(){
for (int k=;k<=n;k++) {
for (int i=;i<=n;i++) {
for (int j=;j<=n;j++){
if (a[i][j] > a[i][k]+a[k][j]){
a[i][j] = a[i][k]+a[k][j];
}
}
}
}
}
floyd
struct Node {
int id,dis;
bool operator < (const Node& rhs) const{
return dis>rhs.dis;
}
};
priority_queue<Node> q;
int vis[N],dis[N];
void dijkstra(int s){
q.push((Node){s,});
while(!q.empty()) {
int u=q.top().id;
if(vis[u]) continue;
vis[u]=;
trav(u,i) {
int v=e[i].v;
if(dis[v]>dis[u]+e[i].w) {
dis[v]=dis[u]+e[i].w;
q.push((Node){v,dis[v]});
}
}
}
}
dijkstra
LCA
#define N 100005
#define D 21
struct Edge {
int v,nxt;
}e[M];
int en=,front[N];
void adde(int u,int v){
e[++en]=(Edge){v,front[u]}; front[u]=en;
} int fa[N][D],dep[N]; void dfs(int u){
for(int i=;i<D;i++)
fa[u][i]=fa[fa[u][i-]][i-];
trav(u,i) {
int v=e[i].v;
if(v!=fa[u][]) {
fa[v][]=u;
dep[v]=dep[u]+;
dfs(v);
}
}
}
int lca(int u,int v)
{
if(dep[u]<dep[v]) swap(u,v);
int t=dep[u]-dep[v];
for(int i=;i<D;i++)
if(t&(<<i)) u=fa[u][i];
if(u==v) return u;
for(int i=D-;i>=;i--)
if(fa[u][i]!=fa[v][i])
u=fa[u][i],v=fa[v][i];
return fa[u][];
}
int main(){
//input
while(t--){
scanf("%d%d", &u,&v);
printf("%d\n", dep[u]+dep[v]-*dep[lca(u,v)]);
}
}
倍增
RMQ
#include <iostream>
#include <cstdio>
#include <cmath>
#define maxn 50005
using namespace std;
int x, y, t, s, k;
int fa[maxn][], fi[maxn][], n, q, a[maxn];
void rmq(){
for (int i=;i<=n;i++) fa[i][] = a[i], fi[i][] = a[i];
for (int i=;i<=floor(log(n)/log());i++)
for (int j=;j<=n+-(<<i);j++){
fa[j][i] = max(fa[j][i-], fa[j+(<<i-)][i-]);
fi[j][i] = min(fi[j][i-], fi[j+(<<i-)][i-]);
}
}
int main(){
while(scanf("%d%d", &n,&q)!=EOF){
for (int i=;i<=n;i++) scanf("%d",&a[i]);
rmq();
for (int i=;i<=q;i++){
scanf("%d%d",&x,&y);
k = (int)(log(y-x+1.0)/log(2.0));
t=max(fa[x][k],fa[y-(<<k)+][k]),s=min(fi[x][k],fi[y-(<<k)+][k]);
printf("%d\n",t-s);
}
}
return ;
}
rmq
输入输出优化
void read(int& x) {
char c=getchar();
while(!isdigit(c)) c=getchar();
x=;
while(isdigit(c)) x=x*+c-'' , c=getchar();
}
read()
NOIP前模板整理的更多相关文章
- [OI]省选前模板整理
省选前把板子整理一遍,如果发现有脑抽写错的情况,欢迎各位神犇打脸 :) 数学知识 数论: //组合数 //C(n,m) 在n个数中选m个的方案数 ll C[N][N]; void get_C(int ...
- SDOI2019 省选前模板整理
目录 计算几何✔ DP 斜率优化✔ 四边形不等式✔ 轮廓线DP✘ 各种分治 CDQ分治✔ 点分治✔ 整体二分✔ 数据结构 线段树合并✔ 分块✔ K-D Tree LCT 可持久化Trie✔ Splay ...
- NOIP 前夕 模板整理
归并排序: #include<iostream> #include<cstdio> #include<cstring> using namespace std; ] ...
- NOIP前的一些计划
一些想法 距离NOIP2018只剩下一个星期的时间了,通过这几天在长郡的考试,渐渐感觉还有好多东西自己还不够熟练,也有些东西到现在还不会,现将NOIP前的一些计划列在这里,希望能在考前把他们全部完成吧 ...
- Noip前的大抱佛脚----Noip真题复习
Noip前的大抱佛脚----Noip真题复习 Tags: Noip前的大抱佛脚 Noip2010 题目不难,但是三个半小时的话要写四道题还是需要码力,不过按照现在的实力应该不出意外可以AK的. 机器翻 ...
- Noip前的大抱佛脚----字符串
目录 字符串 经验 用FFT求解字符串匹配问题 两(多)串DP时状态合并 最长公共子序列转LIS 位运算最大值 挂链哈希 哈希处理回文串 树哈希 字符串模板库 KMP 最小循环表示 Mancher A ...
- Noip前的大抱佛脚----数论
目录 数论 知识点 Exgcd 逆元 gcd 欧拉函数\(\varphi(x)\) CRT&EXCRT BSGS&EXBSGS FFT/NTT/MTT/FWT 组合公式 斯特林数 卡塔 ...
- Noip前的大抱佛脚----图论
目录 图论 知识点 二分图相关 DFS找环 并查集维护二分图 二分图匹配的不可行边 最小生成树相关 最短路树 最短路相关 负环 多源最短路 差分约束系统 01最短路 k短路 网络流 zkw费用流 做题 ...
- Noip前的大抱佛脚----数据结构
目录 数据结构 知识点及其应用 线段树 神奇标记 标记不下放 并查集 维护二分图 维护后继位置 堆 可并堆的可持久化 dsu on tree 方式&原理 适用范围 单调队列 尺取合法区间 模板 ...
随机推荐
- 多线程中遇到ASSERT(pMap->LookupPermanent(hWndOrig) == NULL);怎么解决
XP下用VC开发的程序,在一个主线程调用3 个线程,线程之间要共享数据,结果总出现wincore.cpp line 980 ASSERT(pMap-> LookupPermane ...
- memcached真实项目中的应用
上一篇memcached介绍及基本使用介绍了memcached的一些基本概念和一个范例.这一篇将介绍一个memcached在实际项目中的应用
- 锋利jQuery 学习整理之 第六章 jQuery 与Ajax 的应用
1.Ajax 的XMLHttpRequest 对象 XMLHttpRequest 是Ajax 的核心,它是Ajax 实现的关键---发送异步请求.接受响应及执行回调都是通过它来完成的.XMLHttpR ...
- php中对象的串行化
我们大家有知道PHP串行化可以把变量包括对象,转化成连续bytes数据,你可以将串行化后的变量存在一个文件里或在网络上传输,然后再反串行化还原为原来的数据.文章这里就PHP串行化为大家详细的介绍.你在 ...
- 给config加密
Configuration config = WebConfigurationManager.OpenWebConfiguration("/"); ConfigurationSec ...
- Oracle 10g RAC启动与关闭命令
一. 检查共享设备 一般情况下, 存放OCR 和 Voting Disk 的OCFS2 或者raw 都是自动启动的. 如果他们没有启动,RAC 肯定是启动不了的. 1.1 如果使用ocfs2的,检查o ...
- windows下将隐藏文件通过命令行改变为普通的显示文件
attrib -h -s *.* /s /d 不懂的看下 attrib /? 帮助.保存为bat也可以.
- Message Authentication Code
- nodejs学习笔记之包、模块实现
简单了解了node的安装和一些基本的常识之后,今天学习了node中很重要的包和模块的一些知识点. 首先学习一下包的规范,它由包结构和包描述两部分组成.包结构用于组织包的各种文件,包 ...
- DBA 经典面试题(3)
这里的回答并不是十分全面,这些问题可以通过多个角度来进行解释,也许你不必在面试过程中给出完全详尽的答案,只需要通过你的解答使面试考官了解你对ORACLE概念的熟悉程度. 1.解释冷备份和热备份的不 ...