哪儿错了,救一救

P1001 A+B Problem

这什么东西
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


|