結果

問題 No.1111 コード進行
ユーザー ngtkana
提出日時 2020-03-11 00:07:05
言語 C#(csc)
(csc 3.9.0)
結果
AC  
実行時間 226 ms / 2,000 ms
コード長 1,387 bytes
コンパイル時間 1,161 ms
コンパイル使用メモリ 114,912 KB
実行使用メモリ 35,928 KB
最終ジャッジ日時 2024-11-15 23:51:57
合計ジャッジ時間 5,178 ms
ジャッジサーバーID
(参考情報)
judge5 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 48
権限があれば一括ダウンロードができます
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc)
Copyright (C) Microsoft Corporation. All rights reserved.

ソースコード

diff #

using System;
using System.Linq;

static class NagataKanaIsAGenius {
    public static void Main() {
        int[]qmk=Console.ReadLine().Split().Select(int.Parse).ToArray();
        int q=qmk[0];
        int m=qmk[1];
        int k=qmk[2];
        int n=0;
        Tuple<int,int,int>[]prog=Enumerable.Range(0,m).Select(_=>{
            int[]uvw=Console.ReadLine().Split().Select(int.Parse).ToArray();
            int u=uvw[0]-1;
            int v=uvw[1]-1;
            int w=uvw[2];
            if(n<u)n=u;
            if(n<v)n=v;
            return new Tuple<int,int,int>(u,v,w);
        }).ToArray();
        n++;
        int[]dp=new int[(k+1)*n];
        for(int i=0;i<n;i++)dp[i]=1;
        for(int i=0;i<q-1;i++){
            int[]new_dp=new int[(k+1)*n];
            for(int j=k;j>=0;j--){
                foreach(Tuple<int,int,int>uvw in prog){
                    int u=uvw.Item1;
                    int v=uvw.Item2;
                    int w=uvw.Item3;
                    if(w<=j){
                        AddAssign(ref new_dp[j*n+u],dp[(j-w)*n+v]);
                    }
                }
            }
            dp=new_dp;
        }
        int ans=0;
        for(int i=0;i<n;i++){
            AddAssign(ref ans,dp[k*n+i]);
        }
        Console.WriteLine(ans);
    }
    static int Mod=1000000007;
    static void AddAssign(ref int x,int y){x+=y;if(Mod<=x)x-=Mod;}
}
0