ブルーブリッジカップ2019初試合出前店優先度java
10072 ワード
ブルーブリッジカップ2019初試合出前店優先度
疫病のため、4月のブルーブリッジカップは今まで延期されていましたが、実はずっとこの試合の準備をしていませんでした.1、2日しかありませんでした.
次は本題です.
この問題は考え方が間違っていると、とてもつらいかもしれません.私はいくつかのネット上の他の学生の解答を見て、他の方法のコードは多くて、私もよく見ていません.しかし、他の方法はキャッシュ全体の詳細を直接シミュレートするべきで、コードは非常に煩雑で、ここではみんなに比較的簡単な解題方法を提供して、構想はコードの中で、コードは少なくて、構想もよく理解します.
私のレベルが限られているため、コードが不足しているところは指摘を歓迎して、みんなの評論と交流が共に進歩することを歓迎します!
タイトル:
【質問説明】「お腹いっぱいですか」デリバリーシステムでは、N軒のデリバリー店、番号1〜Nを維持しています.各出前店には優先度があり、初期時(0時刻)の優先度は0です.1時間単位が経過するごとに、出前店に注文がなければ、優先度は1減少し、最低は0に減少します.出前店に注文がある場合は、優先度はマイナスではなく、1つの優先度に2を加えます.ある外食店のある時点の優先度が5より大きい場合、システムは優先キャッシュに追加されます.優先度が3以下の場合、優先キャッシュは消去されます.T時刻以内のM件の注文情報を指定し、T時刻にどのくらいの出前店が優先キャッシュにあるかを計算してください.第1行目は、3つの整数N、M、およびTを含む.以下のM行は、ts時刻番号idの出前店が注文を受けたことを示す2つの整数tsとidを含む.【出力フォーマット】整数を出力して答えを表します.【サンプル入力】2 6 6 1 1 1 5 2 3 1 6 2 2 1 6 2【サンプル出力】1【サンプル解釈】6時点で1号店優先度が3に下がり、優先キャッシュが取り外される.2号店は優先順位を6に上げ、優先キャッシュを入れる.だから1店(2番)が優先キャッシュに入っています.
回答:
疫病のため、4月のブルーブリッジカップは今まで延期されていましたが、実はずっとこの試合の準備をしていませんでした.1、2日しかありませんでした.
次は本題です.
この問題は考え方が間違っていると、とてもつらいかもしれません.私はいくつかのネット上の他の学生の解答を見て、他の方法のコードは多くて、私もよく見ていません.しかし、他の方法はキャッシュ全体の詳細を直接シミュレートするべきで、コードは非常に煩雑で、ここではみんなに比較的簡単な解題方法を提供して、構想はコードの中で、コードは少なくて、構想もよく理解します.
私のレベルが限られているため、コードが不足しているところは指摘を歓迎して、みんなの評論と交流が共に進歩することを歓迎します!
タイトル:
【質問説明】「お腹いっぱいですか」デリバリーシステムでは、N軒のデリバリー店、番号1〜Nを維持しています.各出前店には優先度があり、初期時(0時刻)の優先度は0です.1時間単位が経過するごとに、出前店に注文がなければ、優先度は1減少し、最低は0に減少します.出前店に注文がある場合は、優先度はマイナスではなく、1つの優先度に2を加えます.ある外食店のある時点の優先度が5より大きい場合、システムは優先キャッシュに追加されます.優先度が3以下の場合、優先キャッシュは消去されます.T時刻以内のM件の注文情報を指定し、T時刻にどのくらいの出前店が優先キャッシュにあるかを計算してください.第1行目は、3つの整数N、M、およびTを含む.以下のM行は、ts時刻番号idの出前店が注文を受けたことを示す2つの整数tsとidを含む.【出力フォーマット】整数を出力して答えを表します.【サンプル入力】2 6 6 1 1 1 5 2 3 1 6 2 2 1 6 2【サンプル出力】1【サンプル解釈】6時点で1号店優先度が3に下がり、優先キャッシュが取り外される.2号店は優先順位を6に上げ、優先キャッシュを入れる.だから1店(2番)が優先キャッシュに入っています.
回答:
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int t = sc.nextInt();
// brr[n][t] , n t
int[][] brr = new int[n+1][t+1];
int a =0;
int b =0;
for(int i=0;i<m;i++) {
a = sc.nextInt();// a
b = sc.nextInt();// b
brr[b][a]+=1;// b a
}
sc.close();
int ans = 0;// ,
for(int i=1;i<n+1;i++) {
int prior =0;// i
boolean position = false;// i j
for(int j=1;j<t+1;j++) {
if(brr[i][j]==0) {
// i j , , 0
prior-=1;
prior = prior>=0?prior:0;
}else {
prior +=2*brr[i][j];// , 2
}
if(prior>5)position=true;// 5,
if(prior<=3)position=false;// 3,
}
if(position)ans++;// i , , ans
}
System.out.println(ans);
}
}