您的位置:首页 > 其它

HDU5386 Cover 果然还是暴力

2015-08-18 20:17 253 查看

这么简单纯洁的暴力居然比赛的时候没做出来!我也是醉了!

我们只要每次找一行或一列颜色除了0都相同的,然后如果有对应的操作,就把这行这列都赋值成0即可

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<queue>
#include<vector>
#include<iostream>
#include<string>
#include<set>
#include<map>
#include<algorithm>
using namespace std;
#pragma comment(linker, "/STACK:1024000000,1024000000")
#define nn 1000010
#define ll long long
#define ULL unsiged long long
#define mod 258280327
#define inf oxfffffffffff
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1

////        ((`'-"` `""-'`))
////         ) -  -  (
////        /  (o _ o)  \
////        \  ( 0 )  /
////       _'-.._ '=' _..-'_
////      /`;#'#'#. -. #'#'#;`\
////      \_))   '#'   ((_/
////      #.  ☆ ☆ ☆  .#
////      '#.  求 A C!  .#'
////       /'#.     .#'\
////       _\\'#.   .#'//_
////       (((___)'#'(___)))

//-----------------------------SB-----------------------------------//

int a[110][110],b[550],c[550],ans[550];
char opt[550];
int main()
{
int t,m,n;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
scanf("%d",&a[i][j]);
for(int i=1;i<=m;i++)
{
char ch[2];
scanf("%s%d%d",ch,&b[i],&c[i]);
opt[i]=ch[0];
}
int j;
for(int t=0;t<m;)
{
for(int i=1;i<=m;i++)
if(b[i])
{
int k=b[i];
if(opt[i]=='L')
{
for(j=1;j<=n;j++)
if(a[j][k]&&a[j][k]!=c[i])
break;
if(j>n)
{
ans[++t]=i;
b[i]=0;
for(int j=1;j<=n;j++)
a[j][k]=0;
}
}
else
{
for(j=1;j<=n;j++)
if(a[k][j]&&a[k][j]!=c[i])
break;
if(j>n)
{
ans[++t]=i;
b[i]=0;
for(int j=1;j<=n;j++)
a[k][j]=0;
}
}
}
}
for(int i=m;i>0;i--)
printf("%d ",ans[i]);
//printf("%d\n",ans[1]);
cout<<endl;
}
return 0;
}



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: