//第一题int p;int dis(int p1, int p2) { return abs(p1 - p2) + abs(p2 - p);}int main() { int n; cin >> n >> p; vector<int>per(n), good(n); for (int i = 0; i < n; i++) { cin >> per[i]; } for (int i = 0; i < n; i++) { cin >> good[i]; } sort(per.begin(), per.end()); sort(good.begin(), good.end()); int ret = 0; for (int i = 0; i < n; i++) { ret += dis(per[i], good[i]); } cout << ret << endl; return 0;}//第二题int main() { int n; cin >> n; int color, type, know; vector<vector<int>>v(n,vector<int>(3)); for (int i = 0; i < n; i++) { cin >> color; v[i][0] = color; } for (int i = 0; i < n; i++) { cin >> type; v[i][1] = type; } for (int i = 0; i < n; i++) { cin >> know; v[i][2] = know; } sort(v.begin(), v.end(), [](const vector<int>& a, const vector<int>& b) { return a[2] > b[2]; }); set<pair<int, int>>dic; int ret = 0; for (int i = 0; i < n; i++) { auto p = make_pair(v[i][0], v[i][1]); if (dic.count(p)) { ret += v[i][2] / 2; } else { dic.insert(p); ret += v[i][2]; } } return ret;}//第三题:n个西瓜,p为优质品的概率。每个人从左到右购买,求优质x标准最大为多少,保证每一个人买到优质品的概率均大于p。double p;bool isValid(vector<int>&nums, int t, int id) { int n = nums.size(),len = n; double pp = 0; int positive = n - id; for (int i = 0; i < n; i++) { if (nums[i] < t) { pp = positive * 1.0 / len--; } else if (nums[i] >= t) { pp = (positive-- )*1.0/ len--; } if (pp < p)return false; } return true;}int main() { int n; cin >> n >> p; vector<int>a(n); for (int i = 0; i < n; i++) { cin >> a[i]; } vector<int>nums = a; sort(a.begin(),a.end()); int ret = 0; //遍历a for (int i = 0; i < n; i++) { if (isValid(nums, a[i], i)) { ret = a[i]; } else { break; } } cout << ret << endl; return 0;}//第四题:小红拿到了一个正方形矩阵,她准备从左上角走到右下角,小红每走一步可以向右或向下走一步。她想知道,有多少不同路径满足路径和的元素恰好等于x?//dfs+回溯int n, x, ret = 0;vector<vector<bool>>visited;void dfs(vector<vector<int>>& a, int i, int j, int sum) { if (i >= n || j >= n || visited[i][j] == true)return; visited[i][j] = true; sum += a[i][j]; if (i == n - 1 && j == n - 1 && sum == x) { ret++;//不return回溯,return后面就走不到visited[i][j] = false;这个格子仍被标记为true; } dfs(a, i, j + 1, sum); dfs(a, i + 1, j, sum); visited[i][j] = false;}int main() { cin >> n >> x; vector<vector<int>>a(n, vector<int>(n)); visited = vector<vector<bool>>(n, vector<bool>(n, false));//先初始化visited for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { cin >> a[i][j]; } } dfs(a, 0, 0, 0); cout << ret << endl; return 0;}