HD_2037今年暑假不AC
生活随笔
收集整理的這篇文章主要介紹了
HD_2037今年暑假不AC
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
????????????????????????????????????????????????????????????????????????? Total Submission(s): 38399????Accepted Submission(s): 20515
Problem Description “今年暑假不AC?”
“是的。”
“那你干什么呢?”
“看世界杯呀,笨蛋!”
“@#$%^&*%...”
確實(shí)如此,世界杯來(lái)了,球迷的節(jié)日也來(lái)了,估計(jì)很多ACMer也會(huì)拋開(kāi)電腦,奔向電視了。
作為球迷,一定想看盡量多的完整的比賽,當(dāng)然,作為新時(shí)代的好青年,你一定還會(huì)看一些其它的節(jié)目,比如新聞聯(lián)播(永遠(yuǎn)不要忘記關(guān)心國(guó)家大事)、非常6+7、超級(jí)女生,以及王小丫的《開(kāi)心辭典》等等,假設(shè)你已經(jīng)知道了所有你喜歡看的電視節(jié)目的轉(zhuǎn)播時(shí)間表,你會(huì)合理安排嗎?(目標(biāo)是能看盡量多的完整節(jié)目)
?
Input 輸入數(shù)據(jù)包含多個(gè)測(cè)試實(shí)例,每個(gè)測(cè)試實(shí)例的第一行只有一個(gè)整數(shù)n(n<=100),表示你喜歡看的節(jié)目的總數(shù),然后是n行數(shù)據(jù),每行包括兩個(gè)數(shù)據(jù)Ti_s,Ti_e (1<=i<=n),分別表示第i個(gè)節(jié)目的開(kāi)始和結(jié)束時(shí)間,為了簡(jiǎn)化問(wèn)題,每個(gè)時(shí)間都用一個(gè)正整數(shù)表示。n=0表示輸入結(jié)束,不做處理。
?
Output 對(duì)于每個(gè)測(cè)試實(shí)例,輸出能完整看到的電視節(jié)目的個(gè)數(shù),每個(gè)測(cè)試實(shí)例的輸出占一行。 ?
Sample Input 12 1 3 3 4 0 7 3 8 15 19 15 20 10 15 8 18 6 12 5 10 4 14 2 9 0 ?
Sample Output 5 ?
用貪心算法做比動(dòng)態(tài)規(guī)劃更高效,由于想看到更多的節(jié)目,可以想到按結(jié)束時(shí)間按從小到大排序,先從結(jié)束時(shí)間比較早的開(kāi)始看,這樣才能看到更多的節(jié)目,貪心算法代碼貼上:
#include<cstdio> #include<algorithm>using namespace std;struct Time{int s;int e; }t[105];int cmp(const Time &A,const Time &B){return A.e<B.e; }int main(){int n;while(scanf("%d",&n)!=EOF){if(n==0) break;for(int i=0;i<n;++i){scanf("%d%d",&t[i].s,&t[i].e);}sort(t,t+n,cmp);int sum=1;int end=t[0].e;for(int i=1;i<n;++i){if(t[i].s>=end){end=t[i].e;++sum;}}printf("%d\n",sum);} return 0; } 動(dòng)態(tài)規(guī)劃一樣可以做出來(lái),代碼如下: <pre class="html" name="code">#include <iostream> #include <cstring> #include <algorithm> using namespace std; struct dot { int a,b; }; dot s[105]; int cmp(dot x,dot y) { return x.b<y.b; } int main(){ int n,m,i,j,k; int c[105]; while(cin>>n) { for(i=0;i<105;i++) c[i]=1; if(n==0) break; for(i=0;i<=n-1;++i) cin>>s[i].a>>s[i].b; sort(s,s+n,cmp); for(i=1;i<n;i++) { for(j=i-1;j>=0;j--) if(s[i].a>=s[j].b&&c[i]<=c[j]) { c[i]=c[j]+1; } } sort(c,c+n); cout<<c[n-1]<<endl; } return 0; }
????????????????????????????????? 今年暑假不AC
????????????????????????????????????????????????????????? Time Limit: 2000/1000 MS (Java/Others)????Memory Limit: 65536/32768 K (Java/Others)????????????????????????????????????????????????????????????????????????? Total Submission(s): 38399????Accepted Submission(s): 20515
Problem Description “今年暑假不AC?”
“是的。”
“那你干什么呢?”
“看世界杯呀,笨蛋!”
“@#$%^&*%...”
確實(shí)如此,世界杯來(lái)了,球迷的節(jié)日也來(lái)了,估計(jì)很多ACMer也會(huì)拋開(kāi)電腦,奔向電視了。
作為球迷,一定想看盡量多的完整的比賽,當(dāng)然,作為新時(shí)代的好青年,你一定還會(huì)看一些其它的節(jié)目,比如新聞聯(lián)播(永遠(yuǎn)不要忘記關(guān)心國(guó)家大事)、非常6+7、超級(jí)女生,以及王小丫的《開(kāi)心辭典》等等,假設(shè)你已經(jīng)知道了所有你喜歡看的電視節(jié)目的轉(zhuǎn)播時(shí)間表,你會(huì)合理安排嗎?(目標(biāo)是能看盡量多的完整節(jié)目)
?
Input 輸入數(shù)據(jù)包含多個(gè)測(cè)試實(shí)例,每個(gè)測(cè)試實(shí)例的第一行只有一個(gè)整數(shù)n(n<=100),表示你喜歡看的節(jié)目的總數(shù),然后是n行數(shù)據(jù),每行包括兩個(gè)數(shù)據(jù)Ti_s,Ti_e (1<=i<=n),分別表示第i個(gè)節(jié)目的開(kāi)始和結(jié)束時(shí)間,為了簡(jiǎn)化問(wèn)題,每個(gè)時(shí)間都用一個(gè)正整數(shù)表示。n=0表示輸入結(jié)束,不做處理。
?
Output 對(duì)于每個(gè)測(cè)試實(shí)例,輸出能完整看到的電視節(jié)目的個(gè)數(shù),每個(gè)測(cè)試實(shí)例的輸出占一行。 ?
Sample Input 12 1 3 3 4 0 7 3 8 15 19 15 20 10 15 8 18 6 12 5 10 4 14 2 9 0 ?
Sample Output 5 ?
用貪心算法做比動(dòng)態(tài)規(guī)劃更高效,由于想看到更多的節(jié)目,可以想到按結(jié)束時(shí)間按從小到大排序,先從結(jié)束時(shí)間比較早的開(kāi)始看,這樣才能看到更多的節(jié)目,貪心算法代碼貼上:
#include<cstdio> #include<algorithm>using namespace std;struct Time{int s;int e; }t[105];int cmp(const Time &A,const Time &B){return A.e<B.e; }int main(){int n;while(scanf("%d",&n)!=EOF){if(n==0) break;for(int i=0;i<n;++i){scanf("%d%d",&t[i].s,&t[i].e);}sort(t,t+n,cmp);int sum=1;int end=t[0].e;for(int i=1;i<n;++i){if(t[i].s>=end){end=t[i].e;++sum;}}printf("%d\n",sum);} return 0; } 動(dòng)態(tài)規(guī)劃一樣可以做出來(lái),代碼如下: <pre class="html" name="code">#include <iostream> #include <cstring> #include <algorithm> using namespace std; struct dot { int a,b; }; dot s[105]; int cmp(dot x,dot y) { return x.b<y.b; } int main(){ int n,m,i,j,k; int c[105]; while(cin>>n) { for(i=0;i<105;i++) c[i]=1; if(n==0) break; for(i=0;i<=n-1;++i) cin>>s[i].a>>s[i].b; sort(s,s+n,cmp); for(i=1;i<n;i++) { for(j=i-1;j>=0;j--) if(s[i].a>=s[j].b&&c[i]<=c[j]) { c[i]=c[j]+1; } } sort(c,c+n); cout<<c[n-1]<<endl; } return 0; }
總結(jié)
以上是生活随笔為你收集整理的HD_2037今年暑假不AC的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: HD2094_产生冠军
- 下一篇: HD_I Hate It