poj3276 反转 挑战程序设计竞赛
生活随笔
收集整理的這篇文章主要介紹了
poj3276 反转 挑战程序设计竞赛
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
2018-2-8
翻轉(zhuǎn)奇數(shù)次與翻轉(zhuǎn)一次的效果是一樣的,
翻轉(zhuǎn)偶數(shù)次與不翻轉(zhuǎn)的效果是一樣的。
假設(shè)我們已知k的大小了,那么我們至少需要多少次操作呢?對于第一個奶牛來說,如果它的方向不正確,它只能由以第一個為首的連續(xù)的k個數(shù)的翻轉(zhuǎn)來改變,這樣我們可以依次往下看。。。
TLE的問題還未解決。。。
可以在翻轉(zhuǎn)這上面進(jìn)行處理,如果說某一個的翻轉(zhuǎn)為奇數(shù)次,那么就等同于翻轉(zhuǎn)一次,如果說翻轉(zhuǎn)偶數(shù)次,那么就等同于不進(jìn)行翻轉(zhuǎn)。
#include<iostream> #include<cstring> using namespace std;const int N = 5000; bool x[N+2],y[N+2]; int n,k,m;int turn(int p){int cnt=0;memcpy(y,x,sizeof(x));for (int i=1;i<=n-p+1;i++){if (y[i]){for (int j=0;j<p;j++){y[i+j]=!y[i+j];}cnt++;if (cnt>=m) return N;}}for (int i=n-p;i<=n;i++){if (y[i]) return -1;}return cnt; }int main(){while (cin>>n){char t;for (int i=1;i<=n;i++){cin>>t;if (t=='B') x[i]=1;else x[i]=0;}k=N;m=N;for (int i=1;i<=n;i++){int now=turn(i);if (now!=-1&&now<m){k=i;m=now;}}cout<<k<<" "<<m<<endl;}return 0; } 新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎!定制產(chǎn)品紅包拿不停!總結(jié)
以上是生活随笔為你收集整理的poj3276 反转 挑战程序设计竞赛的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哥斯拉Godzilla Shell管理工
- 下一篇: 从Spring Boot信息泄露到AWS