矩陣消除遊戲
矩陣消除遊戲
連結:https://ac.nowcoder.com/acm/problem/200190
來源:牛客網
題目描述:
牛妹在玩一個名為矩陣消除的遊戲,矩陣的大小是n行m列,第i行第j列的單元格的權值為ai,j,牛妹可以進行k個回合的遊戲,在每個回合,牛妹可以選擇一行或者選擇一列,然後將這一行或者這一列的所有單元格中的權值變為0,同時牛妹的分數會加上這一行或者這一列中的所有單元格的權值的和。
牛妹想最大化她的得分,球球你幫幫她吧!
示例1:
輸入
3 3 2
101 1 102
1 202 1
100 8 100
輸出
414
解題思路:
二進位制暴力列舉消除sl行,然後選擇最大的k-sl列
AC程式碼
#include <iostream>
#include <algorithm>
#include <string.h>
#include<math.h>
#include <queue>
#include<map>
using namespace std;
typedef long long ll;
#define M 20
int n,m,k;
int a[M][M];
int l[M];
int h[M];
int b[M];
bool cmp(int q,int w)
{
return q>w;
}
int ope(int x)
{
memset(b,0,sizeof(b));
int i=1,ans=0;
while(x)
{
if(x&1)
{
b[i]=1;
ans++;
}
i++;
x>>=1;
}
//cout <<"ans="<<ans<<endl;
return ans;
}
int main()
{
ll maxx=0;
cin >> n >>m>>k;
memset(l,0,sizeof(l));
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
cin >>a[i][j];
l[i]+=a[i][j];
}
}
for(int i=0;i<=((1<<n)-1);i++)//列舉行
{
memset(h,0,sizeof(h));
int sl=ope(i),sh=k-sl;
if(sh<0||sh>m)
continue;
ll sum=0;
for(int j=1;j<=n;j++)
{
if(b[j])
sum+=l[j];
}
for(int k=1;k<=n;k++)
{
for(int j=1;j<=m;j++)
{
if(!b[k])
h[j]+=a[k][j];
}
}
sort(h+1,h+m+1,cmp);
for(int j=1;j<=sh;j++)//選擇最大的sh列
{
sum+=h[j];
}
//cout <<sum<<endl;
maxx=max(maxx,sum);
}
cout <<maxx;
return 0;
}
相關文章
- 高斯消除矩陣矩陣
- 列舉(矩陣消除、七段數碼管)矩陣
- 生成螺旋矩陣(方陣、矩陣)矩陣
- bzoj3240: [Noi2013]矩陣遊戲(矩陣乘法+快速冪)矩陣遊戲
- 鄰接矩陣、度矩陣矩陣
- 巨大的矩陣(矩陣加速)矩陣
- 簡單的傳球遊戲(矩陣)遊戲矩陣
- 奇異矩陣,非奇異矩陣,偽逆矩陣矩陣
- 矩陣矩陣
- 資料結構:陣列,稀疏矩陣,矩陣的壓縮。應用:矩陣的轉置,矩陣相乘資料結構陣列矩陣
- 3D圖形:矩陣的行列式,矩陣的逆、正交矩陣、齊次矩陣3D矩陣
- 矩陣中最大的二維矩陣矩陣
- 求任意矩陣的伴隨矩陣矩陣
- 機器學習中的矩陣向量求導(五) 矩陣對矩陣的求導機器學習矩陣求導
- 矩陣和陣列矩陣陣列
- BZOJ 3240: [Noi2013]矩陣遊戲矩陣遊戲
- [ZJOI2007] 矩陣遊戲矩陣遊戲
- 理解矩陣矩陣
- 矩陣相乘矩陣
- 矩陣分解矩陣
- 稀疏矩陣矩陣
- Numpy 矩陣矩陣
- 穿越矩陣矩陣
- 混淆矩陣矩陣
- 魔方矩陣矩陣
- 海浪矩陣矩陣
- 8.6 矩陣?矩陣
- 螺旋矩陣矩陣
- 找矩陣矩陣
- 矩陣乘法矩陣
- 快手矩陣管理平臺,矩陣管理有方法矩陣
- Wannafly模擬賽 矩陣 二維矩陣hash矩陣
- 趣頭條和快手的「網賺遊戲」矩陣遊戲矩陣
- 矩陣:如何使用矩陣操作進行 PageRank 計算?矩陣
- 演算法學習:矩陣快速冪/矩陣加速演算法矩陣
- 視訊矩陣矩陣
- 矩陣轉置矩陣
- 矩陣樹定理矩陣