题目描述

输入两个整数a,b,输出它们的和(|a|,|b|<=10^9)。 注意 1、pascal使用integer会爆掉哦!

2、有负数哦!

3、c/c++的main函数必须是int类型,而且最后要return 0。这不仅对洛谷其他题目有效,而且也是noip/noi比赛的要求!

好吧,同志们,我们就从这一题开始,向着大牛的路进发。

“任何一个伟大的思想,都有一个微不足道的开始。”

输入输出格式

输入格式:

两个整数以空格分开

输出格式:

一个数

输入输出样例

输入样例#1:

20 30
输出样例#1:

50
#include <algorithm>
#include <cstdio>
#include <vector>
#include <queue> using namespace std;
int a,b;
long long ans;
class Segmenttree
{
private:
int dis[];
struct Segment
{
int l,r,sum;
Segment *ch[];
Segment()
{
ch[]=ch[]=NULL;
}
};
void build(Segment *&k,int l,int r)
{
k=new Segment;
k->l=l;k->r=r;
if(l==r) {k->sum=dis[l];return;}
int mid=(l+r)>>;
build(k->ch[],l,mid);
build(k->ch[],mid+,r);
k->sum=k->ch[]->sum+k->ch[]->sum;
}
int Tree_Query(Segment *&k,int l,int r)
{
if(k->l==l&&k->r==r) return k->sum;
int mid=(k->l+k->r)>>;
if(l>mid) return Tree_Query(k->ch[],l,r);
else if(r<=mid) return Tree_Query(k->ch[],l,r);
else return Tree_Query(k->ch[],l,mid)+Tree_Query(k->ch[],mid+,r);
}
public:
int get()
{
Segment *root=new Segment;
dis[]=a;
dis[]=b;
build(root,,);
return Tree_Query(root,,);
}
};
class Segmenttree segment;
class chairmantree
{
private:
int rs[],ls[],sum[],rt[],v1[],v2[],tot,Size;
int build(int l,int r)
{
int now=++tot;
sum[now]=;
if(l==r) return now;
int mid=(l+r)>>;
ls[now]=build(l,mid);
rs[now]=build(mid+,r);
return now;
}
inline int rank(int x) {return lower_bound(v2+,v2++Size,x)-v2;}
void update(int l,int r,int x,int &y,int t)
{
y=++tot;
sum[y]=sum[x]+;
if(l==r) return;
ls[y]=ls[x];
rs[y]=rs[x];
int mid=(l+r)>>;
if(t<=mid) update(l,mid,ls[x],ls[y],t);
else update(mid+,r,rs[x],rs[y],t);
}
int ask(int l,int r,int x,int y,int k)
{
if(l==r) return l;
int mid=(l+r)>>;
if(sum[ls[y]]-sum[ls[x]]>=k) return ask(l,mid,ls[x],ls[y],k);
else {k-=sum[ls[y]]-sum[ls[x]];return ask(mid+,r,rs[x],rs[y],k);}
}
public:
int get()
{
v1[]=v2[]=a;
v1[]=v2[]=b;
sort(v2+,v2++);
Size=unique(v2+,v2++)-v2-;
rt[]=build(,Size);
for(int i=;i<=;++i) update(,Size,rt[i-],rt[i],rank(v1[i]));
return v2[ask(,Size,rt[],rt[],)]+v2[ask(,Size,rt[],rt[],)];
}
};
class chairmantree chairman;
class BIT
{
private:
int tag[],n;
inline int lowbit(int x) {return x&(-x);}
void modify(int x,int y)
{
for(;x<=n;x+=lowbit(x))
tag[x]+=y;
}
int ask(int x)
{
int ret=;
for(;x;x-=lowbit(x)) ret+=tag[x];
return ret;
}
public:
int get()
{
n=;
tag[]=tag[]=;
modify(,a);
modify(,b);
return ask()-ask();
}
};
class BIT bit;
class SPFA
{
private:
vector<pair<int,int> >G[];
int dis[],n;
bool vis[];
void Spfa(int s)
{
queue<int>q;
for(int i=;i<=n;++i) vis[i]=,dis[i]=0x7fffffff;
dis[s]=;
q.push(s);
for(int now;!q.empty();)
{
now=q.front();
q.pop();
vis[now]=;
for(int i=;i<G[now].size();++i)
{
int v=G[now][i].first,w=G[now][i].second;
if(dis[v]>dis[now]+w)
{
dis[v]=dis[now]+w;;
if(!vis[v])
{
vis[v]=;
q.push(v);
}
}
}
}
}
public:
int get()
{
n=;
G[].push_back(make_pair(,a));
G[].push_back(make_pair(,b));
Spfa();
return dis[];
}
};
class SPFA spfa;
class FLOYD
{
private:
#define inf 0x3f3f3f3f
inline int min(int a,int b) {return a>b?b:a;}
int f[][],n;
int floyd()
{
for(int k=;k<=n;++k)
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
f[i][j]=min(f[i][j],f[i][k]+f[k][j]);
return f[][];
}
public:
int get()
{
n=;
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
f[i][j]=(i!=j)*inf;
f[][]=a;
f[][]=b;
return floyd();
}
};
class FLOYD floyd;
class DINIC
{
private:
inline int min(int a,int b) {return a>b?b:a;}
#define inf 0x3f3f3f3f
int s,t,nextt[],to[],flow[],head[],cnt,dep[];
bool bfs(int s,int t)
{
queue<int>q;
for(int i=s;i<=t;++i) dep[i]=-;
q.push(s);
dep[s]=;
for(int now;!q.empty();)
{
now=q.front();
q.pop();
for(int i=head[now];i;i=nextt[i])
{
int v=to[i];
if(dep[v]==-&&flow[i])
{
dep[v]=dep[now]+;
if(v==t) return true;
q.push(v);
}
}
}
return false;
}
int dfs(int now,int t,int Limit)
{
if(now==t||!Limit) return Limit;
int f,ret=;
for(int i=head[now];i;i=nextt[i])
{
int v=to[i];
if(dep[v]==dep[now]+&&flow[i]&&(f=dfs(v,t,min(Limit,flow[i]))))
{
flow[i]-=f;
flow[i^]+=f;
Limit-=f;
ret+=f;
if(!Limit) break;
}
}
if(ret!=Limit) dep[now]=-;
return ret;
}
int dinic(int s,int t)
{
int ret=;
for(;bfs(s,t);ret+=dfs(s,t,inf));
return ret;
}
void ins(int u,int v,int l)
{
nextt[++cnt]=head[u];
to[cnt]=v;
flow[cnt]=l;
head[u]=cnt;
}
public:
int get()
{
s=;t=;cnt=;
ins(s,,a);
ins(,s,);
ins(s,,b);
ins(,s,);
ins(,t,a);
ins(t,,);
ins(,t,b);
ins(t,,);
return dinic(s,t);
}
};
class DINIC dinic;
class DP
{
private:
inline int max(int a,int b) {return a>b?a:b;}
int f[],v[],w[];
public:
int get()
{
v[]=v[]=;
w[]=a;if(a<) f[]+=a,f[]+=a,f[]+=a;
w[]=b;if(b<) f[]+=b,f[]+=b,f[]+=b;
for(int i=;i<=;++i)
for(int j=;j>=v[i];--j)
f[j]=max(f[j-v[i]]+w[i],f[j]);
return f[];
}
};
class DP dp;
class Kruskal
{
private:
int fa[];
struct node
{
int x,y,z;
bool operator<(node a)const
{
return z<a.z;
}
}e[];
int find_(int x) {return x==fa[x]?x:fa[x]=find_(fa[x]);}
public:
int get()
{
int n=,cnt=;
for(int i=;i<=n;++i) fa[i]=i;
e[++cnt].x=;
e[cnt].y=;
e[cnt].z=a;
e[++cnt].x=;
e[cnt].y=;
e[cnt].z=b;
sort(e+,e++cnt);
int num=,ret=;
for(int i=;i<=cnt;++i)
{
int fx=find_(e[i].x),fy=find_(e[i].y);
if(fx!=fy)
{
fa[fy]=fx;
num++;
ret+=e[i].z;
if(num==n-) break;
}
}
return ret;
}
};
class Kruskal kruskal;
int Main()
{
scanf("%d%d",&a,&b);
ans+=segment.get();
ans+=bit.get();
ans+=chairman.get();
ans+=spfa.get();
ans+=floyd.get();
ans+=dinic.get();
ans+=dp.get();
ans+=kruskal.get();
printf("%lld\n",ans/);
return ;
}
int sb=Main();
int main(int argc,char *argv[]){;}

