結果
| 問題 | No.555 世界史のレポート |
| コンテスト | |
| ユーザー |
明智重蔵
|
| 提出日時 | 2017-08-18 12:03:50 |
| 言語 | C#(csc) (csc 3.9.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 2,887 bytes |
| 記録 | |
| コンパイル時間 | 1,564 ms |
| コンパイル使用メモリ | 108,416 KB |
| 実行使用メモリ | 25,088 KB |
| 最終ジャッジ日時 | 2024-10-14 14:50:09 |
| 合計ジャッジ時間 | 2,783 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 10 RE * 10 |
コンパイルメッセージ
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;
//YukiCoder No.555 世界史のレポート
//https://yukicoder.me/problems/no/555
class Program
{
static string InputPattern = "InputX";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("6");
WillReturn.Add("3 2");
//12
}
else if (InputPattern == "Input2") {
WillReturn.Add("10");
WillReturn.Add("1 3");
//15
}
else if (InputPattern == "Input3") {
WillReturn.Add("100");
WillReturn.Add("1000 1");
//1099
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static void Main()
{
List<string> InputList = GetInputList();
int[] wkArr = { };
Action<string> SplitAct = pStr =>
wkArr = pStr.Split(' ').Select(X => int.Parse(X)).ToArray();
SplitAct(InputList[0]);
int N = wkArr[0];
SplitAct(InputList[1]);
int C = wkArr[0];
int V = wkArr[1];
//最小コスト[レポートの文字数,クリップボートの文字数]なDP表
var DPArr = new Nullable<int>[N + 1, N + 1];
DPArr[1, 0] = 0;
for (int I = 0; I <= N; I++) {
for (int J = 0; J <= N; J++) {
if (DPArr[I, J].HasValue == false) continue;
//コピーする場合
int NewI = I;
int NewJ = I;
int NewCost = DPArr[I, J].Value + C;
if (NewI > N) NewI = N;
if (NewJ > N) NewJ = N;
if (DPArr[NewI, NewJ].HasValue == false
|| DPArr[NewI, NewJ].Value > NewCost) {
DPArr[NewI, NewJ] = NewCost;
}
//ペーストする場合
NewI = I + J;
NewJ = J;
NewCost = DPArr[I, J].Value + V;
if (NewI > N) NewI = N;
if (NewJ > N) NewJ = N;
if (DPArr[NewI, NewJ].HasValue == false
|| DPArr[NewI, NewJ].Value > NewCost) {
DPArr[NewI, NewJ] = NewCost;
}
}
}
//for (int I = 0; I <= N; I++) {
// for (int J = 0; J <= N; J++) {
// Console.WriteLine("DPArr[{0},{1}]={2}", I, J, DPArr[I, J]);
// }
//}
int Answer = int.MaxValue;
for (int I = 0; I <= N; I++) {
if (DPArr[N, I].HasValue == false) continue;
if (Answer > DPArr[N, I].Value)
Answer = DPArr[N, I].Value;
}
Console.WriteLine(Answer);
}
}
明智重蔵