1. 程式人生 > >九度題目1434:今年暑假不AC

九度題目1434:今年暑假不AC

題目描述:
“今年暑假不AC?”“是的。”“那你幹什麼呢?”“看世界盃呀,笨蛋!”“@#$%^&*%...”確實如此,世界盃來了,球迷的節日也來了,估計很多ACMer也會拋開電腦,奔向電視作為球迷,一定想看盡量多的完整的比賽,當然,作為新時代的好青年,你一定還會看一些其它的節目,比如新聞聯播(永遠不要忘記關心國家大事)、非常6+7、超級女生,以及王小丫的《開心辭典》等等,假設你已經知道了所有你喜歡看的電視節目的轉播時間表,你會合理安排嗎?(目標是能看盡量多的完整節目)
輸入:
輸入資料包含多個測試例項,每個測試例項的第一行只有一個整數n(n<=100),表示你喜歡看的節目的總數,然後是n行資料,每行包括兩個資料Ti_s,Ti_e (1<=i<=n),分別表示第i個節目的開始和結束時間,為了簡化問題,每個時間都用一個正整數表示。n=0表示輸入結束,不做處理。
輸出:
對於每個測試例項,輸出能完整看到的電視節目的個數,每個測試例項的輸出佔一行。
樣例輸入:
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
樣例輸出:
5

說實話,一開始做到這個題真不會做,最後是看的《2013年王道論壇計算機考研機試指南》這本書的提示做的,但是並沒有看程式碼,只看瞭解題思路,一開糾結的地方就和書上寫的一樣,整個結構體是按照選擇開始時間最短還是按照持續時間最短來排序,但我們測試幾組資料之後就發現都不對,就無從下手了,但是根據書上猜想,按照結束時間來排序,測試資料發現是正確的,核心的證明如下(圖片來源於書):


最後,程式碼如下:

#include <stdio.h>
#include <stdlib.h>
#define MAXN 101

struct Time{
	int tis;
	int tie;
}time[MAXN];

int cmp(const void *a,const void *b){
	struct Time *aa=(struct Time*)a;
	struct Time *bb=(struct Time *)b;
	return aa->tie-bb->tie;
}

int main(int argc, char *argv[]) {
	int n,i,j,count;
	while(scanf("%d",&n)!=EOF&&n){
		count=1;
		for(i=0;i<n;i++){
			scanf("%d%d",&time[i].tis,&time[i].tie);
		}
		qsort(time,n,sizeof(time[0]),cmp);
		i=0;
		while(i<n){
			for(j=i;j<n;j++){
				if(time[j].tis>=time[i].tie) break;
			}
			if(j==n) break;
			i=j;
			count++;
		}
		printf("%d\n",count);
	}
	return 0;
}

如果文章有什麼錯誤或者有什麼建議,歡迎提出,大家共同交流,一起進步

文章轉載請註明出處,請尊重智慧財產權


相關推薦

題目1434今年暑假AC

題目描述: “今年暑假不AC?”“是的。”“那你幹什麼呢?”“看世界盃呀,笨蛋!”“@#$%^&*%...”確實如此,世界盃來了,球迷的節日也來了,估計很多ACMer也會拋開電腦,奔向電視作為球迷,一定想看盡量多的完整的比賽,當然,作為新時代的好青年,你一定還會看

HDU 2037今年暑假AC

貪心的題目 按照持續時間去排序 時間相等則開始時間靠前的放在前面 放一個將對應的時間區間全部置1 注意判斷的時候並不需要去判斷區間端點的情況 看能不能再A一道,不行就回去開擼了 =  =、 #inc

OJ 1434 今年暑假AC(貪心+區間排程)

題目描述: “今年暑假不AC?”“是的。”“那你幹什麼呢?”“看世界盃呀,笨蛋!”“@#$%^&*%...”確實如此,世界盃來了,球迷的節日也來了,估計很多ACMer也會拋開電腦,奔向電視作為球迷,一定想看盡量多的完整的比賽,當然,作為新時代的好青年,你一定還

-題目1138進制轉換

i++ 十進制 ring str 進制數 ble for 進制 進制轉換 http://ac.jobdu.com/problem.php?pid=1138 題目描述: 將一個長度最多為30位數字的十進制非負整數轉換為二進制數輸出。 輸入: 多組數據,每行為一個長度不超過

題目1394五連擊數組

ace 一個 using return include pop turn span printf 轉載請註明本文鏈接http://blog.csdn.net/yangnanhai93/article/details/40506571 題目鏈接:http://ac.job

