在文件 acwing.cpp 第 2703 行定义.
2703 {
2705 ops = vector<char>();
2706 forth = vector<pair<int, int>>();
2707 back = vector<pair<int, int>>();
2709 forth.emplace_back(0, 0);
2710 for(
int i = 0; i <
n; i++) {
2713 case 'U': {
2715 break;
2716 }
2717 case 'D': {
2719 break;
2720 }
2721 case 'L': {
2723 break;
2724 }
2725 case 'R': {
2727 break;
2728 }
2729 }
2730 }
2732 if(
forth.back().first ==
a &&
forth.back().second ==
b) {
2733 cout << 0;
2734 return 0;
2735 }
2736 if(
n < abs(
a) + abs(
b) || (
n - (abs(
a) + abs(
b))) % 2 != 0) {
2737 cout << -1;
2738 return 0;
2739 }
2741 for(
int i =
n - 1; i >= 0; i--) {
2743 case 'U': {
2744 back.emplace_back(
back.back().first,
back.back().second - 1);
2745 break;
2746 }
2747 case 'D': {
2748 back.emplace_back(
back.back().first,
back.back().second + 1);
2749 break;
2750 }
2751 case 'L': {
2752 back.emplace_back(
back.back().first + 1,
back.back().second);
2753 break;
2754 }
2755 case 'R': {
2756 back.emplace_back(
back.back().first - 1,
back.back().second);
2757 break;
2758 }
2759 }
2760 }
2762 int l = 1;
2764 while(l < r) {
2765 const int mid = (l + r) / 2;
2767 r = mid;
2768 } else {
2769 l = mid + 1;
2770 }
2771 }
2772 cout << l;
2773 return 0;
2774 }
bool check(int len) const
引用了 a, b, back, check(), forth, n , 以及 ops.