Text Edior 中间值+枚举

codeforce 253C Text Edior
  题目大意,在一个TXT编译器中,命令从光标起始点s到终点e的最小距离,定义向右、向左到最后时不会换行,最顶层不能再向上移动、最底层不能向下移动。如果光标在A行最后,向邻近B行移动,但是B行字数小于A行,光标将移动到B行末尾。
  题目思路:寻找中间行(并非在是S与E中间),且与起点对齐(如果中间没有最后特殊情况的话,否则缩进)。答案就是中间行到起点和到终点的纵列距离之和,加上与终点的横行距离。

//核心代码
int slove()
{
    for(int i=1;i<=n;i++){
        up=min(i,min(r1,r2));
        down=max(i,max(r1,r2));
        col=c1;
        for(int j=up;j<=down;j++){
            col=min(col,a[j]+1);
        }
        int anss=abs(c2-col)+abs(i-r1)+abs(i-r2);
        ans=min(ans,anss);
    }
    return ans;
}

这道题带来的收获,如果某问题直接不容易求解,可将其转化为另一个简单问题求解,化繁为简思想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值