我只会这么多

tarjan:codevs 1332

void tarjan(int u)
{
dfn[u]=low[u]=Time++; s.push(u);
for(int i=head[u];~i;i=nxt[i])
{
int v=to[i];
if(!dfn[v]) tarjan(v);
else if(dfn[v]!=-) low[u]=Min(low[u],low[v]);
}
if(dfn[u]==dfn[v])
{
while(!s.empty())
{
int x=s.top(); s.pop();
dfn[x]=-;
tot++;
if(x==u) break;
}
}
}

spfa codevs 2038

#include<iostream>
#include<queue>
#include<stdio.h>
#include<string.h>
using namespace std;
const int inf=0x3f3f3f3f;
int cnt=-,n,e,s,t,ans=inf,p;
int head[],to[],w[],nxt[],d[],used[],pos[];
int Min(int x,int y)
{
return x<y?x:y;
}
void Init()
{
memset(head,-,sizeof(head));
memset(nxt,-,sizeof(nxt));
}
void link(int u,int v,int l)
{
nxt[++cnt]=head[u];
head[u]=cnt;
to[cnt]=v;
w[cnt]=l;
}
void spfa(int s)
{
queue<int>q;
memset(d,inf,sizeof(d));
q.push(s); d[s]=; used[s]=;
while(!q.empty())
{
int u=q.front(); q.pop(); used[u]=;
for(int i=head[u];~i;i=nxt[i])
{
int v=to[i],val=w[i];
if(d[v]>d[u]+val)
{
d[v]=d[u]+val;
if(!used[v])
{
q.push(v);
used[v]=;
}
}
}
}
int tot=;
for(int i=;i<=n;i++)
{
tot+=d[pos[i]];
}
ans=Min(ans,tot);
}
int main()
{
scanf("%d%d%d",&n,&p,&e);
for(int i=;i<=n;i++)
{
int u; scanf("%d",&pos[i]);
}
Init();
for(int i=;i<=e;i++)
{
int u,v,c; scanf("%d%d%d",&u,&v,&c);
link(u,v,c); link(v,u,c);
}
for(int i=;i<=p;i++)
{
spfa(i);
}
printf("%d",ans);
return ;
}

lca 1787

#include<iostream>
#include<stdio.h>
#include<cstring>
using namespace std;
int n,m,u,v,a,b,c,ans,temp1,cnt=-;
int dep[],head[],to[],nxt[];
int fa[][];
void Init()
{
memset(head,-,sizeof(head));
memset(nxt,-,sizeof(nxt));
memset(fa,-,sizeof(fa));
}
int abs(int x)
{
return x>?x:-x;
}
void link(int u,int v)
{
nxt[++cnt]=head[u]; head[u]=cnt;
to[cnt]=v;
}
void dfs(int u,int d)
{
dep[u]=d;
for(int i=head[u];~i;i=nxt[i])
{
int v=to[i];
if(!dep[v])
{
fa[][v]=u;
dfs(v,d+);
}
}
}
int lca(int u,int v)
{
if(dep[u]<dep[v]) swap(u,v);
int deep=dep[u]-dep[v];
for(int i=;i>=;i--)
{
if(deep&(<<i)) u=fa[i][u];
}
if(u==v) return u;
for(int i=;i>=;i--)
{
if(fa[i][u]!=fa[i][v])
{
u=fa[i][u];
v=fa[i][v];
}
}
return fa[][u];
}
inline int calc(int x,int y)
{
int temp=lca(x,y);
return abs(dep[x]-dep[temp])+abs(dep[y]-dep[temp]);
}
int main()
{
scanf("%d%d",&n,&m);
Init();
for(int i=;i<n;i++)
{
int u,v; scanf("%d%d",&u,&v);
link(u,v); link(v,u);
}
dfs(,);
for(int i=;i<=;i++)
{
for(int j=;j<=n;j++)
{
if(fa[i-][j]!=-) fa[i][j]=fa[i-][fa[i-][j]];
}
}
for(int i=;i<=m;i++)
{
scanf("%d%d%d",&a,&b,&c);
int x=lca(a,b);
int y=lca(b,c);
int z=lca(c,a);
if(x==y)
temp1=z;
else
if(y==z)
temp1=x;
else
if(x==z)
temp1=y;
ans=calc(a,temp1)+calc(b,temp1)+calc(c,temp1);
printf("%d %d\n",temp1,ans);
}
return ;
}

