int n; int days[2000], offsetDay[2000]; //string ansLeft[2000], ansRight[2000];
void PrientAns() { for (int i = 0; i < n; i++) { int left = 0, right = 0;
if (offsetDay[i] == 0) { //没有偏移 left = 0; right = days[i]; } else if (-offsetDay[i] >= days[i]) { //偏移量大于目标天数,可以所有感染向左 left = -days[i]; right = 0; } else { //偏移量小于目标天数,感染需要向右分布部分 left = offsetDay[i]; right = days[i] + offsetDay[i]; }
cout << left << " " << right << endl; } }
int main() { cin >> n; int count = 0, index = 0; int tempNum;
int t, n, g[1601][1601], j, i, x[1601], h[1601], p;
intmain() { cin >> t; while (t > 0) { t--; cin >> n; for (int i = 1; i <= n; i++) for (j = 1; j <= n; j++) { cin >> g[i][j]; x[i + j] = g[i][j]; h[g[i][j]]++; } for (p = 1; p <= 2 * n; p++) { if (h[p] == 0) x[1] = p; h[p] = 0; } for (p = 1; p <= 2 * n; p++) { cout << x[p] << " "; } cout << endl; } }
D. Tung Tung Sahur
输入示例:
1 2 3 4 5 6 7 8 9 10 11
5 R RR LRLR LRLR LR LLLR LLLLLRL LLLLRRLL LLRLRLRRL LLLRLRRLLRRRL
输出示例:
1 2 3 4 5
YES YES NO NO YES
题目解析:如果按照递归模拟的思路去做时间复杂度应该过不了,就不考虑这个办法了。这里参考了用另一种思路,先定义输入的字符串为s1和s2,s1,我们以示例中的第四个输入为例子,LLLLLRL为s1,以LLLLRRLL为s2,需要将s1和s2按照L和R分割,将s1分割成LLLLL、R、L,分别为x、y、z,将s2分割成LLLL、RR、LL,这三段分别为,a、b、c。如果a和x的关系为a >= x && a <= x * 2则对b和y判断,全部通过则为yes,否则为no。