这什么东西
by F1aMiR3 @ 2019-05-05 20:19:54
放错了吧..输入明显不是A+B这题呢
by Koakuma @ 2019-05-05 20:23:10
@[卡鹿里](/space/show?uid=199475) 您的N还没定义,连程序都没运行过吧
by Koakuma @ 2019-05-05 20:25:29
您是萌新吧……
by 信赖滴星辰 @ 2019-05-05 20:31:06
这跟A+B有关系吗
by 萌萌哒小女孩 @ 2019-05-05 20:35:51
A+b不是道树剖版题吗?
```cpp
#include<bits/stdc++.h>
using namespace std;
inline int get()//快读
{
int x=0,f=1;char c=getchar();
while(!isdigit(c)) { if(c=='-') f=-1; c=getchar(); }
while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); }
return x*f;
}
const int MaxN=1e5+5;
struct segment_tree {
int l,r;
long long val,add;
#define lson u<<1,l,mid
#define rson u<<1|1,mid+1,r
}n[MaxN<<2];//线段树结构体
struct Edge {
int v,nxt;
}edge[MaxN<<1];//前向星
int head[MaxN],k=1;
long long num[MaxN];
int N,M,R,P;
int seg[MaxN],rev[MaxN],size[MaxN],son[MaxN],top[MaxN],dep[MaxN],father[MaxN];
// 线段树部分开始:
void build(int u,int l,int r)
{
n[u].l=l;
n[u].r=r;
n[u].add=0;
if(l==r)
{
n[u].val=num[rev[l]];
return;
}
int mid=(l+r)>>1;
build(lson);
build(rson);
n[u].val=n[u<<1].val+n[u<<1|1].val;
n[u].val%=P;
}
void pushdown(int u)
{
n[u<<1].add+=n[u].add;n[u<<1].add%=P;
n[u<<1|1].add+=n[u].add;n[u<<1|1].add%=P;
n[u<<1].val+=n[u].add*(n[u<<1].r-n[u<<1].l+1);n[u<<1].val%=P;
n[u<<1|1].val+=n[u].add*(n[u<<1|1].r-n[u<<1|1].l+1);n[u<<1|1].val%=P;
n[u].add=0;
}
void update(int u,int l,int r,int a,int b,long long val)
{
if(l>=a && r<=b)
{
n[u].add+=val;
n[u].val+=val*(r-l+1);
n[u].val%=P;
return;
}
if(n[u].add) pushdown(u);
int mid=(l+r)>>1;
if(a<=mid) update(lson,a,b,val);
if(b>mid) update(rson,a,b,val);
n[u].val=n[u<<1].val+n[u<<1|1].val;n[u].val%=P;
}
long long query(int u,int l,int r,int a,int b)
{
if(a==l&&b==r) return n[u].val;
if(n[u].add) pushdown(u);
int mid=(l+r)>>1;
long long ans=0;
if(b<=mid) ans+=query(lson,a,b);
else if(a>mid) ans+=query(rson,a,b);
else ans=ans+query(lson,a,mid)+query(rson,mid+1,b);
ans%=P;
return ans;
}
// 线段树部分结束
// 树剖开始
inline void addedge(int u,int v) //建单向边
{
edge[k].v=v;
edge[k].nxt=head[u];
head[u]=k++;
}
inline void insert(int u,int v) //建双向边
{
addedge(u,v);
addedge(v,u);
}
inline void dfs1(int u,int f) //第一次dfs
{
size[u]=1;
father[u]=f;
dep[u]=dep[f]+1;
for(register int i=head[u];i;i=edge[i].nxt) {
int v=edge[i].v;
if(v==f) continue;
dfs1(v,u);
size[u]+=size[v];
if(size[u]>size[son[u]]) son[u]=v;
}
}
inline void dfs2(int u,int f) //第二次dfs
{
if(son[u]) {
seg[son[u]]=++seg[0];
rev[seg[0]]=son[u];
top[son[u]]=top[u];
dfs2(son[u],u);
}
for(register int i=head[u];i;i=edge[i].nxt) {
int v=edge[i].v;
if(!top[v]) {
seg[v]=++seg[0];
top[v]=v;
rev[seg[0]]=v;
dfs2(v,u);
}
}
}
void change(int x,int y,int z) {
int fx=top[x],fy=top[y];
while(fx^fy) {
if(dep[fx]<dep[fy]) swap(x,y),swap(fx,fy);
update(1,1,seg[0],seg[fx],seg[x],z);
x=father[fx],fx=top[x];
}
if(dep[x]>dep[y]) swap(x,y);
update(1,1,seg[0],seg[x],seg[y],z);
}
long long ask(int x,int y) {
long long ans=0,fx=top[x],fy=top[y];
while(fx^fy) {
if(dep[fx]<dep[fy]) swap(x,y),swap(fx,fy);
ans+=query(1,1,seg[0],seg[fx],seg[x]);
ans%=P;
x=father[fx],fx=top[x];
}
if(dep[x]>dep[y]) swap(x,y);
ans+=query(1,1,seg[0],seg[x],seg[y]);
ans%=P;
return ans;
}
// 树剖结束
// 主程序开始
inline void init() //预处理
{
N=2;R=1;P=INT_MAX;
num[1]=get(),num[2]=get();
insert(1,2);
dfs1(R,0);
seg[0]=seg[R]=1;
rev[1]=top[R]=R;
dfs2(R,0);
build(1,1,seg[0]);
}
inline void solve() //解答
{
cout<<ask(1,2)<<endl;
}
signed main()
{
init();
solve();
}
//主程序结束
```
by Social_Zhao @ 2019-05-05 20:51:11
你们这些巨佬。。
by Achiles @ 2019-05-05 21:35:18
你直接写a+b不好吗???
```cpp
#include<iostream>
using namespace std;
int main()
{
int a,b;
cin>>a>>b;
cout<<a+b<<endl;
return 0;
}
```
这么写不好吗???
by 冒泡的笨小猴 @ 2019-10-05 20:07:44
#### 直接写不好吗?
```cpp
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int a,b;
cin >> a >> b;
cout << a+b;
return 0;
}
```
by X_r_G @ 2020-02-08 10:24:01