操作 题目描述 点此看题 解法 分裂有点难,但是发现分裂第一堆石子就相当于合并第二堆石子,问题就转化为两堆石子都能合并,最后达到相同的状态。 全部合并成一堆石子答案是 \(n+m-2\),考虑第一堆石子的某个子集和跟第二个子集的某个子集和相等,答案就能减少 \(2\),那么
(int i,int l,int r,int L,int R,int c) { if(L>r || l>R || mx[i]<=c) return ; if(L<=l && r<=R && cx[i]<c) { s[i]++;mx[i]=c; return ; } int mid=(l+r)>>1;down(i); ins(i<<1,l,mid,L,R,c); ins(i<<1|1,mid+1,r,L,R,c); up(i); } int...
C202044zxy Rating 1500 Email 16549695@qq.com QQ Unfilled 格言 访问C202044zxy 的博客 Rating 变化 05:01:18 1100 1200 1300 1400 1500 1600 1700 1800 1900 C202044zxy AC 过的题目:共 0 道题 无
“请看,折木同学,这里就是我的归处,如何?只有水和土地,村民们也日渐衰老。就算山坡上整齐地种着树木,但是商品价值又如何呢?我并不认为这里是最美的地方,也不认为这里充满了机遇,但是...” “我想向折木同学介绍这里。” 昵称:C202044zxy 园龄:4年2个月 粉丝:197 关注:57 +加关注...
{intu=e[i].v,v=e[i^1].v;//考虑的是反向边if(u<=2*n && u>n && v<=n && v>=1&& e[i].c) mp[u-n][v]=mp[v][u-n]=0; }printf("%d\n",m-k);for(inti=1;i<=n;i++)for(intj=0;j<g[i].size();j++)if(i<g[i][j] && mp[i][g[i][j]])printf("%d %d...
#include <cstdio> #include <bitset> #include <cstring> #include <iostream> using namespace std; const int M = 1005; const int N = 1<<16; #define int long long const int MOD = 1e9+7; int read() { int x=0,f=1;char c; while((c=getchar())<'0' || c>'9') {if(c==...
a[q].fa=a[np].fa=nq;for(;p && a[p].ch[c]==q;p=a[p].fa) a[p].ch[c]=nq; } } } 我们一个一个加入字符,所以我们处理的是原串前缀的后缀自动机。但是现在我们叫加入cc之前的字符串为原串,加入cc之后的串为新串,那么npnp其实是整个新串对应的节点,要干的事有两个:把npnp连进图中/...
这篇博客主要记录我的感性理解,相信能帮助你直观地理解BESTBEST定理。 首先对于一条欧拉路径,我们考虑保留每个点的最后一条出边。可以证明出边一定构成一棵内向树,我们只需要证明不会构成环,而如果构成环,考虑走完环的最后一条出边一定会停留在这个点,那么就无法停留在出发点了,这与欧拉路径是矛盾的。
给定一个长度为nn的字符串SS,有mm次询问(x,y)(x,y),问这个串长度为xx的前缀和长度为yy的后缀连接成的新串TT在SS中的出现次数。 n,m≤2⋅105n,m≤2⋅105 二、解法 考虑子串S[l,r]S[l,r]对询问(x,y)(x,y)产生贡献的充要条件是:S[1,x]=S[l,l+x−1]∧S[n−y+1,n]=S[r−...
}intgrow(intx){if(!x||c[x])returnx>0;returngrow(ch[x][0]) && grow(ch[x][1]) && grow(ch[x][2]) && grow(ch[x][3]); }signedmain(){ T=read();while(T--) { m=read(); cnt=rt=0;while(m--) { n=read();for(inti=1;i<=n;i++) ...