FZU 2041 Checker (貪心+類比)

來源:互聯網
上載者:User

標籤:acm   演算法   編程   貪心   

題目地址: FZU 2041
這個題是昨天的隊內選拔賽用的套題裡的其中一道題,我當時想到方法了,但是沒敢寫。。一個是對複雜度有些不確定,萬一組數很多的話好像就會跪。。而且感覺不太好實現,隊裡還卡著兩道題,就打算等別的該出的題出了之後再寫,結果沒時間了。。
剛才按照那思路寫了一下。。結果就過了。。。真心醉了。。我&……%¥%**……%%
思路是先枚舉每個空隙,然後對該空隙向左向右貪心的一步步的去移動,剩下的就是小類比了。然後找出所有空隙可能擴大的最大值就可以了。
代碼如下:

#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#include <map>#include <stack>#include <cmath>#define LL __int64#define INF 0x3f3f3f3f#define PI acos(-1)#define eqs 1e-15const int mod = 1e9+7 ;using namespace std ;char s[600];int a[600], cnt;struct node {        int l, r, x;} fei[600];int main(){        int t, n, m, i, j, flag, lstep, rstep, max1, step, Case=0, mm;        scanf("%d",&t);        while(t--) {                scanf("%d%d",&n,&mm);                scanf("%s",s+1);                s[0]=‘1‘;                s[n+1]=‘1‘;                cnt=0;                flag=0;                max1=0;                for(i=0; i<=n+1; i++) {                        if(s[i]==‘1‘) {                                if(flag) {                                        flag=0;                                        fei[cnt].r=i;                                        cnt++;                                }                                fei[cnt].l=i;                                fei[cnt].x=0;                        } else {                                flag=1;                                fei[cnt].x++;                                max1=max(max1,fei[cnt].x);                        }                }                for(i=0; i<cnt; i++) {                        m=mm;                        for(j=0; j<=n+1; j++) {                                a[j]=s[j]-‘0‘;                        }                        while(m) {                                lstep=INF;                                for(j=fei[i].l; j>=0; j--) {                                        if(!a[j]) {                                                lstep=fei[i].l-j;                                                break;                                        }                                }                                rstep=INF;                                for(j=fei[i].r; j<=n+1; j++) {                                        if(!a[j]) {                                                rstep=j-fei[i].r;                                                break;                                        }                                }                                step=min(lstep,rstep);                                if(m<step) {                                        max1=max(fei[i].x,max1);                                        break;                                }                                m-=step;                                fei[i].x++;                                if(lstep<=rstep) {                                        a[fei[i].l]=0;                                        a[fei[i].l-step]=1;                                        fei[i].l--;                                } else {                                        a[fei[i].r]=0;                                        a[fei[i].r+step]=1;                                        fei[i].r++;                                }                                if(!m) {                                        max1=max(max1,fei[i].x);                                        break;                                }                        }                }                printf("Case %d: %d\n",++Case,max1);        }        return 0;}

FZU 2041 Checker (貪心+類比)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.