Codeforces Beta Round #64

來源:互聯網
上載者:User

A題:http://www.codeforces.com/contest/70/problem/A

 

【題意】

一個2^n+2^n個相同格子組成的正方形,要求在主對角線左下方地區填方塊,方塊的形狀見題目樣本吧,問最終填完方塊後,最多剩下多少個沒有填方塊的格子;

 

【分析】

其實這題異常簡單,可是比賽時候開始卡了,結果到1個半小時後才發現;很悲劇!

n=0, ==》 1

n=1, ==> 1

n=2, ==>3

n=3,==>9

...

找到規律就是3的倍數,對於每一個輸入的n直接一個迴圈就可以ac,可我居然這麼久之後才ac;注意要模數;

 

【代碼】

/*Mar30,2011 11:30:03AM yimao A-Cookies GNU C++ Accepted 30ms 1400KB*/<br />#include<stdio.h><br />#include<iostream><br />#include<algorithm><br />#include<string.h><br />#include<stdlib.h><br />#include<math.h><br />#include<vector><br />#include<map><br />#include<set><br />#include<functional><br />#define eps (1e-8)<br />#define pi (acos(-1.0))<br />#define stop while(1);<br />#define lowbit(x) (x&(-x))<br />#define maxint INT_MAX<br />#define maxlong 0xFFFFFFFFFFFFFFFLL<br />#define mod 1000003<br />using namespace std;<br />int main()<br />{<br /> int n,i,s;<br /> while(cin>>n)<br /> {<br /> if(n<2) { puts("1"); continue; }<br /> n-=1;<br /> s=1;<br /> while(n--) s*= 3, s%=mod;<br /> cout<<s<<endl;<br /> }<br />}

 

B題:http://www.codeforces.com/contest/70/problem/B

【題意】

      給定一行話,由正式的英文格式寫成,僅有'.' , '?' , '!'來作為一句話的結尾;然後是給定一個n,要求把該行話分割成若干段,每段長度不超過n,問最少能發成幾段,要求一句話不能分割,如果兩句話要連在一起,則中間的空格需要保留;

 

【分析】

這題很容易錯,思路是先把句子長度處理出來儲存到單獨的一個數組,那麼接下來我們要做的就是把若干個段分成若干部分,每部分長度不超過n,很容易想到DP,這題需要貪心,具體怎麼證明我也不會能ac就行,代碼裡細節還是蠻多的,算是一個水題,簡單的;

 

【代碼】

 /*Mar30,2011 12:45:26PM yimao B-Text Messaging GNU C++ Accepted 30ms 1400KB*/<br />//http://www.codeforces.com/contest/70/problem/B<br />#include<stdio.h><br />#include<iostream><br />#include<algorithm><br />#include<string.h><br />#include<stdlib.h><br />#include<math.h><br />#include<vector><br />#include<map><br />#include<set><br />#include<functional><br />#define eps (1e-8)<br />#define pi (acos(-1.0))<br />#define stop while(1);<br />#define lowbit(x) (x&(-x))<br />#define maxint INT_MAX<br />#define maxlong 0xFFFFFFFFFFFFFFFLL<br />using namespace std;<br />char ch[10020];<br />int a[10020];<br />int main()<br />{<br /> int n,i,j,top,pre;<br /> while(cin>>n)<br /> {<br /> getchar();<br /> gets(ch);<br /> pre=0, top=0;<br /> int mmin=200000,mmax=0;<br /> for(i=0;ch[i];i++){<br /> if(ch[i]=='.'||ch[i]=='!'||ch[i]=='?'){<br /> a[++top]= i-pre+1;<br /> i++; //兩句話中的空格跳過;<br /> pre=i+1;<br /> mmax= max(mmax,a[top]);<br /> mmin= min(mmin,a[top]);<br /> }<br /> }<br /> //for(i=1;i<=top;i++) printf("%d ",a[i]); puts("");<br /> if(mmin>n||mmax>n) puts("Impossible");<br /> else{<br /> int cnt=0;<br /> for(i=1;i<=top;){<br /> int sum= a[i];<br /> for(j=i+1;j<=top;j++){<br /> sum+= a[j]+1;<br /> if(sum>n){<br /> sum-= (a[j]+1);<br /> i= j;<br /> cnt++;<br /> break;<br /> }<br /> }<br /> if(i==top||j>top) { cnt++; break; }<br /> }<br /> cout<<cnt<<endl;<br /> }<br /> }<br />}<br />/*<br />25<br />Hello. I am a little walrus.<br />2<br />How are you?<br />19<br />Hello! Do you like fish? Why?<br />146<br />iIQVkDsPqzAJyBrtHk EhBSN gzDoigItCMzETerb cIbXhTPbKYMdMoYqyFTEN. qcrrseVwmaZEiQUQoGT SUyErST lJDejKkjqTdoUrHR tsZYDyI? pmuNNHYqQUISxdZfWOB XdEECvNz hnNmVfODaIC qjhRIEPAlEsQBxo apZ! gCpqoiUFIwWLBOmYubywj qJojFVhLd dCpovICpXHfgihydEOoij?<br />*/

 

聯繫我們

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