上海韵茵网站建设,线上培训平台,wordpress插件怎么使用,湖南二维码标签报价正题 题目大意 ansians_iansi表示包含字符iii的括号匹配子串个数
求∑i1n(ansi∗imodThinSpace;ThinSpace;(1e97))\sum_{i1}^n(ans_i*i\mod (1e97))i1∑n(ansi∗imod(1e97)) 解题思路
计算出每个匹配括号的前一个括号位置和后一个括号位置。 一个差分数组 先…正题 题目大意
ansians_iansi表示包含字符iii的括号匹配子串个数
求∑i1n(ansi∗imodThinSpace;ThinSpace;(1e97))\sum_{i1}^n(ans_i*i\mod (1e97))i1∑n(ansi∗imod(1e97)) 解题思路
计算出每个匹配括号的前一个括号位置和后一个括号位置。 一个差分数组 先计算加的其实对于每一些同级括号差分数组就按顺序从1到kkkk表示括号个数 减的同理 举个例子
sss((()))((()))endendendaddaddadd10200reducereducereduce00102codecodecode
#includecstdio
#includealgorithm
#includecstring
#includestack
#define ll long long
using namespace std;
const ll XJQ1e97,N1e610;
char s[N];
stackint ss;
ll n,t,last[N],next[N],r[N],l[N],sum[N],ans;
int main()
{scanf(%lld,t);while(t--){scanf(%s,s1);ans0;memset(l,0,sizeof(l));memset(r,0,sizeof(r));memset(last,0,sizeof(last));memset(next,0,sizeof(next));memset(sum,0,sizeof(sum));while(!ss.empty()) ss.pop();nstrlen(s1);for(ll i1;in;i)if(s[i]() ss.push(i);else if(!ss.empty()){last[i1]ss.top();next[ss.top()]i1;ss.pop();}for(ll in1;i1;i--){r[i];r[last[i]]r[i];}for(ll i0;in;i){l[i]--;l[next[i]]l[i];}for(ll i1;in;i)sum[i]sum[i-1]l[i]r[i],anssum[i]*i%XJQ;printf(%lld\n,ans);}
}