题目链接:https://www.nowcoder.com/practice/335acafb6d5141b7873c4b0f24d53c57?tpId=101&tqId=33195&tPage=1&rp=1&ru=/ta/programmer-code-interview-guide&qru=/ta/programmer-code-interview-guide/question-ranking
题目大意:
略。
分析:
代码如下:
1 #include
2 using namespace std;
3
4 #define INIT() ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
5 #define Rep(i,n) for (int i &#61; 0; i <(int)(n); &#43;&#43;i)
6 #define For(i,s,t) for (int i &#61; (int)(s); i <&#61; (int)(t); &#43;&#43;i)
7 #define rFor(i,t,s) for (int i &#61; (int)(t); i >&#61; (int)(s); --i)
8 #define ForLL(i, s, t) for (LL i &#61; LL(s); i <&#61; LL(t); &#43;&#43;i)
9 #define rForLL(i, t, s) for (LL i &#61; LL(t); i >&#61; LL(s); --i)
10 #define foreach(i,c) for (__typeof(c.begin()) i &#61; c.begin(); i !&#61; c.end(); &#43;&#43;i)
11 #define rforeach(i,c) for (__typeof(c.rbegin()) i &#61; c.rbegin(); i !&#61; c.rend(); &#43;&#43;i)
12
13 #define pr(x) cout <<#x <<" &#61; " <
16 #define LOWBIT(x) ((x)&(-x))
17
18 #define ALL(x) x.begin(),x.end()
19 #define INS(x) inserter(x,x.begin())
20 #define UNIQUE(x) x.erase(unique(x.begin(), x.end()), x.end())
21 #define REMOVE(x, c) x.erase(remove(x.begin(), x.end(), c), x.end()); // 删去 x 中所有 c
22 #define TOLOWER(x) transform(x.begin(), x.end(), x.begin(),::tolower);
23 #define TOUPPER(x) transform(x.begin(), x.end(), x.begin(),::toupper);
24
25 #define ms0(a) memset(a,0,sizeof(a))
26 #define msI(a) memset(a,0x3f,sizeof(a))
27 #define msM(a) memset(a,-1,sizeof(a))
28
29 #define MP make_pair
30 #define PB push_back
31 #define ft first
32 #define sd second
33
34 template
35 istream &operator>>(istream &in, pair
36 in >> p.first >> p.second;
37 return in;
38 }
39
40 template
41 istream &operator>>(istream &in, vector
42 for (auto &x: v)
43 in >> x;
44 return in;
45 }
46
47 template
48 ostream &operator<<(ostream &out, vector
49 Rep(i, v.size()) out <
50 return out;
51 }
52
53 template
54 ostream &operator<<(ostream &out, const std::pair
55 out <<"[" <
56 return out;
57 }
58
59 inline int gc(){
60 static const int BUF &#61; 1e7;
61 static char buf[BUF], *bg &#61; buf &#43; BUF, *ed &#61; bg;
62
63 if(bg &#61;&#61; ed) fread(bg &#61; buf, 1, BUF, stdin);
64 return *bg&#43;&#43;;
65 }
66
67 inline int ri(){
68 int x &#61; 0, f &#61; 1, c &#61; gc();
69 for(; c<48||c>57; f &#61; c&#61;&#61;&#39;-&#39;?-1:f, c&#61;gc());
70 for(; c>47&&c<58; x &#61; x*10 &#43; c - 48, c&#61;gc());
71 return x*f;
72 }
73
74 template<class T>
75 inline string toString(T x) {
76 ostringstream sout;
77 sout << x;
78 return sout.str();
79 }
80
81 inline int toInt(string s) {
82 int v;
83 istringstream sin(s);
84 sin >> v;
85 return v;
86 }
87
88 //min <&#61; aim <&#61; max
89 template
90 inline bool BETWEEN(const T aim, const T min, const T max) {
91 return min <&#61; aim && aim <&#61; max;
92 }
93
94 typedef unsigned int uI;
95 typedef long long LL;
96 typedef unsigned long long uLL;
97 typedef vector<int > VI;
98 typedef vector<bool > VB;
99 typedef vector<char > VC;
100 typedef vector<double > VD;
101 typedef vector<string > VS;
102 typedef vector
103 typedef vector
104 typedef vector
105 typedef vector
106 typedef vector
107 typedef vector
108 typedef vector
109 typedef pair<int, int > PII;
110 typedef pair
111 typedef pair<int, string > PIS;
112 typedef pair<string, int > PSI;
113 typedef pair<string, string > PSS;
114 typedef pair<double, double > PDD;
115 typedef vector
116 typedef vector
117 typedef vector
118 typedef vector
119 typedef vector
120 typedef map<int, int > MII;
121 typedef unordered_map<int, int > uMII;
122 typedef map
123 typedef map<string, int > MSI;
124 typedef map<int, string > MIS;
125 typedef multiset<int > mSI;
126 typedef multiset<char > mSC;
127 typedef set<int > SI;
128 typedef stack<int > SKI;
129 typedef deque<int > DQI;
130 typedef queue<int > QI;
131 typedef priority_queue<int > PQIMax;
132 typedef priority_queue<int, VI, greater<int > > PQIMin;
133 const double EPS &#61; 1e-8;
134 const LL inf &#61; 0x7fffffff;
135 const LL infLL &#61; 0x7fffffffffffffffLL;
136 const LL mod &#61; 1e9 &#43; 7;
137 const int maxN &#61; 1e5 &#43; 7;
138 const LL ONE &#61; 1;
139 const LL evenBits &#61; 0xaaaaaaaaaaaaaaaa;
140 const LL oddBits &#61; 0x5555555555555555;
141
142 int N, M, ans;
143 string str;
144 // dp[i]表示str[0~i-1]以str[i - 1]结尾的最长有效长度
145 int dp[maxN];
146
147 int main() {
148 //freopen("MyOutput.txt","w",stdout);
149 //freopen("input.txt","r",stdin);
150 //INIT();
151 cin >> str;
152 N &#61; str.size();
153 dp[0] &#61; 0;
154
155 For(i, 1, N) {
156 if(str[i - 1] &#61;&#61; &#39;)&#39;) {
157 int tmp &#61; i - 2 - dp[i - 1];
158 if(tmp >&#61; 0 && str[tmp] &#61;&#61; &#39;(&#39;) {
159 dp[i] &#61; dp[i - 1] &#43; 2 &#43; dp[tmp];
160 }
161 }
162 ans &#61; max(ans, dp[i]);
163 }
164
165 cout <
166 return 0;
167 }