這幾天做的題,DP雖然可能較水

來源:互聯網
上載者:User


Codeforces Round #145 (Div. 2, ACM-ICPC Rules)

C. Weath

水,暴力確定正數的起點,有DP的手法計算消耗即可

#include<stdio.h>#define eps 1e8#define LMT 1000005//知道這題很弱。//你要先選擇一個正數的起點,然後會有各種消耗,算消耗是可以用DPint temp[LMT],dp[LMT],rdp[LMT];int main(void){    freopen("input.txt","r",stdin);   freopen("output.txt","w",stdout);    int i,n,ans;    scanf("%d",&n);    for(i=0;i<n;i++)    {        scanf("%d",&temp[i]);        if(i>0)            dp[i]=dp[i-1]+(temp[i-1]>=0);    }    ans=eps;    for(i=n-1;i>=0;i--)    {        rdp[i]=rdp[i+1]+(temp[i]<=0);        dp[i]+=rdp[i];       if(i>0)        ans=dp[i]>ans?ans:dp[i];    }    printf("%d\n",ans);    return 0;}

Codeforces
Round #143 (Div. 2) B. Magic, Wizardry and Wonders

#include<stdio.h>/*注意這種只有去一種的題,用怪想法。讓A[I]取值範圍最寬極端取值法,最好K為0,這樣什麼都不用管了,要儘可能長久的取到某數,貪心,遞推能力不夠*/int main(void){    int a[105];    int n,l,d,i;    scanf("%d%d%d",&n,&d,&l);    for(i=1;i<n;i++)    {        if(d>0)a[i]=l;        else a[i]=1;        d=a[i]-d;    }    a[n]=d;    if(a[n]<=0||a[n]>l)printf("-1\n");    else    {        for(i=1;i<=n;i++)        printf("%d ",a[i]);        printf("\n");    }    return 0;}

Codeforces Round #139 (Div. 2) C.
Barcode


基本DP,確定最長與最短無後效性的位置,黑白相間段落的基本技能

#include<stdio.h>#include<string.h>#define LMT 1002//往後指,確定長度,黑白段DPint sum[LMT][2],dp[LMT][2];int main(){    int n,m,x,y,i,j;    char c;    memset(dp,-1,sizeof(dp));    scanf("%d%d%d%d",&n,&m,&x,&y);getchar();    sum[0][1]=sum[0][0]=0;    for(i=1;i<=n;i++)    {      for(j=1;j<=m;j++)      {          c=getchar();          if(c=='.')           sum[j][0]++;          else sum[j][1]++;      }      getchar();    }    for(i=1;i<=m;i++)    {        sum[i][1]+=sum[i-1][1];        sum[i][0]+=sum[i-1][0];    }    dp[0][0]=dp[0][1]=0;    for(i=x;i<=m;i++)//寫主體的時候不要前功盡棄...       for(j=i-x;j>=0&&j>=i-y;j--)       {           if(dp[j][1]!=-1)           {              if(dp[j][1]+sum[i][0]-sum[j][0]<dp[i][0]||dp[i][0]==-1)                 dp[i][0]=dp[j][1]+sum[i][0]-sum[j][0];           }           if(dp[j][0]!=-1)           {               if(dp[j][0]+sum[i][1]-sum[j][1]<dp[i][1]||dp[i][1]==-1)                   dp[i][1]=dp[j][0]+sum[i][1]-sum[j][1];           }       }       printf("%d\n",dp[m][1]>dp[m][0]?dp[m][0]:dp[m][1]);       return 0;}

Codeforces Round #135 (Div. 2)  C.
Color Stripe

其實一開始的想法是對的,主要沒有考慮兩種顏色的情況

#include<stdio.h>#define LMT 500005char s[LMT];int n,k,p1,p2;//注意對小資料的檢查//貪心就是亂搞int main(void){    int i;    scanf("%d%d%s",&n,&k,s);    if(k==2)    {        for(i=0;i<n;i++)        {            if(s[i]-'A'!=i%2)p1++;            else p2++;        }        printf("%d\n",p1<p2?p1:p2);        if(p1>p2)        for(i=0;i<n;i++)printf("%c",'A'+(i+1)%2);        else for(i=0;i<n;i++)printf("%c",'A'+i%2);        printf("\n");    }    else    {        int ans=0;        for(i=2;i<n;i++)        {            if(s[i-2]==s[i-1])            {                s[i-1]='A';                while(s[i-1]==s[i]||s[i-2]==s[i-1])s[i-1]++;                ans++;            }        }        if(s[n-2]==s[n-1])        {            s[n-1]='A';            while(s[n-2]==s[n-1])s[n-1]++;            ans++;        }        printf("%d\n%s\n",ans,s);    }    return 0;}

Codeforces Round #135 (Div. 2)A.
k-String


#include<iostream>#include<string>using namespace std;//純暴力手法,沒有想象力啊,跟蹤解法...//如果兩個字串直接有公用元素,那麼,把他們聯合起來,那個元素在任何位置都可以符合題意//記得聯合法//隨意暴力出一個元素,然後進行配對,有C++寫吧,被跪類..string s,s1,s2;int jud(int i,int time){    int p,t;    for(p=0;p<=i;p++)      for(t=1;t<time;t++)//這個字串裡最多可以承受幾個元素,t<time代表有time個        if(s[p]!=s[p+t*(i+1)])            return 0;      return 1;}int main(void){    cin>>s1>>s2;    int i,j,ans,l1=s1.size(),l2=s2.size();    s=s1+s2;    i=0;ans=0;    while(i<l1&&i<l2)    {        if(l1%(i+1)==0&&l2%(i+1)==0)        {            j=(l1+l2)/(i+1);            if(jud(i,j))ans++;        }        i++;    }    cout<<ans<<endl;    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.