結果
| 問題 |
No.1111 コード進行
|
| コンテスト | |
| ユーザー |
ks2m
|
| 提出日時 | 2020-07-10 22:02:10 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 840 ms / 2,000 ms |
| コード長 | 1,679 bytes |
| コンパイル時間 | 2,476 ms |
| コンパイル使用メモリ | 78,572 KB |
| 実行使用メモリ | 257,224 KB |
| 最終ジャッジ日時 | 2024-10-11 09:13:57 |
| 合計ジャッジ時間 | 11,518 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 48 |
ソースコード
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] sa = br.readLine().split(" ");
int n = Integer.parseInt(sa[0]);
int m = Integer.parseInt(sa[1]);
int k = Integer.parseInt(sa[2]);
int max = 301;
List<List<Obj>> list = new ArrayList<>(max);
for (int i = 0; i < max; i++) {
list.add(new ArrayList<>());
}
Set<Integer> set = new HashSet<>();
for (int i = 0; i < m; i++) {
sa = br.readLine().split(" ");
int p = Integer.parseInt(sa[0]);
Obj o = new Obj();
o.q = Integer.parseInt(sa[1]);
o.c = Integer.parseInt(sa[2]);
list.get(p).add(o);
set.add(p);
}
br.close();
int mod = 1000000007;
// x個、最後がy、複雑度z
long[][][] dp = new long[n][max][k + 1];
for (int y : set) {
dp[0][y][0] = 1;
}
for (int x = 0; x < n - 1; x++) {
for (int y : set) {
for (Obj next : list.get(y)) {
for (int z = 0; z <= k; z++) {
if (z + next.c <= k) {
dp[x + 1][next.q][z + next.c] += dp[x][y][z];
dp[x + 1][next.q][z + next.c] %= mod;
}
}
}
}
// for (int y = 0; y < 5; y++) {
// for (int z = 0; z <= k; z++) {
// System.out.print(dp[x + 1][y][z] + "\t");
// }
// System.out.println();
// }
// System.out.println();
}
long ans = 0;
for (int y = 0; y < max; y++) {
ans += dp[n - 1][y][k];
}
ans %= mod;
System.out.println(ans);
}
static class Obj {
int q, c;
}
}
ks2m