反转法_Face The Right Way(POJ.3276)
来源:互联网 发布:中公教育网络课程 编辑:程序博客网 时间:2024/06/06 03:56
题目链接:http://poj.org/problem?id=3276
题意:给定n头牛的朝向,每次反转k头牛,使得所有牛的朝向都为F,输出反转次数最小时的k和m(一定有解)
思路:同一个区间反转 两次及以上是多余的,区间反转的顺序对结果没影响
#include <cstdio>#include <iostream>#include <string.h>using namespace std;#define INF 0x3f3f3f3fint dir[5050]={0};int fz[5050]={0};int n;int face(int k){ int sum=0; int ans=0; memset(fz,0,sizeof(fz)); //注意每次调用face函数都要重置fz for(int i=0;i<n-k+1;i++) { if((dir[i]+sum)%2!=0) { fz[i]=1; ans++; } sum+=fz[i]; if(i-k+1>=0) { sum-=fz[i-k+1]; } } for(int i=n-k+1;i<n;i++) { if((dir[i]+sum)%2!=0) return -1; if(i-k+1>=0) { sum-=fz[i-k+1]; } } return ans;}void solve(){ int m=INF; int ans=0; int k; for( k=1;k<=n;k++) { if(face(k)!=-1 && face(k)<m) { m=face(k); ans=k; } } printf("%d %d\n",ans,m);}int main(){ cin>>n; for(int i=0;i<n;i++) { char tmp; getchar(); scanf("%c",&tmp); if(tmp=='B') dir[i]=1; else dir[i]=0; } solve(); return 0;}
0 0
- 反转法_Face The Right Way(POJ.3276)
- POJ 3276 Face The Right Way 反转
- poj 3276--Face The Right Way(反转)
- poj 3276 Face the right way(反转)
- POJ 3276 Face The Right Way(反转)
- POJ 3276 Face The Right Way 反转问题 常用技巧
- POJ 3276 Face The Right Way(反转问题)
- poj 3276Face The Right Way—反转(开关问题)
- POJ 3276 Face The Right Way 反转(开关问题)
- pOJ 3276 Face The Right Way【思维 反转开关】
- POJ 3276 Face The Right Way (反转)
- poj 3276 Face The Right Way 挑战150 反转
- 反转(开关)问题(Face the right way POJ NO.3276)
- 150_反转(开关问题) Face the right way (POJ No.3276)
- POJ 3276 Face The Right Way(一维反转问题)
- POJ - 3276/USACO - Mar07 Gold Face The Right Way 尺取法+反转
- POJ 3276 Face The Right Way [反转 (贪心)] 《挑战程序设计竞赛》 3.2
- poj 3276 Face The Right Way
- Entity Framework 的事务 DbTransaction
- NFS服务器搭建 unbuntu
- openfire muc 移除成员
- 转载的socks4 socks5 rfc1928一大堆
- EntityClient 介绍
- 反转法_Face The Right Way(POJ.3276)
- layui里的上传控件问题
- ObjectQuery查询及方法
- 界面侧滑
- Python做图像识别和应用
- 实现performSelector 传递多个参数
- 5.1. ApplicationContext的事件机制
- 文章标题
- Linux下内存使用分析思路