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 方式&原理 适用范围 单调队列 尺取合法区间 模板 ...
随机推荐
- JQuery实现倒计时效果
首先:引入jquery文件 <script type="text/javascript" src="http://www.cnblogs.com/Content/P ...
- [Mugeda HTML5技术教程之13]链接的添加方式
在广告主的需求中,有很多情况下需要在动画中添加一些外部链接.这份文档就在Mugeda动画中添加外部链接的方式,做一下梳理. 1.通过点击触发的链接 就是要用户点击屏幕来触发链接的情况,这是推荐使用的方 ...
- c语言中的结构体指针类型的cast
1.我们在c语言中会经常碰到强制类型转换. 在这,我介绍一种结构pointer类型转换,但是有前提(有点类似于c++中的继承中的子父对象的cast). 简单的介绍一下: 首先我们要知道一个结构的指针, ...
- 迷宫问题python实现(靠右手摸墙)
大家好,我是小鸭酱,博客地址为:http://www.cnblogs.com/xiaoyajiang 这是大二时候的数学模型毕业课程设计,我选择了自己研究盲人穿越迷宫的问题.当然后来再在网上查了这个问 ...
- 《Programming WPF》翻译 第7章 1.图形基础
原文:<Programming WPF>翻译 第7章 1.图形基础 WPF使得在你的应用程序中使用图形很容易,以及更容易开发你的显卡的能力.这有很多图形构架的方面来达到这个目标.其中最重要 ...
- 关于导入oracle10g的数据到sqlserver2005里的方案总结
由于项目需求,现需要将oracle的数据全部导入到sqlserver中,一下算是自己的总结小计吧. sqlserver有自己的导入数据的功能,其中就有提供两种方式从oracle导入数据. 两种方式就不 ...
- hdu4010-Query on The Trees(lct分裂合并加值查询最大值)
代码 #include<cstdio> #include<cstring> #include<string> #include<vector> #inc ...
- WifiDog系统
WifiDog:A captive portal suite What is it composed of ? A: It is composed of 2 components: The clien ...
- sae-v2ex 一个运行在SAE上的类似v2ex的轻型python论坛 - 技术讨论 - 云计算开发者社区 - Powered by Discuz!
sae-v2ex 一个运行在SAE上的类似v2ex的轻型python论坛 - 技术讨论 - 云计算开发者社区 - Powered by Discuz! sae-v2ex 一个运行在SAE上的类似v2e ...
- Linux用户管理(笔记)
用户:UID, /etc/passwd组:GID, /etc/group 影子口令:用户:/etc/shadow组:/etc/gshadow 用户类别:管理员:0普通用户: 1-65535 系统 ...