我叫标题
来源:互联网 发布:c语言结构体链表 编辑:程序博客网 时间:2024/04/29 16:35
给定两个 n 维向量 A =(x1,x2,⋯,xn)和 B =(y1,y2,⋯,yn) ,定义它们的点积为
A ⋅B =∑(1≤i≤n)xi⋅yi
对于每个向量,它的每个分量互不相同,而且任意两个分量均可交换位置。
求一种交换策略使得 A 与 B 的点积最小,如果有多种满足条件的交换策略,那么还要使得交换总次数最少。
请你给出交换后 A⋅B的值及最少的交换次数。
输入
第一行包含一个正整数 T ,表示有 T 组测试数据。
接下来依次给出每组测试数据。对于每组测试数据:
第一行包含一个正整数 n ,表示向量维数。
第二行包含 n 个整数,第 i 个整数表示 xi 。
第三行包含 n 个整数,第 i 个整数表示 yi 。
保证在一行中的每个整数互不相等,而且每个整数之间有恰好一个空格,没有其他额外的空格。
1≤T≤100,1≤n≤10^5,0≤|xi|,|yi|≤10^6
很明显正序*倒序答案最小,但是计算交换次数
如果直接想着通过无序数组变有序来计算交换次数的话。。会TLE//一直卡在这部分。。。
但是可以将每个数字xi和yj对应,即xi和xj交换,这样的两个点连上一条边,如果能构成一个环,那么环的长度-1就是这几个点的最少交换次数//脑子转不到这个地方。。。
#include <set>#include <cstring>#include <algorithm>#include <iostream>#include <cstdio>#include <cmath>#include <vector>#define mp make_pair#define pb push_back#define X first#define Y secondusing namespace std;typedef long long LL;const int maxn = 1e5 + 5;int n, m;int f[maxn];bool vis[maxn];struct p { int val, id; bool operator <(p t)const { return val < t.val; }} x[maxn], y[maxn];void init() { int T; scanf("%d", &T); while(T--) { scanf("%d", &n); for(int i = 1; i <= n; i++) { scanf("%d", &x[i].val); x[i].id = i; } sort(x + 1, x + 1 + n); for(int i = 1; i <= n; i++) { scanf("%d", &y[i].val); y[i].id = i; } sort(y + 1, y + 1 + n); LL ans = 0,cnt = 0; for(int i = 1; i <= n; i++){ vis[i] = 0; ans += 1LL * x[i].val * y[n - i + 1].val; f[x[i].id] = y[n-i+1].id; } for(int i=1;i<=n;i++){ if(!vis[i]){ int u = i,circleLength = 0; while(!vis[u]){ vis[u] = 1; u = f[u]; circleLength++; } cnt += circleLength - 1; } } printf("%lld %d\n", ans,cnt); }}int main() {#ifdef LOCAL freopen("in.txt", "r", stdin);#endif // LOCAL init(); return 0;}
1 0
- 我叫标题
- 标题の我也不知道该叫什么
- 就叫我孩子
- 叫我怎么活
- 我叫hdwt
- Java叫我 如何是好
- 祖国我叫钓鱼岛
- c 叫我加油
- 母亲,我叫钓鱼岛
- 我叫MT攻略
- 我叫MT
- 我叫MT online
- 我为什么叫IEKEKE
- 我叫大赢家
- 我叫程序员
- 大王叫我来巡山呐
- 我叫许大方
- 叫我猿猿
- Android 双击退出应用
- LaTeX技巧心得之一:建立参考文献的超链接
- 洛谷 P1597 语句解析
- grub循环 无法启动win10
- JSP的I18N标签
- 我叫标题
- "科林明伦杯"哈尔滨理工大学第六届程序设计团队赛
- Activity之间传递数据的方法总结
- 678.最小K个数之和
- CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)
- 各种排序算法的java实现及时间、空间复杂度、稳定程度总结
- Delphi的菜单加速键
- Add Strings
- PTA数据结构与算法题目集(中文)4-10 二分查找 (20分)