题意:
给定一个由0123456789+* ?组成的表达式,其中?可以被改为任意其它字符,问修改问号后是否有方案使得表达式合法
len<=5e2,sumlen<=1e5
思路:
1 #include <stdio.h> 2 #include <math.h> 3 #include <stdlib.h> 4 #include <string.h> 5 #include <string> 6 #include <algorithm> 7 #include <iostream> 8 #include <ctype.h> 9 #include <limits.h> 10 #include <set> 11 #include <map> 12 #include <vector> 13 #include <stack> 14 #include <queue> 15 #include <list> 16 #define left (now<<1) 17 #define right ((now<<1)+1) 18 #define mid ((l+r)>>1) 19 #define fst first 20 #define snd second 21 using namespace std; 22 typedef long long lint; 23 24 const int MAXN = 5e2 + 10; 25 26 char str[MAXN]; 27 int n; 28 bool ok[MAXN]; 29 30 void init(){ 31 for(int i = 0; i < MAXN; ++i){ 32 str[i] = '