poj 3276 Face the right way(反转)

Distinct题解 DescribeDaniel 正在玩一个战棋游戏。 现在Daniel 有n 队士兵站在x 轴上。第i 队士兵有ai 人,坐标为xi。 Daniel 看到一队士兵有这么多人,都站在同一个位置,他对此很不满意。他想命令一些士兵移动到新的位置(必须是整点),使得不存在两个士兵站在同一个位置。 阅读详情

题目链接:点击打开链接


可以先将问题缩小化,假设K是确定的,如果第一个牛的方向有问题,那么从这个牛开始到后面K个牛的方向必须反转,反之这个区间必须不能反转,这样第二个牛的状态也知道了,也就确定了第2个牛到第K+1个牛是否需要反转。一直递推下去,当剩余牛数小于K时,判断一下这些牛是不是都是方向向前的,如果不是说明这个K不合法,如果是就知道这个K对应的最少反转次数。

这样用上面的算法枚举K,如果当前K合法就更新最少反转次数。

代码:

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

int a[5005];
int f[5005];
int N;

int solve(int K){
    //cout<<'K'<<K<<endl;
    memset(f,0,sizeof(f));
    int cur=0;
    int res=0;
    for(int i=1;i<=N-K+1;i++){
        if((cur+a[i])%2){
            res++;
            f[i]=1;
            //cout<<i<<endl;
        }
        cur+=f[i];
        if(i-K>=0){
            cur-=f[i-K+1];
        }
    }
    for(int i=N-K+2;i<=N;i++){
        if((a[i]+cur)%2){
            return -1;
        }
        cur+=f[i];
        if(i-K>=0){
            cur-=f[i-K+1];
        }
    }
    return res;
}


int main(){
    scanf("%d",&N);
    for(int i=1;i<=N;i++){
        char c[2];
        scanf("%s",c);
        if(c[0]=='B'){
            a[i]=1;
        }
    }
    int M,K;
    int Min=10000000,res;
    for(K=1;K<=N;K++){
        int tmp=solve(K);
        if(tmp==-1) continue;
        if(tmp<Min){
            Min=tmp;
            res=K;
        }
    }
    printf("%d %d",res,Min);
    return 0;
}




POJ3276—Face The Right Way 【常用技巧—反转(开关问题)】 Face The Right Way Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 5944 Accepted: 2749 Description Farmer John has arranged his N (1 ≤ N ≤ 5,000) cows in a row and many o 阅读详情

相关推荐

POJ 3276 Face The Right Way(开关,反转)详解(尺取+枚举两种做法)

Face The Right Way Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4410   Accepted: 2045 Description Farmer John has arranged his N (1 ≤ N ≤ 5,000) cows in

K键盘里的青春K 1801

poj3276 Face The Right Way 反转

http://poj.org/problem?id=3276 #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;cstring&gt; using namespace std; const int maxn=5005; int n; int dir[maxn];//牛的方向(0:F,1:B) int f[maxn...

skykone1的博客 184

变邻域搜索(VNS)原理梳理和应用细节-附求解VRPTW问题C++代码

文章目录1、简介-introduction2、VNS的基本机制2.1 变邻域下降方法-Variable Neighborhood Descent2.2基本变邻域搜索方法-Basic Variable Neighborhood Search2.3 终止准则3、VNS的拓展和混杂算法3.1 VNS的拓展3.2 变邻域分解搜索-Variable Neighborhood Decomposition Search3.3 偏变邻域搜索-Skewed VNS3.4 并行变邻域搜索-Parallel VNS4、VNS和其

dragon Fly的博客 6826

POJ 3276 Face The Right Way 反转

