概述
传送门
一道卡时爆搜好题(正解想不出来)
注意:以下代码不保证能通过此题,交之前请先洗把脸谢谢
code:
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 20;
const int INF = 2000000000;
int n, f[MAXN][4]; // friends
int b[MAXN], pos[MAXN];
bitset<MAXN> used;
int min1;
int read() {
int res = 0;
int get = getchar();
while(!isdigit(get))
get = getchar();
while(isdigit(get)) {
res = res * 10 + get - '0';
get = getchar();
}
return res;
}
inline void generate() {
used.reset();
int a = rand() % n + 1;
for(int i = 1; i <= n; i ++) {
while(used[a]) {
a = rand() % n + 1;
}
used[a] = 1;
b[i] = a;
pos[a] = i;
}
}
int ans;
inline void check() {
ans = 0;
for(int i = 1; i <= n; i ++) {
for(int j = 1; j <= 3; j ++) {
ans += abs(pos[f[b[i]][j]] - i);
}
}
min1 = min(min1, ans);
}
int main() {
srand(time(0));
min1 = INF;
n = read();
for(int i = 1; i <= n; i ++) {
f[i][1] = read();
f[i][2] = read();
f[i][3] = read();
}
int c = clock();
while(clock() - c <= 0.995 * CLOCKS_PER_SEC) {
generate();
check();
}
cout<<min1 / 2<<endl;
return 0;
}
最后
以上就是粗心天空为你收集整理的P2210 Haywire(乱搞)的全部内容,希望文章能够帮你解决P2210 Haywire(乱搞)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复