結果
問題 | No.90 品物の並び替え |
ユーザー |
|
提出日時 | 2014-12-25 22:08:25 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 2,229 ms / 5,000 ms |
コード長 | 3,351 bytes |
コンパイル時間 | 2,360 ms |
コンパイル使用メモリ | 117,136 KB |
実行使用メモリ | 31,380 KB |
最終ジャッジ日時 | 2024-06-12 23:03:15 |
合計ジャッジ時間 | 6,063 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 9 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Application{class MainClass{public static void Main(string[] args){var scan = new Scanner();var N = scan.NextDigit();var M = scan.NextDigit();var scores = new int[N, N];for (var i = 0; i < M; i++){var line = scan.NextDigits(3);scores[line[0], line[1]] = line[2];}var result = computePrice(scores, N, M);WriteLine(result);}static int computePrice(int[,] scores, int N, int M){return DepthFirstSearch(scores, Enumerable.Empty<int>(), Enumerable.Range(0, N));}static IEnumerable<T> Add<T>(IEnumerable<T> list, T item){return list.Concat(Enumerable.Repeat(item, 1));}static IEnumerable<T> Remove<T>(IEnumerable<T> list, T item){return list.Where(s => !s.Equals(item));}static int DepthFirstSearch(int[,] scores, IEnumerable<int> done, IEnumerable<int> left){var max = 0;foreach (var i in left){var doneScore = done.Aggregate(0, (memo, j) => memo + scores[j, i]);var childMax = DepthFirstSearch(scores, Add(done, i), Remove(left, i));max = Math.Max(doneScore + childMax, max);}return max;}static void WriteLine(object o){System.Console.WriteLine(o.ToString());}static void D<T>(IEnumerable<T> l){WriteLine(JoinList(l));}private static string JoinList<T>(IEnumerable<T> l){return string.Join(" ", l.Select(x => x.ToString()).ToArray());}}class Scanner{public int[] NextDigits(int count){return Enumerable.Range(0, count).Select(x => NextDigit()).ToArray();}public string NextToken(){int i;var r = new List<char>();while ((i = System.Console.Read()) >= 0){var c = Convert.ToChar(i);if (IsSpace(c) && r.Count > 0)break;r.Add(c);}return new string(r.ToArray());}bool IsSpace(char c){if (char.IsWhiteSpace(c)) return true;return false;}public int NextDigit(){var token = NextToken();return int.Parse(token);}}class Reader{public string Item(){return Items()[0];}public String[] Items(){return this.Items(' ');}public String[] Items(char c){return System.Console.ReadLine().Split(c);}public int Int(){return Ints(' ')[0];}public int[] Ints(){return this.Ints(' ');}public int[] Ints(char c){return Items(c).Select(x => int.Parse(x)).ToArray();}}}