有N(1

qq_53038151的博客 208

ubuntu 24.04安装ros1 noetic

上面是参考链接给的修改内容。除了上面要修改的地方,我在编译的生活还有一个地方报错,修改成如下形式。因为我已经对文件rosconsole_log4cxx.cpp作了上面的修改,所有是不是188行不太确认了,如果报“log4cxx::spi::LocationInfo”问题,按照下面修改就可以了。我在编译时还报了一个问题,就是我之前安装的是jazzy。所以在编译时会报ros变量名不对,这时对变量名做修改就可以了。具体怎么修改,百度。a、将源文件中所有CMakelist中编译标准改为c++ 17.

yangpan011的博客 3200

AI Agent技术架构与规模化应用:2025年技术深度解析

2025年,AI Agent(人工智能智能体)迎来了规模化应用的拐点时刻。根据Gartner等权威机构预测,企业软件中整合自主型AI的比例将从2024年的不足1%跃升至2028年的33%。本文深入剖析AI Agent的核心技术架构,从规划模块、记忆模块、工具调用模块到底层实现原理,结合Python和Go语言的实际代码示例,全面阐述AI Agent的技术实现路径。同时,本文探讨多智能体协作系统、企业级部署架构以及未来的技术演进方向,为开发者和技术决策者提供系统性的技术参考。关键词:AI Agent、大语言模型

shao.bing的专栏 1348

POJ3276 Face The Right Way--反转问题初学

Face The Right Way Time Limit:2000MS Memory Limit:65536K Total Submissions:3061 Accepted:1412 Description Farmer John has arranged hisN(1 ≤N≤ 5,000...

184

【Verilog模块例化全解析:从入门到精通】

本文详细解析了Verilog模块例化的核心概念与方法。主要内容包括: 模块定义与例化的基本概念,强调模块例化会生成独立硬件电路; 两种端口连接方式:位置映射(按顺序连接)和名称映射(按端口名连接),推荐使用名称映射提高可读性; 参数化例化方法,通过parameter实现可配置模块设计; 多层模块嵌套的实战应用,展示复杂设计的层次化实现。 文章通过2位加法器等代码示例,对比分析了不同例化方式的优缺点,为硬件设计中的模块复用提供了实用指导。重点推荐名称映射和参数化设计方法,以提高代码可维护性和设计灵活性。

m0_58476824的博客 1326

POJ 3276 Face The Right Way 反转(开关问题)

Face The Right Way Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 3797   Accepted: 1750 Description Farmer John has arranged his N (1 ≤ N ≤ 5,000) cows in a

MADE_Y 1014

基于FMCW技术的毫米波雷达测速原理与应用

调频连续波(FMCW)技术是毫米波雷达中实现高精度测速的核心方法之一。本文详细介绍了FMCW测速的基本原理、信号处理流程以及在实际应用中的关键技术。通过分析FMCW雷达的多普勒效应和频率差测量方法,本文展示了如何利用FMCW技术实现目标速度的高精度检测。此外,本文还探讨了FMCW测速在自动驾驶、智能交通和工业自动化等领域的应用案例,为毫米波雷达开发者提供了理论支持和实践指导。

不谈枯燥公式,只聊雷达趋势。用大白话解读毫米波里的黑科技。 1137

通过傅里叶变换进行音频变声变调

在游戏或者一些特殊场景下为了提高娱乐性或者保护声音的特征,我们会对音频进行变声变调处理。

yang1fei2的博客 1815

poj3276Face The Right Way(反转开关问题)

原题地址:http://poj.org/problem?id=3276 题意:n头牛,每头牛要么面朝前方或者面朝后方。现在可以连续驱使连续的k头牛反转。求使得所有的牛面朝前方的最小操作数和对应的k是多少? (PS:这题区间的两端值需要仔细思考,尤其需要注意从0到i-1计数和从1到i计数是不一样) 题解:挑战上的开关问题,给了两种方法,一种是复杂度为O(n^3)的,这种就不多讲了。终点介绍一下优...

yiqzq的博客 478

RK3588平台开发系列讲解(项目篇)常见模型结构

📢 AI 模型常采用人工神经网络来模拟人脑神经的记忆和处理信号的能力。常见的人工神经网络类型有深度神经网络(Deep Neural Network,DNN)、卷积神经网络(Convolutional Neural Network,CNN)、循环神经网络(Recurrent Neural Network,RNN)等。

内核笔记 1756

【反转问题】POJ - 3276 Face The Right Way

Problem Description N头牛排成了一列。每头牛或者向前或者向后。为了让所有的牛都面向前方,农夫约翰买了一台自动转向的机器。这个机器在购买时就必须设定一个数值K,机器每操作一次恰好使K头连续的牛转向。请求出为了让所有牛都能面向前方需要的最少的操作次数M和对应的最小的K。 思路: 首先交换区间反转的顺序对结果是没有影响的,此外,可以知道对同一个区间进行两次以上的反转是多余的。

ACMer 梁剑锋 的博客 256

【存算一体架构实战】四、突破编译壁垒:手把手实现AI模型到存算硬件的自动映射

摘要:存算一体硬件的性能优势难以充分释放,核心瓶颈在于传统编译器无法高效适配"计算-存储融合"的新型架构。本文系统剖析传统编译流程在存算硬件上的三大痛点:数据布局不匹配导致90%带宽浪费、算子映射效率低使硬件利用率不足30%、缺乏专用优化_pass导致延迟居高不下。通过构建MLIR-PIM编译框架,实现从AI模型到存算硬件的全自动化映射,核心流程包括:TensorFlow模型→MLIR Dialect转换→存算优化_pass→硬件指令生成。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 241

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

poj3276 Face The Right Way(反转 开关问题)

原题链接:poj3276 Face The Right Way 题意:N头牛有的头向前有的头向后(F代表向前,B代表向后),每次只能让连续的K头牛方向反转,求:让所有的牛头向前,用的最少次数M和对应的最小K 输入:N 及每头牛的状态 输出:K M //思路:从最左边开始找是B,就需要反转i到i+k-1的位置(把第i项先反转为F) //一直找到i=n-k+1处,之后判断从n-k+2

anchorite 1334

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

POJ 3276 Face The Right Way(反转问题)

Face The Right Way Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 3493 Accepted: 1614 Description Farmer John has arranged h

Chunzhen的博客 1218

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【POJ】3276 - Face The Right Way 反转

http://poj.org/problem?id=3276题意:N头牛排成一列1<=N<=5000。每头牛或者向前或者向后。为了让所有牛都面向前方,农夫每次可以将K头连续的牛转向1<=K<=N,求操作的最少次数M和对应的最小K。由于交换区间翻转顺序对结果没影响,所以从左往右对于需要翻转的牛进行反转,同时记录对该区间其他牛的影响即cal中的sum,对于最后部分无法翻转的区间检查是否有反向牛,若有则方

西瓜不甜的博客 337

poj 3276 Face The Right Way 挑战150 反转

http://poj.org/problem?id=3276题意:给你n头牛,牛有B,F两种状态,每次能使连续的k头牛状态变反,,求最小的操作次数m及其对应的最小k;分析:反转问题,建模很关键,记得f[i]表示第i 头牛是否需要反转,sum表示i之前的牛反转的次数对其的影响;一个sum可以降低复杂度,由0(n^3)降为o(n^2);#include#include #include #includ

smilesundream的博客 428

反转(开关)问题(Face the right way POJ NO.3276)

老农民有N头牛, 每头牛或者朝前或者朝后。 为了让所有的牛都朝前,  买了一台自动转向机(真是蛋疼), 这台机器需要人为的设置一个值K, 这样没操作一次, 恰好使得K头连续的牛转向。 求出为了让所有的牛都能面向前方需要的最少的操作次数M, 并进而确定与之对应的K值。  限制条件: 1 Sample input(F表示面向前方, B表示面向后方): N = 7 BBFBFBB输出: K =

a130737的专栏 1137

POJ 3276 Face The Right Way(一维反转问题)

http://poj.org/problem?id=3276 反转两次等于没有反转,反转的次序是无关的。假设所有的格子进行一系列反转操作以后都变成F,那么可以把这一系列操作等价为,按照格子从左到右,每个区间反转1次或者不反转。对于最左边的格子,可以确定到底是反转还是不反转,然后再考虑下一个格子。 #include #include #include #include #include

Muya 269

POJ 3276 Face The Right Way(反转)

Description n头牛站成线,有朝前有朝后的的,然后每次可以选择大小为k的区间里的牛全部转向,会有一个最小操作m次使得它们全部面朝前方。问:求最小操作m,再此基础上求k Input 第一行一个整数n表示牛数,之后n行每行一个字母表示牛的朝向,F表示朝前,B表示朝后 Output 输出k和m Sample Input 7 B B F B F B B Sample

ZSQ 748

Face The Right Way(反转问题)POJ- 3276

题目链接 https://vjudge.net/problem/POJ-3276题意:让n头牛 以k为区间进行反转 求最小的反转次数m和此时对应的k值。思路:区间为k,从第一个往后遍历,如果遇到面向反的,翻转次数加一,整个区间都反转,区间第一个反转的f[i]变为1,用于说明这个区间已经反转,如果遇到反方向的则继续实行,每次到这个区间的区间尾,要减去一开始的f[i-k+1] ,注意sum记录的是这个...

天空蓝的猪圈 552
上一篇: poj 3061 Subsequence(尺取法)
下一篇: poj 2785 4 Values whose Sum is 0(双向搜索)
Baoli1008
博客等级 码龄12年 70粉丝 293原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值