sample input
7bbfbfb
b
sample output
3 3
窮舉肯定是要超時的 2^n個狀態...但是先思考一些規律吧:
1、轉動奇數次,必然與初始方向相反;
2、轉動偶數次,必然與初始方向相同;
列舉k:1-n,得到o(n^3)的**:(這個**會超時,只是模擬而已)
//tle o(n^3)
#include #include #include #include using namespace std;
#define maxn 5005
int s[maxn];
int n;
int test(int k)
for(i=n-k+1;i=0)
sum-=f[i-k+1];
}//if(!s[i])
// return -1;
return ans;
}int main()
{ int i,len,kmin,m,mmin,k;
char cow[maxn];
while(scanf("%d",&n)!=eof)
{memset(s,0,sizeof(s));
mmin = maxn;
m=-1;
for(i=0;i=0&&m
poj3276 反轉 開關問題
題目大意 給你乙個長度為n的字串,包含字母f和b 你可以把區間k 乙個常數 內的所有f變成b,b變成f。為了把這個字串都變成f,求變化的最小次數和其對應的k的值 分析 挑戰程式設計競賽 反轉法的例題,此做法非書上做法 列舉k,對於每個k,只要序列最左端的b變成f,然後依次變化,得到答案 列舉起點然後...
poj3276(開關問題)
可算明白了.bbfbfbb 我們到達第三個f,我們需反轉。標記一下在3出反轉了 vis 3 1 對以後的影響是 1.用sum記載影響程度即sum 1 我們到達第四個,雖然是b,但是收到前面影響 sum 1 也就是變成f了。我們需要反轉。標記vis 4 1.sum再 1.即sum 2 也就是第五個會受...
POJ 3276 開關問題
題目鏈結 題目大意 有一些牛,頭要麼朝前要麼朝後,現在要求確定乙個連續反轉牛頭的區間k,使得所有牛都朝前,且反轉次數m盡可能小。解題思路 首先不要看錯題意了,不是求最小k,不要二分。而且反轉區間長度一定是k,小於k是不能反轉的。很明顯得列舉k 1.n 並且有以下反轉思路 從第一頭牛開始,如果朝前,不...