NC219734. 写春联
描述
输入描述
多组输入,每组输入包括三行。第一行一个字符串 s ()。
第二行一个数字 n (),表示操作数。
第三行 n 个数字(
)。
对于多组数据,保证。
输出描述
对于每组输入输出一行,如果全部操作得到的是回文串,输出 Yes ;否则,输出 No 。
示例1
输入:
abc 4 1 3 -2 -2 acd 4 1 3 -2 -3
输出:
Yes No
C++(clang++11) 解法, 执行用时: 287ms, 内存消耗: 8036K, 提交时间: 2021-03-20 18:54:11
#include <bits/stdc++.h> using namespace std; string s; bool solve() { int n; cin>>n; vector<int>a(n); for(int i=0; i<n; ++i) cin>>a[i]; bool flag = true; for(int i=0; i<(int)s.length()/2; ++i) if(s[i]!=s[(int)s.length()-1-i]) flag = false; if(flag) return flag; flag = true; int l=0,r=n-1; while(l<=r) { if(a[l]*a[r]>0) { flag = false; break; } if(abs(a[l])==abs(a[r])) --r,++l; else if(abs(a[l])>abs(a[r])) a[l]+=a[r],--r; else a[r]+=a[l],++l; } return flag; } signed main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); while (cin>>s) { if(solve()) cout<<"Yes\n"; else cout<<"No\n"; } return 0; }