SDUTアクティビティ選択1298
2174 ワード
アクティビティの選択
Time Limit: 1000MS Memory limit: 65536K
タイトルの説明
学校の大学生芸術センターは日曜日に全校の各学院の学生サークルに開放されるが、活動センターは同時に1つのサークル活動しか使用できず、各サークル活動が始まってから中断することはできない.現在、各サークルは、そのセンターを使用する活動計画(すなわち、活動の開始時刻と終了時刻)を提出している.大学生芸術センターで衝突しないできるだけ多くのサークル活動を手配できるように、アルゴリズムを設計してください.
例えば5つのイベントがあり、開始時刻と終了時刻はそれぞれ:
最適な配置シーケンスは、1,4,5です.
入力
1行目は、アクティビティ数n(0以降はn行、それぞれ1~nのアクティビティ使用中心の開始時刻aと終了時刻b(a,bは整数で0<=a,b<24,a,b入力はスペースで区切られた)を入力する.
しゅつりょく
最適なスケジュール・シーケンスに含まれる各アクティビティを出力します(アクティビティがスケジュールされた順序で、2つのアクティビティ間をカンマで区切ります).
サンプル入力
サンプル出力
古典的な貪欲アルゴリズムの問題で、次は2つの言語の実現です.
Javaコード:
C言語コード:
Time Limit: 1000MS Memory limit: 65536K
タイトルの説明
学校の大学生芸術センターは日曜日に全校の各学院の学生サークルに開放されるが、活動センターは同時に1つのサークル活動しか使用できず、各サークル活動が始まってから中断することはできない.現在、各サークルは、そのセンターを使用する活動計画(すなわち、活動の開始時刻と終了時刻)を提出している.大学生芸術センターで衝突しないできるだけ多くのサークル活動を手配できるように、アルゴリズムを設計してください.
例えば5つのイベントがあり、開始時刻と終了時刻はそれぞれ:
最適な配置シーケンスは、1,4,5です.
入力
1行目は、アクティビティ数n(0以降はn行、それぞれ1~nのアクティビティ使用中心の開始時刻aと終了時刻b(a,bは整数で0<=a,b<24,a,b入力はスペースで区切られた)を入力する.
しゅつりょく
最適なスケジュール・シーケンスに含まれる各アクティビティを出力します(アクティビティがスケジュールされた順序で、2つのアクティビティ間をカンマで区切ります).
サンプル入力
6
8 10
9 16
11 16
14 15
10 14
7 11
サンプル出力
1,5,4
古典的な貪欲アルゴリズムの問題で、次は2つの言語の実現です.
Javaコード:
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner x=new Scanner(System.in);
int n,j,i;
n=x.nextInt();
Exercise[] a=new Exercise[n];
Exercise t;
int time=0;
int[] s=new int[n];
for(i=0;ia[j+1].end)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
i=0;
while(i=time)
{
s[i]=1;
time=a[i].end;
}
else
s[i]=0;
i++;
}
for(i=0;i
C言語コード:
#include
struct node
{
int id;
int begin;
int end;
};
int main()
{
int n,j,i;
scanf("%d",&n);
getchar();
struct node shi[n],t;
int time=0;
int s[n];
for(i=0; ishi[j+1].end)
{
t=shi[j];
shi[j]=shi[j+1];
shi[j+1]=t;
}
i=0;
while(i=time)
{
s[i]=1;
time=shi[i].end;
}
else
s[i]=0;
i++;
}
for(i=0;i