CSU1691-Where is the Boundary-模拟

W: Where is the Boundary

Description

img

Input

img

Output

img

Sample Input

2 1
WE

Sample Output

1 2

这个题目就是找一条中线使这条线左边的E和右边的W和最小,如果有多条取左边的

然后思路看代码吧

#include <bits/stdc++.h>
#define N 10100
#define INF 0x3f3f3f3f
#define LL long long
#define mem(a,n) memset(a,n,sizeof(a))
#define fread freopen("in.txt","r",stdin)
#define fwrite freopen("out.txt","w",stdout)
//char mp[N][110];
int E[N],W[N];
using namespace std;
int main()
{
    ios::sync_with_stdio(false);
    int row,col,en,wn,pos,cnt;
    char temp;
    while(cin>>col>>row){
//      mem(mp,0);
        for(int i=0;i<=col+1;++i){
            E[i]=W[i]=0;
        }
        for(int i=0;i<row;++i){
            for(int j=1;j<=col;++j){
                cin>>temp;
                if(temp=='W'){
                    ++W[j];
                }else if(temp=='E'){
                    ++E[j];
                }
            }
        }
//      for(int i=0;i<=col+1;++i){
//          cout<<E[i]<<' ';
//      }cout<<endl;
//      for(int i=0;i<=col+1;++i){
//          cout<<W[i]<<' ';
//      }cout<<endl;
        for(int i=1;i<=col+1;++i){
            E[i]+=E[i-1];
        }
        for(int i=col;i>=0;--i){
            W[i]+=W[i+1];
        }
//      for(int i=0;i<=col+1;++i){
//          cout<<E[i]<<' ';
//      }cout<<endl;
//      for(int i=0;i<=col+1;++i){
//          cout<<W[i]<<' ';
//      }cout<<endl;
        cnt=INF;
        for(int i=0;i<=col;++i){
            if(E[i]+W[i+1]<cnt){
                pos=i;
                cnt=E[i]+W[i+1];
//              cout<<i<<' '<<cnt<<endl;
            }
        }
        cout<<pos<<' '<<pos+1<<endl;
    }
    return 0;
}


/**********************************************************************
    Problem: 1691
    User: CSUzick
    Language: C++
    Result: AC
    Time:52 ms
    Memory:1768 kb
**********************************************************************/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值