分类信息网站开发需求方案,搜索引擎优化seo什么意思,长乐市建设局网站,橙色网站模板题面 最小支配集全集-最大独立集 所以先把点权改成正无穷/负无穷来保证强制选/不选某个点到独立集里#xff0c;然后变成了洛谷的动态DP模板 GTMDNOIP2018ZTY 1 #includestack2 #includecstdio3 #includecstring4 #includealgorithm5 using n…题面 最小支配集全集-最大独立集 所以先把点权改成正无穷/负无穷来保证强制选/不选某个点到独立集里然后变成了洛谷的动态DP模板 GTMDNOIP2018ZTY 1 #includestack2 #includecstdio3 #includecstring4 #includealgorithm5 using namespace std;6 const int N100005,M200005,inf1e9;7 int siz[N],far[N],imp[N],top[N],lst[N];8 int p[N],noww[M],goal[M],val[N],dfn[N]; 9 int n,m,t1,t2,t3,t4,t5,t6,cnt,tot; 10 char typ[5]; long long sum;11 struct a12 {13 long long mat[2][2];14 void Clean()15 {16 memset(mat,0,sizeof mat);17 }18 }seg[4*N],tre[N];19 a Matime(a x,a y)20 {21 a ret; ret.Clean();22 for(int i0;i2;i)23 for(int j0;j2;j)24 for(int k0;k2;k)25 ret.mat[i][j]max(ret.mat[i][j],x.mat[i][k]y.mat[k][j]);26 return ret;27 }28 void Link(int f,int t)29 {30 noww[cnt]p[f];31 goal[cnt]t,p[f]cnt;32 noww[cnt]p[t];33 goal[cnt]f,p[t]cnt;34 }35 void DFS(int nde,int fth)36 {37 int tmp0;38 siz[nde]1,far[nde]fth;39 for(int ip[nde];i;inoww[i])40 if(goal[i]!fth)41 {42 DFS(goal[i],nde);43 siz[nde]siz[goal[i]];44 if(siz[goal[i]]tmp)45 tmpsiz[goal[i]],imp[nde]goal[i];46 }47 }48 void Mark(int nde,int tpp)49 {50 dfn[nde]tot,top[nde]tpp;51 if(imp[nde])52 {53 Mark(imp[nde],tpp);54 for(int ip[nde];i;inoww[i])55 if(goal[i]!imp[nde]goal[i]!far[nde])56 Mark(goal[i],goal[i]);57 }58 lst[nde]imp[nde]?lst[imp[nde]]:nde;59 }60 a Query(int nde,int l,int r,int ll,int rr)61 {62 if(lllrrr)63 return seg[nde];64 else 65 {66 int mid(lr)/2,ls2*nde,rs2*nde1;67 if(midllmidrr)68 return Matime(Query(rs,mid1,r,ll,rr),Query(ls,l,mid,ll,rr));69 if(midrr) return Query(ls,l,mid,ll,rr);70 if(midll) return Query(rs,mid1,r,ll,rr);71 }72 }73 void Modify(int nde,int l,int r,int pos,a tsk)74 {75 if(lr) seg[nde]tsk;76 else77 {78 int mid(lr)/2,ls2*nde,rs2*nde1;79 if(posmid) Modify(ls,l,mid,pos,tsk);80 else Modify(rs,mid1,r,pos,tsk);81 seg[nde]Matime(seg[rs],seg[ls]);82 }83 }84 void Prework(int nde)85 {86 stackint st;87 for(int inde;i;iimp[i]) st.push(i);88 while(!st.empty())89 {90 int tnst.top(); st.pop();91 long long x0,yval[tn];92 for(int ip[tn];i;inoww[i])93 if(goal[i]!imp[tn]goal[i]!far[tn])94 {95 Prework(goal[i]); a mtrtre[goal[i]];96 xmax(mtr.mat[0][0],mtr.mat[0][1]),ymtr.mat[0][0];97 }98 a tmp; tmp.mat[0][0]tmp.mat[1][0]x,tmp.mat[0][1]y,tmp.mat[1][1]-inf;99 Modify(1,1,n,dfn[tn],tmp);
100 }
101 tre[nde]Query(1,1,n,dfn[nde],dfn[lst[nde]]);
102 }
103 void Change(int nde,long long tsk)
104 {
105 a tmpQuery(1,1,n,dfn[nde],dfn[nde]);
106 tmp.mat[0][1]tsk-val[nde];
107 Modify(1,1,n,dfn[nde],tmp),val[nde]tsk;
108 for(int itop[nde];i!1;itop[i])
109 {
110 int fafar[i];
111 a tmpQuery(1,1,n,dfn[fa],dfn[fa]),tepQuery(1,1,n,dfn[i],dfn[lst[i]]);
112 tmp.mat[0][0]max(tep.mat[0][0],tep.mat[0][1])-max(tre[i].mat[0][0],tre[i].mat[0][1]);
113 tmp.mat[0][1]tep.mat[0][0]-tre[i].mat[0][0],tmp.mat[1][0]tmp.mat[0][0];
114 Modify(1,1,n,dfn[fa],tmp),tre[i]tep,ifa;
115 }
116 }
117 int main()
118 {
119 scanf(%d%d%s,n,m,typ);
120 for(int i1;in;i)
121 scanf(%d,val[i]),sumval[i];
122 for(int i1;in;i)
123 scanf(%d%d,t1,t2),Link(t1,t2);
124 DFS(1,0),Mark(1,1),Prework(1);
125 while(m--)
126 {
127 scanf(%d%d%d%d,t1,t2,t3,t4);
128 if(!t2!t4(far[t1]t3||far[t3]t1))
129 printf(-1\n);
130 else
131 {
132 t5val[t1],t6val[t3];
133 Change(t1,t2?-inf:inf);
134 Change(t3,t4?-inf:inf);
135 a qryQuery(1,1,n,1,dfn[lst[1]]);
136 long long anssum-max(qry.mat[0][0],qry.mat[0][1]);
137 printf(%lld\n,ans(inf-t5)*(t2^1)(inf-t6)*(t4^1));
138 Change(t1,t5),Change(t3,t6);
139 }
140 }
141 return 0;
142 } View Code 转载于:https://www.cnblogs.com/ydnhaha/p/10278280.html