我是靠谱客的博主 乐观爆米花,最近开发中收集的这篇文章主要介绍Rake It In,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Rake It In

题意

给一个4×4矩阵。两个人选择一个2×2矩阵,第一个人每次都选择一个矩阵使得和的最终答案尽可能大,第二个人每次都选择一个矩阵使得和的最终答案尽可能小,每个人选择完之后该区域会进行一次逆时针90的翻转。

难点

自己刚做的时候以为是签到。。。
直接上来写了个翻转函数然后暴力求最大最小值,发现最后答案偏小了,才发现如果大小相等的情况下,选择不同的区域也跟后面的选择有关系,所以得用搜索,
才做过基础搜索的我碰到这个稍微难一点的就顶不住了。。也忘记回溯。。。。。反正就不说了 菜的抠脚

做法

暴力肯定还是暴力,因为数据很小的原因

每次都暴力进行一个区域的翻转,然后去BFS下一个人的操作,直至结束,然后回溯,把这个区域翻转回来,再进行别的区域的翻转,然后BFS下一个人…………

AC代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<bitset>
#include<cstdlib>
#include<cmath>
#include<set>
#include<list>
#include<deque>
#include<queue>
#include<map>
#define ll long long
#define pb push_back
#define rep(x,a,b) for (int x=a;x<=b;x++)
#define repp(x,a,b) for (int x=a;x<b;x++)
#define W(x) printf("%dn",x)
#define WW(x) printf("%lldn",x)
#define pi 3.14159265358979323846
#define mem(a,x) memset(a,x,sizeof a)
#define lson rt<<1,l,mid
#define rson rt<<1|1,mid+1,r
using namespace std;
const int maxn=2e6+7;
const int INF=1e9;
const ll INFF=1e18;
int a[7][7];
int k;
void change(int i,int j)
{
int tmp=a[i][j];
a[i][j]=a[i][j+1];
a[i][j+1]=a[i+1][j+1];
a[i+1][j+1]=a[i+1][j];
a[i+1][j]=tmp;
}
void get_back(int i,int j)
{
int tmp=a[i][j];
a[i][j]=a[i+1][j];
a[i+1][j]=a[i+1][j+1];
a[i+1][j+1]=a[i][j+1];
a[i][j+1]=tmp;
}
int get_sum(int i,int j)
{
return a[i][j]+a[i+1][j]+a[i+1][j+1]+a[i][j+1];
}
int dfs(int num)
{
if (num==2*k)
//特判:最后一步比较特殊,就直接找最小值就可以了,也不用什么花里胡哨的了
{
int ans=INF;
rep(i,1,3)
rep(j,1,3)
ans=min(ans,get_sum(i,j));
return ans;
}
if (num%2==1)
{
int maxx=0;
rep(i,1,3)
{
rep(j,1,3)
{
change(i,j);
maxx=max(maxx,get_sum(i,j)+dfs(num+1));
get_back(i,j);//回溯
}
}
return maxx;
}
else if (num%2==0)
{
int minn=INF;
rep(i,1,3)
{
rep(j,1,3)
{
change(i,j);
minn=min(minn,get_sum(i,j)+dfs(num+1));
get_back(i,j);//回溯
}
}
return minn;
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&k);
rep(i,1,4)
rep(j,1,4)
scanf("%d",&a[i][j]);
W(dfs(1));
}
return 0;
}

最后

以上就是乐观爆米花为你收集整理的Rake It In的全部内容,希望文章能够帮你解决Rake It In所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部