I - Rake It In
Posted 2462478392lee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了I - Rake It In相关的知识,希望对你有一定的参考价值。
题目链接:https://nanti.jisuanke.com/t/A1538
题意:给一个4*4的方阵,k个回合,a和b轮流选一个2*2的矩阵和,a要使和最大,b要使和最小,选完后2*2矩阵要逆时针旋转九十度,a先选,然后求最合理的答案。
思路:因为方阵只有4*4,所以暴力dfs。
#include<cstring> #include<algorithm> #include<vector> #include<map> #include<queue> #include<cstdio> #include<stack> #include<cmath> #include<iostream> #define ll long long #define lowbit(x) x&(-x) #define maxn 1050000 #define inf 0x3f3f3f3f using namespace std; int mp[5][5]; int k; void shun(int x,int y) { int t=mp[x][y]; mp[x][y]=mp[x+1][y]; mp[x+1][y]=mp[x+1][y+1]; mp[x+1][y+1]=mp[x][y+1]; mp[x][y+1]=t; } void ni(int x,int y) { int t=mp[x][y]; mp[x][y]=mp[x][y+1]; mp[x][y+1]=mp[x+1][y+1]; mp[x+1][y+1]=mp[x+1][y]; mp[x+1][y]=t; } int fun(int x,int y) { return mp[x][y]+mp[x+1][y]+mp[x+1][y+1]+mp[x][y+1]; } int dfs(int dep) { if(dep==2*k) { int mi=inf; for(int i=1;i<=3;i++) { for(int j=1;j<=3;j++) { mi=min(mi,fun(i,j)); } } return mi; } if(dep%2==1) { int ma=0; for(int i=1;i<=3;i++) { for(int j=1;j<=3;j++) { ni(i,j); int ans=fun(i,j)+dfs(dep+1); ma=max(ma,ans); shun(i,j); } } return ma; } else { int mi=inf; for(int i=1;i<=3;i++) { for(int j=1;j<=3;j++) { ni(i,j); int ans=fun(i,j)+dfs(dep+1); mi=min(mi,ans); shun(i,j); } } return mi; } } int main() { int t; scanf("%d",&t); while(t--) { scanf("%d",&k); for(int i=1;i<=4;i++) { for(int j=1;j<=4;j++) { scanf("%d",&mp[i][j]); } } int ans=dfs(1); printf("%d ",ans); } }
以上是关于I - Rake It In的主要内容,如果未能解决你的问题,请参考以下文章
附加到 rake db:seed in rails 并在不复制数据的情况下运行它
It's hard to find a topic to fight against, I put what I hate most in my code...Bad enough
svn报错cleanup failed–previous operation has not finished; run cleanup if it was interrupted的解决办法(代码片段
一旦单击带有 in 片段的回收器列表项,如何将片段意向活动,以及如何获取回收器项目值?
What's the difference between @Component, @Repository & @Service annotations in Spring?(代码片段