题目描述

输入两个整数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. day6 面向对象(2)

    static关键字 1:如果没有static会怎样? 1:定义Person类 1:姓名.年龄.国籍,说话行为 2:多个构造,重载形式体现 2:中国人的国籍都是确定的 1:国籍可以进行显示初始化 cla ...

  2. bootstrap的popover()的使用

    有一些选项是通过 Bootstrap 数据 API(Bootstrap Data API)添加或通过 JavaScript 调用的.下表列出了这些选项: 选项名称 类型/默认值 Data 属性名称 描 ...

  3. 漫画:深入浅出 ES 模块

    本文来自网易云社区. 本文翻译自:ES modules: A cartoon deep-dive ES 模块为 JavaScript 提供了官方标准化的模块系统.然而,这中间经历了一些时间 —— 近 ...

  4. Solr 6.7学习笔记(07)-- More Like This

    Solr中提供了MoreLikeThis的功能,用于查询相似的文档 .应用场景(个人理解):1. 你写的文章和别人文章相似度高的话,有一方是抄袭的可能性就很大.2. 查找相似的产品. MoreLike ...

  5. Codeforces Round #290 (Div. 2) B (dfs)

    题目链接:http://codeforces.com/problemset/problem/510/B 题意:判断图中是否有某个字母成环 思路:直接dfs就好了,注意判断条件:若下一个字母与当前字母相 ...

  6. luogu P2570 [ZJOI2010]贪吃的老鼠【二分+最大流】

    首先考虑只满足第一个条件,二分答案,把过期时间加上mid之后的2n个时间离散,老鼠拆成每个时间的,第i个时间第j个老鼠为id[i][j],连接(s,i,p[i]),对于离散后时间(g[j-1]~g[j ...

  7. ThinkSNS+ 是如何计算字符显示长度的

    什么是ThinkSNS+ ThinkSNS(简称TS),一款全平台综合性社交系统,目前最新版本为ThinkSNS+.ThinkSNS V4 ThinkSNS[简]. 今天我们来聊一下可能很多人都会头疼 ...

  8. git clone 指定新建本地库位置

  9. Codeforces Round #561 (Div. 2) A. Silent Classroom

    链接:https://codeforces.com/contest/1166/problem/A 题意: There are nn students in the first grade of Nlo ...

  10. Uva12210-A Match Making Problem

    对于每个数字二分找到大于等于它的数,再暴力找到第一个小于它的数 #include<bits/stdc++.h> #define inf 0x3f3f3f3f ; using namespa ...