二分 跳石头

#include<iostream>
#include<stdio.h>
using namespace std;
int n,m,ans,L;
int a[],mark[];
bool C(int x)
{
int last=,tot=;
for(int i=;i<=n;i++)
{
mark[i]=;
if(a[i]-a[last]<x)
{
tot++;
mark[i]=;
}
else last=i;
}
last=n+;
for(int i=n;i>=;i--)
{
if(a[last]-a[i]<x&&!mark[i]) tot++;
else if(a[last]-a[i]>=x) break;
}
return tot<=m;
}
int main()
{
scanf("%d%d%d",&L,&n,&m);
a[]=; a[n+]=L+;
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
}
int l=,r=L+,mid;
while(r-l>)
{
mid=(l+r)/;
if(C(mid)) {l=mid;ans=mid;}
else r=mid;
}
if(C(ans+)) ans++;
printf("%d",ans);
return ;
}

线段树

1012

#include<iostream>
#include<cstdio>
using namespace std;
const int inf=<<;
int m,d,t,size;
int tree[];
int Max(int x,int y)
{
return x>y?x:y;
}
void update(int l,int r,int x,int pos,int num)
{
if(l==r)
{
tree[x]=num;
return;
}
if(pos>(l+r)/) update((l+r)/+,r,x*+,pos,num);
if(pos<=(l+r)/) update(l,(l+r)/,x*,pos,num);
tree[x]=Max(tree[x],Max(tree[x*],tree[x*+]));
}
int query(int l,int r,int x,int a,int b)
{
if(l>b||r<a) return -inf;
if(l>=a&&r<=b) return tree[x];
return Max(query(l,(l+r)/,x*,a,b),query((l+r)/+,r,x*+,a,b));
}
int main()
{
scanf("%d%d",&m,&d);
for(int i=;i<=m;i++)
{
char s[]; scanf("%s",s);
if(s[]=='A')
{
int n,num; scanf("%d",&n); size++;
num=(n+t)%d;
update(,m,,size,num);
}
else if(s[]=='Q')
{
int l; scanf("%d",&l);
t=query(,m,,size-l+,size);
printf("%d\n",t);
}
}
// for(int i=1;i<=3;i++) cout<<tree[i]<<" ";
return ;
}

快速幂:

#include<iostream>
using namespace std;
int n,m,k,x;
int power(int k)
{
int t=,ret=;
while(k>)
{
if(k%==) ret*=t;
t*=t; k/=;
}
return ret;
}
int main()
{
cin>>k;
cout<<power(k);
return ;
}

高精度 3116

#include<iostream>
#include<cstdio>
using namespace std;
string A,B;
struct bigint
{
int d[];
int len;
}a,b,c;
int Max(int x,int y)
{
return x>y?x:y;
}
void add(bigint&a,bigint&b,bigint&c)
{
int x=,temp;
c.len=Max(a.len,b.len);
for(int i=;i<=c.len;i++)
{
temp=a.d[i]+b.d[i]+x;
c.d[i]=temp%; x=temp/;
}
if(x>) c.d[++c.len]=x;
for(int i=c.len;i>=;i--) cout<<c.d[i];
}
int main()
{
cin>>A>>B;
a.len=A.length();
for(int i=;i<A.length();i++)
{
a.d[A.length()-i]=A[i]-'';
}
b.len=B.length();
for(int i=;i<B.length();i++)
{
b.d[B.length()-i]=B[i]-'';
}
add(a,b,c);
return ;
}

