• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
ACM s1124yy
守りたいものが 強くさせること
博客园    首页    新随笔    联系   管理     

Codeforces Round #363 (Div. 2) One Bomb

One Bomb

题意:

只有一个炸弹,并且一个只能炸一行和一列的‘*’,问最后能否炸完所以‘*’,如果可以输出炸弹坐标

题解:

这题做的时候真的没什么好想法,明知道b题应该不难,但只会瞎写,最后越写越乱,我就放弃了。看了题解,果然还是我不行。。。
首先枚举一遍,记录总‘*'数,和每行,每列的‘*’数,之后再枚举一遍,看是否一行一列的‘*’数和总‘*'数相等,如果是,那就是答案,如果没有,就是NO。

代码:

include <bits/stdc++.h>

using namespace std;

typedef long long ll;
const int INF=0x3f3f3f3f;
const ll LINF=0x3f3f3f3f3f3f3f3f;
#define PI(A) cout<<A<<endl
#define SI(N) cin>>N
#define SII(N,M) cin>>N>>M
#define cle(a,val) memset(a,(val),sizeof(a))
#define rep(i,b) for(int i=0;i<(b);i++)
#define Rep(i,a,b) for(int i=(a);i<=(b);i++)
#define reRep(i,a,b) for(int i=(a);i>=(b);i--)
#define dbg(x) cout <<#x<<" = "<<x<<endl
#define PIar(a,n) rep(i,n)cout<<a[i]<<" ";cout<<endl;
#define PIarr(a,n,m) rep(aa,n){rep(bb, m)cout<<a[aa][bb]<<" ";cout<<endl;}
const double EPS= 1e-9 ;

/* ///////////////////////// C o d i n g S p a c e ///////////////////////// */

const int MAXN= 1000 + 9 ;

string s[MAXN];
int a[MAXN],b[MAXN];
int N,M;

int main()
{
iostream::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
while(SII(N,M))
{
cle(a,0);
cle(b,0);
rep(i,N) SI(s[i]);
ll wall=0;
rep(i,N)
{
rep(j,M)
if (s[i][j]'*')
{
wall++;
a[i]++;
b[j]++;
}
}
bool fl=0;
int ax=0,ay=0;
rep(i,N)
{
rep(j,M)
{
ll ans=a[i]+b[j]-(s[i][j]
'*'?1:0);
if (ans==wall)
{
fl=1;
ax=i,ay=j;
}
}
}
if(fl)
{
puts("YES");
printf("%d %d\n",ax+1,ay+1);
}
else puts("NO");
}
return 0;
}

posted @ 2016-08-01 18:31  s1124yy  阅读(164)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3