洛谷 P1001 A+B Problem的更多相关文章

  1. 【题解】洛谷P1001 A+B Problem

    第一篇博客,献给2020年的残夏. 静听8月的热情与安宁,在竞赛中的时光如白驹过隙. 也不惧未知的风雨,努力向着既往的通途. 题目地址 https://www.luogu.com.cn/problem ...

  2. 洛谷P1001 A+B Problem

    这道题…………还是很简单!!! code: #include <iostream> #include <cstdio> using namespace std; int mai ...

  3. 洛谷1001 A+B Problem

    洛谷1001 A+B Problem 本题地址:http://www.luogu.org/problem/show?pid=1001 题目描述 输入两个整数a,b,输出它们的和(|a|,|b|< ...

  4. 洛谷1303 A*B Problem 解题报告

    洛谷1303 A*B Problem 本题地址:http://www.luogu.org/problem/show?pid=1303 题目描述 求两数的积. 输入输出格式 输入格式: 两个数 输出格式 ...

  5. 洛谷1601 A+B Problem(高精) 解题报告

    洛谷1601 A+B Problem(高精) 本题地址:http://www.luogu.org/problem/show?pid=1601 题目背景 无 题目描述 高精度加法,x相当于a+b pro ...

  6. 洛谷P1865 A % B Problem

    1.洛谷P1865 A % B Problem 题目背景 题目名称是吸引你点进来的 实际上该题还是很水的 题目描述 区间质数个数 输入输出格式 输入格式: 一行两个整数 询问次数n,范围m 接下来n行 ...

  7. 洛谷P1919 A*B problem 快速傅里叶变换模板 [FFT]

    题目传送门 A*B problem 题目描述 给出两个n位10进制整数x和y,你需要计算x*y. 输入输出格式 输入格式: 第一行一个正整数n. 第二行描述一个位数为n的正整数x. 第三行描述一个位数 ...

  8. 【洛谷P1601 A+B Problem(高精)】

    题目背景 无 题目描述 高精度加法,x相当于a+b problem,[b][color=red]不用考虑负数[/color][/b] 输入输出格式 输入格式: 分两行输入a,b<=10^500 ...

  9. 洛谷——P1480 A/B Problem

    P1480 A/B Problem 题目描述 输入两个整数a,b,输出它们的商(a<=10^5000,b<=10^9) 输入输出格式 输入格式: 两行,第一行是被除数,第二行是除数. 输出 ...

随机推荐

  1. django根据不同app配置相应的log文件

    django根据不同app配置相应的log文件 settings.py # django logging LOG_PATH = "/var/log/blog/" LOGGING = ...

  2. <c和指针>学习笔记1之快速上手和基本概念

    1 c语言中的注释 功能:使这段代码在程序中不起作用,当然如果是功能注释,那是方便其他人阅读您的代码. 大部分情况下,多行的注释,我们采用的是这种方式,例如  /*内容*/. 这个符号不能嵌套,也就是 ...

  3. 优酷电视剧爬虫代码实现一:下载解析视频网站页面(4)补充: Java正则表达式Matcher.group(int group)相关类解析

    在Java正则表达式的相关类Matcher中,有如下几个方法: - int groupCount() - String group(int group) - int start(int group)  ...

  4. Django 中得ORM介绍和字段及字段参数

    ORM 介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说 ORM 是通过使用 ...

  5. Java8函数式接口之Predicate<T>

    作用: 这是一个功能接口,因此可以作为lambda表达式或方法引用的赋值目标. 实例: /** * Created by luo on 2017/5/3. */ public class Predic ...

  6. 无监督学习:Neighbor Embedding(邻域嵌套)

    一 Manifold Learning 我们要做的是非线性的降维,data是分布在低维空间里面,只是被扭曲到了高维空间. 比如地球的表面是一个二维平面,但是被塞到一个三维空间中. Manifold就是 ...

  7. MySQL查看版本号的五种方式介绍1111111

    MySQL查看版本号的五种方式介绍 1 命令行模式登录MySQL [root@localhost ~]# mysql -uroot -p Enter password: Welcome to the ...

  8. 2014 Noip提高组 Day1

    P1328 生活大爆炸版石头剪刀布 [题目描述] 石头剪刀布是常见的猜拳游戏:石头胜剪刀,剪刀胜布,布胜石头.如果两个人出拳一样,则不分胜负.在<生活大爆炸>第二季第8 集中出现了一种石头 ...

  9. JDK自带反编译工具javap

    在JDK的bin文件夹下,有许多自带工具: javap就是其中的一个,对应为 javap.exe javap可反编译查看Java编译器编译生成的字节码文件, 语法: javap [ options ] ...

  10. JS高级学习历程-4

    4 执行环境可以访问什么变量 具体可以访问变量类型:局部变量.参数.函数.外部环境变量 优先级:局部变量 > 函数 > 参数 > 外部环境变量 <!DOCTYPE html&g ...