noip复习模板的更多相关文章

  1. NOIP复习篇

    NOIP复习篇---枚举 --------------------------------------------------------------------------------------- ...

  2. django上课笔记4-复习数据库操作-复习模板-Seccion-详细cookie和session的区别

    一.复习数据库操作 字段类型 字符串 EmailField(CharField): IPAddressField(Field) URLField(CharField) SlugField(CharFi ...

  3. NOIP的模板--考前复习

    距离NOIP还有25天 可以去放弃一些巨难得题目去搞一些模板了 -------在校老师的原话 一·快排 虽然可以手打,最好用STL,里面有很多优化,会快很多 #include<iostream& ...

  4. noip级别模板小复习

    不是很noip的知识点就不写了. dij什么的太easy就不写了. 缩点 注意\(Tarjan\)在缩边双和求强联通分量时候的区别. 一个要判断是否在栈内一个不要. 最后\(topsort\)来\(d ...

  5. noip考前模板复习

    网络流 Dinic(搭配飞行员) //Serene #include<algorithm> #include<iostream> #include<cstring> ...

  6. NOIP复习之1 数学数论

    noip一轮复习真的要开始啦!!! 大概顺序是这样的 1.数学 2.搜索贪心 3.数据结构 4.图论 5.dp 6.其他 数学 1.数论 数论被称为数学皇冠上的明珠,他的重要性主要在于它是其他学习的祖 ...

  7. 冲刺NOIP复习,算法知识点总结

    前言        离NOIP还有一个星期,匆忙的把整理的算法补充完善,看着当时的整理觉得那时还年少.第二页贴了几张从贴吧里找来的图片,看着就很热血的.当年来学这个竞赛就是为了兴趣,感受计算机之美的. ...

  8. NOIP常见模板集合

    Preface 这篇博客记录的是我联赛前虽然只有两天了的打板子记录. 只求真的能给我起到些作用吧,一般按照难度排序. 而且从这篇博客开始我会用H3的标题代替H4 为了节约篇幅,以下的代码一般均以cla ...

  9. 【NOIP复习】最短路总结

    [模板] /*堆优化Dijkstra*/ void dijkstra() { priority_queue<pair<ll,int>,vector<pair<ll,int ...

随机推荐

  1. BigDecimal.ROUND_HALF_XXX的各种用法

    在银行.帐户.计费等领域,BigDecimal提供了精确的数值计算.其中8种舍入方式值得掌握. 1.ROUND_UP 舍入远离零的舍入模式. 在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数 ...

  2. jdbc与 Beanshell PostProcessor 对多条结果的处理

    配置了数据库后,可以通过Beanshell对结果进行特别的操作,一下为对多条数据的处理 数据库的配置如图:

  3. Eclipse块选取的情况 shift+tab 是块向前缩进

    Eclipse块选取的情况 shift+tab 是块向前缩进

  4. matrix(No.1)operations

  5. .Net程序员学习Linux最简单的方法

    有很多关于Linux的书籍,博客.大多数都会比较“粗暴“的将一大堆的命令塞给读者,从而使很多.NET程序员望而却步.未入其门就路过了. 所以我设想用一种更为平滑的学习方式, 就是在学习命令时,先用纯语 ...

  6. 使用 Fastlane 实现 IOS 持续集成

    简介 持续集成是个“一次配置长期受益”的工作.但很多小公司都没有.以前在做Windows开发配置感觉简单一些,这次配置iOS的,感觉步骤还挺多.整理出来,分享给大家,不正确的地方请及时指正. 本文主要 ...

  7. Resting state brain networks derived from spatial ICA - an individual case

    Reference: Xin D, Biswal B B. Dynamic brain functional connectivity modulated by resting-state netwo ...

  8. 043医疗项目-模块四:采购单模块—采购单明细查询(Dao,Service,Action三层)

    前一篇文章我们做的是在医院的角度上添加在采购单里面添加药品.这一篇文章是查看我们添加的采购单信息. 我们先看一下要实现的效果:当: 按下确认添加时,会在这里 显示出刚才添加的数据. 好,我们就来做这个 ...

  9. DEDECMS之一 安装配置

    一.织梦安装 1.建好数据库.数据库用户名密码以及权限 2.上传代码到服务器,根目录赋予所有权限 3.打开网址,一步步安装即可 二.配置 1.删除安装目录下的所有文件 2.系统 系统设置:配置网站基本 ...

  10. WPF 4.0 DatePicker 快速录入

    WPF 4.0的DatePicker在通过键盘录入日期的时候是非常让人郁闷的.必须按照日期的格式来完整输入例如,比如输入“2010/10/10”才能识别.而实际上在一些要求快速录入的场合,用户更希望直 ...