bzoj 1704: [Usaco2007 Mar]Face The Right Way 自动转身机【贪心+差分】
首先O(n^3)的贪心很好想,就是枚举k然后从前往后扫,扫到反就翻转区间
然后考虑优化掉翻转区间维,就是搞成差分的形式,在翻转区间的尾部打上标记,再用一个变量维护当前的翻转次数,加到当前状态上来判断是否需要翻转即可
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=5005;
int n,a[N],b[N],ans=1e9,sum,f[N];
char s[5];
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%s",s);
		if(s[0]=='B')
			a[i]=1;
	}
	for(int k=1;k<=n;k++)
	{
		memset(f,0,sizeof(f));
		int su=0,pd=1,t=0;
		for(int i=1;i<=n-k+1;i++)
		{
			if((a[i]+t)&1==1)
				f[i+k-1]++,t^=1,su++;
			if(f[i])
				t^=1,f[i]=0;
		}
		for(int i=n-k+2;i<=n;i++)
		{
			if((a[i]+t)&1==1)
				pd=0;
			if(f[i])
				t^=1;
			f[i]=0;
		}
		if(pd&&su<ans)
			ans=su,sum=k;
	}
	printf("%d %d\n",sum,ans);
	return 0;
}
bzoj 1704: [Usaco2007 Mar]Face The Right Way 自动转身机【贪心+差分】的更多相关文章
- BZOJ 1704: [Usaco2007 Mar]Face The Right Way 自动转身机( 贪心 )
		贪心...先枚举k, 然后从左往右扫一遍, 发现位置p的牛的状态不符合就将 [p, p + k ) 的牛都转身, 假如p + k - 1 已经超过了最右边牛的位置那这个k就不符合要求. 符合要求的就可 ... 
- 【BZOJ】1704: [Usaco2007 Mar]Face The Right Way 自动转身机
		[题意]n头牛,一些向前一些向后,每次可以使连续k头牛转身,求使旋转次数最小的k. [算法]贪心 [题解]这题题解很迷,大概思想是k没有单调性,故枚举k,从左到右扫描遇到一只向后的牛就旋转一次. 贪心 ... 
- 【bzoj1704】[Usaco2007 Mar]Face The Right Way 自动转身机  贪心
		题目描述 农夫约翰有N(1≤N≤5000)只牛站成一排,有一些很乖的牛朝前站着.但是有些不乖的牛却朝后站着.农夫约翰需要让所有的牛都朝前站着.幸运的是约翰最近买了一个自动转身机.这个神奇的机器能使K( ... 
- [bzoj1704][Usaco2007 Mar]Face The Right Way 自动转身机_贪心
		Face The Right Way 自动转身机 bzoj-1704 Usaco-2007 Mar 题目大意:不想描述题意系列++... ...题目链接 注释:略. 想法:我们直接枚举k,然后从左往右 ... 
- BZOJ1704: [Usaco2007 Mar]Face The Right Way 自动转身机
		n<=5000个数0或1,每次可以连续对固定长度区间取反,目标把所有1变0,求一个取反区间的固定长度K使取反次数最少. 答案关于K不单调,因此枚举K,对每个K扫一遍区间,遇到1就把连续K个数反转 ... 
- bzoj 1637: [Usaco2007 Mar]Balanced Lineup
		1637: [Usaco2007 Mar]Balanced Lineup Time Limit: 5 Sec Memory Limit: 64 MB Description Farmer John ... 
- Bzoj 1703: [Usaco2007 Mar]Ranking the Cows 奶牛排名  传递闭包,bitset
		1703: [Usaco2007 Mar]Ranking the Cows 奶牛排名 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 323 Solved ... 
- BZOJ 1639: [Usaco2007 Mar]Monthly Expense 月度开支( 二分答案 )
		直接二分答案然后判断. ----------------------------------------------------------------------------- #include&l ... 
- BZOJ 1637: [Usaco2007 Mar]Balanced Lineup( sort + 前缀和 )
		将 0 变为 -1 , 则只需找区间和为 0 , 即前缀和相同的最长区间 , 记录一下每个前缀和出现的最早和最晚的位置 , 比较一下就 OK 了 --------------------------- ... 
随机推荐
- Lucene实现全文检索的流程
			[索引和搜索流程图] 对要索引的原始内容进行索引构建一个索引库,索引过程包括:确定原始内容即要搜索的内容->采集文档->创建文档->分析文档->索引文档. 从索引库中搜索内容, ... 
- 关于java对于大数处理的相关程序和用法
			<span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; l ... 
- 利用express启一个server服务
			安装express $ npm install express --save 在node.js中,我们最常用的框架就是express Express 是一个基于 Node.js 平台的极简.灵活的 w ... 
- 【NOIP2017练习】怎样打好隔膜(贪心,堆,带删除priority_queue)
			题意:OI大师抖儿在夺得银牌之后,顺利保送pku.这一天,抖儿问长者:“我的手速虽然已经站在了人类的巅峰,但是打隔膜还是输.我换了很多队友,但是没有用.请问应该怎样打好隔膜?”长者回答:“你啊,Too ... 
- SOJ 3531_Number Pyramids
			[题意]给定一个数top及最底层元素个数n,构成一个以给top为塔尖,层数为n的如杨辉三角的金字塔,求有多少种 [分析]最终种数其实只与最底层的n个数的组合数有关,上层的每个都数是由最底层数相加得来 ... 
- BitMap算法 .net实现  用于去重并且排序,适用于大型权限管理 ,大数据去重排序
			BitMap利用byte特性 针对排序+去重 最佳实践: 100万条数据的排序+去重用时200毫秒左右 static void Main(string[] args) { ]; /*alias*/ ... 
- Servlet中操作数据库
			以下内容引用自http://wiki.jikexueyuan.com/project/servlet/database-access.html: 前提先新建数据库及插入模拟数据: create tab ... 
- Servlet的HTTP状态码
			以下内容引用自http://wiki.jikexueyuan.com/project/servlet/http-status-codes.html: HTTP请求的格式和HTTP响应消息的格式是相似的 ... 
- POJ3977 Subset 折半枚举
			题目大意是给定N个数的集合,从这个集合中找到一个非空子集,使得该子集元素和的绝对值最小.假设有多个答案,输出元素个数最少的那个. N最多为35,假设直接枚举显然是不行的. 可是假设我们将这些数分成两半 ... 
- 优雅的在React项目中使用Redux
			概念 首先我们会用到哪些框架和工具呢? React UI框架 Redux 状态管理工具,与React没有任何关系,其他UI框架也可以使用Redux react-redux React插件,作用:方便在 ... 
