生活随笔
收集整理的這篇文章主要介紹了
今年暑假不AC
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
題目1434:今年暑假不AC
時(shí)間限制:1 秒
內(nèi)存限制:128 兆
特殊判題:否
提交:307
解決:180
題目描述: “今年暑假不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é)目)
輸入: 輸入數(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é)束,不做處理。
輸出: 對(duì)于每個(gè)測(cè)試實(shí)例,輸出能完整看到的電視節(jié)目的個(gè)數(shù),每個(gè)測(cè)試實(shí)例的輸出占一行。
樣例輸入: 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
跟項(xiàng)目規(guī)劃一樣,對(duì)結(jié)束時(shí)間進(jìn)行排序,然后對(duì)每個(gè)節(jié)目動(dòng)態(tài)規(guī)劃式: dp[i]=max(dp[i-1],dp[k]+1) 0=<k<i,
#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
struct PRO{int begt;int endt;
public:PRO(int begt_,int endt_):begt(begt_),endt(endt_){};};
std::vector<PRO> ps;
int maxP[101];
int findpm(int b,int e,int t){int id = b-1;//Attentionint mid;while(b<=e){ //ATTENTION? <=mid = (b+e)>>1;if(ps[mid].endt<=t){id = mid;b = mid+1;}else{e = mid-1;}}return id;
}bool lessThan(const PRO& pl,const PRO& pr){return pl.endt<pr.endt;
}
void init(int n){ps.clear();for(int i =0;i<=n;i++)maxP[i]=0;int bt;int et;ps.push_back(PRO(0,0)); //ATTENTIONfor(int i = 0;i<n;i++){scanf("%d %d",&bt,&et);ps.push_back(PRO(bt,et));}}
void getMax(int n){std::sort(ps.begin(),ps.end(),lessThan);for(int i = 1;i<n+1;i++){if(ps[i].begt>=ps[i-1].endt){maxP[i] = maxP[i-1]+1;continue;}int preid = findpm(0,i-1,ps[i].begt);maxP[i] = std::max(maxP[i-1],maxP[preid]+1);}printf("%d\n",maxP[n]);
}void judo(){int n;while(scanf("%d",&n)!=EOF && n){init(n);getMax(n);}
}
int main() {judo();//cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!return 0;
}/**************************************************************Problem: 1434User: KESLanguage: C++Result: AcceptedTime:10 msMemory:1524 kb
****************************************************************/
總結(jié)
以上是生活随笔為你收集整理的今年暑假不AC的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。