ACM刷題のHDU――今年の夏休みはAC
今年の夏休みは
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 3307 Accepted Submission(s): 1762
Problem Description
「今年の夏休みはACじゃないの?」
「はい」
「じゃあ、何してるの?」
「ワールドカップを見て、バカ!」
“@#$%^&*%...”
確かに、ワールドカップが来て、ファンの祝日も来て、多くのACMerもパソコンを捨てて、テレビに向かっていると思います.
ファンとして、できるだけ多くの完全な試合を見たいと思っています.もちろん、新時代の良い青年として、あなたはきっと他の番組を見ます.例えば、ニュースの連播(国の大事に関心を忘れないでください)、非常に6+7、スーパー女子学生、王小娘の「楽しい辞書」など、あなたが好きなテレビ番組の中継スケジュールをすべて知っているとします.合理的に手配しますか?(できるだけ多くのフル番組が見られるのが目標)
Input
入力データには複数のテストインスタンスが含まれており、各テストインスタンスの最初の行には整数n(n<=100)が1つしかなく、好きな番組の総数を表し、次いでn行のデータであり、各行には2つのデータTi_が含まれている.s,Ti_e(1<=i<=n)は、i番目の番組の開始時間と終了時間をそれぞれ表し、問題を簡略化するために、各時間を正の整数で表す.n=0は入力終了を示し、処理を行わない.
Output
各テストインスタンスについて、完全に見られるテレビ番組の個数を出力し、各テストインスタンスの出力は1行を占める.
Sample Input
Sample Output
これも古典的な貪欲なテーマでしょう.
自分で塗ったstepにも残っています.
今晩劉汝佳の紫書を見て、啓発されて書いた.
まず終了時間を並べ替えて、それから最初に終了した番組は、開始と終了の時間をqとmと記入します.
そして最小の開始スキャン開始時間から.開始時間がm以上である場合.
qとmをこの数(構造体)に置き換え,カウンタ+1とする.
一度スキャンすればいいです.印刷カウンタ.
ps:ここでは自分で構造体を使って、構造体を使って並べ替えました.(構造体は使いやすい)
次はacコードです
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 3307 Accepted Submission(s): 1762
Problem Description
「今年の夏休みはACじゃないの?」
「はい」
「じゃあ、何してるの?」
「ワールドカップを見て、バカ!」
“@#$%^&*%...”
確かに、ワールドカップが来て、ファンの祝日も来て、多くのACMerもパソコンを捨てて、テレビに向かっていると思います.
ファンとして、できるだけ多くの完全な試合を見たいと思っています.もちろん、新時代の良い青年として、あなたはきっと他の番組を見ます.例えば、ニュースの連播(国の大事に関心を忘れないでください)、非常に6+7、スーパー女子学生、王小娘の「楽しい辞書」など、あなたが好きなテレビ番組の中継スケジュールをすべて知っているとします.合理的に手配しますか?(できるだけ多くのフル番組が見られるのが目標)
Input
入力データには複数のテストインスタンスが含まれており、各テストインスタンスの最初の行には整数n(n<=100)が1つしかなく、好きな番組の総数を表し、次いでn行のデータであり、各行には2つのデータTi_が含まれている.s,Ti_e(1<=i<=n)は、i番目の番組の開始時間と終了時間をそれぞれ表し、問題を簡略化するために、各時間を正の整数で表す.n=0は入力終了を示し、処理を行わない.
Output
各テストインスタンスについて、完全に見られるテレビ番組の個数を出力し、各テストインスタンスの出力は1行を占める.
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
これも古典的な貪欲なテーマでしょう.
自分で塗ったstepにも残っています.
今晩劉汝佳の紫書を見て、啓発されて書いた.
まず終了時間を並べ替えて、それから最初に終了した番組は、開始と終了の時間をqとmと記入します.
そして最小の開始スキャン開始時間から.開始時間がm以上である場合.
qとmをこの数(構造体)に置き換え,カウンタ+1とする.
一度スキャンすればいいです.印刷カウンタ.
ps:ここでは自分で構造体を使って、構造体を使って並べ替えました.(構造体は使いやすい)
次はacコードです
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
typedef struct show{
int bign;
int end;
int fal;
}show;
bool cmp(const show &q,const show &w)
{
return q.end<w.end;
}
int main()
{
int n,i,j,v,p,m;
show a[101];
while(scanf("%d",&n)!=EOF)
{
if(n==0)
break;
j=1;
for(i=0;i<n;i++)
{
scanf("%d%d",&a[i].bign,&a[i].end);
}
sort(a,a+i,cmp);
p=a[0].bign;
m=a[0].end;
for(i=1;i<n;i++)
{
if(a[i].bign>=p&&a[i].bign>=m)
{
j++;
m=a[i].end;
p=a[i].bign;
}
}
printf("%d
",j);
}
}