-題目1214醜數

得到 方法 產生 include pac number return clu n) http://ac.jobdu.com/problem.php?pid=1214 題目描述: 把只包含因子2、3和5的數稱作醜數(Ugly Number)。例如6、8都是醜數,但14不是,因

C/C++ 演算法分析與設計貪心(今年暑假AC

題目描述 “今年暑假不AC?” “是的。” “那你幹什麼呢?” “看世界盃呀,笨蛋!” “@#$%^&*%...” 確實如此,世界盃來了,球迷的節日也來了,估計很多ACMer也會拋開電腦,奔向電視了。 作為球迷,一定想看盡量多的完整的比賽,當然,作為新時代的好青年,

題目120810進位制 VS 2進位制

#include <stdio.h> #include <string.h> char ch1[1000],ch2[4000]; //ch1儲存使用者輸入的10進位制大整數,ch2儲存ch1轉換後的翻轉的2進位制 int num[1000];//儲存ch2轉換的新的2進位制大整數! v

題目1014排名

按總分降序列印過錄取線的學生,總分相同時,id小的在前(id升序)。 程式碼: #include <vector> #include <algorithm> #include <iostream> #include <string

題目1467二叉排序樹

程式碼設計: #include <iostream> #include <algorithm> #include <stdio.h> using namespace

——題目1001A+B for Matrices

題目描述:     This time, you are supposed to find A+B where A and B are two matrices, and then count the number of zero rows and columns. 輸入

題目1008最短路徑問題

題目描述: 給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終點的最短距離及其花費,如果最短距離有多條路線,則輸出花費最少的。 輸入: 輸入n,m,點的編號是1~n,然後是m行,每行4個數 a,b,d,p,表示a和b之間有一條邊,且其長度為

題目1020最小長方形

一.題目描述:     給定一系列2維平面點的座標(x, y),其中x和y均為整數,要求用一個最小的長方形框將所有點框在內。長方形框的邊分別平行於x和y座標軸,點落在邊上也算是被框在內。 輸入:     測試輸入包含若干測試用例,每個測試用例由一系列座標組成,每對座標佔

題目1337尋找最長合法括號序列

題目描述: 給你一個長度為N的,由’(‘和’)’組成的括號序列,你能找出這個序列中最長的合法括號子序列麼?合法括號序列的含義便是,在這個序列中,所有的左括號都有唯一的右括號匹配;所有的右括號都有唯一的左括號匹配。例如:((()))()()便是一個長度為10的合法括號序列,而

題目1255骰子點數概率

題目描述: 把n個骰子扔在地上,所有骰子朝上一面的點數之和為S。輸入n,打印出S的所有可能的值出現的概率。 輸入: 輸入包括一個整數N(1<=N<=1000),代表有N個骰子。 輸出: 可能有多組測試資料,對於每組資料, 按照Sample Output的格

-題目1088剩下的樹

題目1088:剩下的樹 時間限制:1 秒 記憶體限制:32 兆 特殊判題:否 提交:6434 解決:2944 題目描述:     有一個長度為整數L(1<=L<=1

題目1000計算a+b

題目描述: 求整數a,b的和。 輸入: 測試案例有多行,每行為a,b的值。 輸出: 輸出多行,對應a+b的結果。 樣例輸入: 1 2 4 5 6 9 樣例輸出: 3 9

題目1015還是A+B

題目描述: 讀入兩個小於10000的正整數A和B,計算A+B。需要注意的是:如果A和B的末尾K(不超過8)位數字相同,請直接輸出-1。 輸入: 測試輸入包含若干測試用例,每個測試用例佔一行,格式為"A B K",相鄰兩數字有一個空格間隔。當A和B同時為0時輸入結束,相應的

題目1541二叉樹

二叉樹的操作,旋轉操作就按他給的圖來進行吧,需要細心,要把各節點的兒子父親安排的妥妥的.還有不知道他是一棵還是多棵二叉樹... #include<stdio.h> #include<string.h> #include<algorithm

題目1008最短路徑問題

最短路徑問題,首先想到了貪心演算法實現的dijkstra演算法;這道題我用了連結串列的儲存方式,其實用鄰接矩陣也可以,主要為了練手,並且連結串列比矩陣要節約空間; 題目描述: 給你n個點,m條無向邊,每條邊都有長度d和花費p,給你起點s終點t,要求輸出起點到終