【bzoj1704】[Usaco2007 Mar]Face The Right Way 自动转身机 贪心

题目描述

农夫约翰有N(1≤N≤5000)只牛站成一排,有一些很乖的牛朝前站着.但是有些不乖的牛却朝后站着.农夫约翰需要让所有的牛都朝前站着.幸运的是约翰最近买了一个自动转身机.这个神奇的机器能使K(1≤K≤N)只连续的牛转身.  因为约翰从来都不改变K的价值,请帮助他求出K,使旋转次数M达到最小.同时要求出对应的M.

输入

第1行:整数N.
第2行到第N+1行:第i+l行表示牛j的朝向,F表示朝前,B表示朝后.

输出

一行两个数,分别是K和M,中间用空格隔开

样例输入

7
B
B
F
B
F
B
B

样例输出

3 3


题解

贪心,应该不太难想。

先枚举k,然后贪心判断能否全部转过来。每次找到一个,如果没转过来,那么把从它开始连续的k个转过来。如果不够k个,说明不成立。

转的过程需要用到差分数组,注意细节。

#include <cstdio>
#include <cstring>
int v[5001] , r[5001];
char str[5];
int main()
{
    int n , i , j , k , minm = 0x7fffffff , rev , flag , m;
    scanf("%d" , &n);
    for(i = 1 ; i <= n ; i ++ )
        scanf("%s" , str) , v[i] = (str[0] != 'F');
    for(i = 1 ; i <= n ; i ++ )
    {
        rev = 0 , flag = 1 , m = 0;
        memset(r , 0 , sizeof(r));
        for(j = 1 ; j <= n ; j ++ )
        {
            if(v[j] ^ rev)
            {
                if(i + j - 1 > n)
                {
                    flag = 0;
                    break;
                }
                r[j] ^= 1 , r[i + j - 1] ^= 1;
                m ++ ;
            }
            rev ^= r[j];
        }
        if(flag && minm > m)
            minm = m , k = i;
    }
    printf("%d %d\n" , k , minm);
    return 0;
}

转载于:https://www.cnblogs.com/GXZlegend/p/6305675.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值