結果
| 問題 |
No.37 遊園地のアトラクション
|
| コンテスト | |
| ユーザー |
sekiya9311
|
| 提出日時 | 2016-10-26 15:28:46 |
| 言語 | C#(csc) (csc 3.9.0) |
| 結果 |
AC
|
| 実行時間 | 36 ms / 5,000 ms |
| コード長 | 1,580 bytes |
| コンパイル時間 | 2,218 ms |
| コンパイル使用メモリ | 114,656 KB |
| 実行使用メモリ | 27,812 KB |
| 最終ジャッジ日時 | 2024-10-10 13:17:11 |
| 合計ジャッジ時間 | 3,005 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 27 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Linq;
class Template
{
static Scanner sc;
public static void Main(string[] args)
{
sc = new Scanner();
int T = sc.nextInt();
int N = sc.nextInt();
var c = sc.nextIntArray();
var v = sc.nextIntArray();
int[][] dp = new int[N + 1][];
for (int i = 0; i <= N; i++)
{
dp[i] = Array.ConvertAll(new int[T * 2], e => e = -1);
}
dp[0][0] = 0;
for (int i = 0; i < N; i++)
{
for (int j = 0; j < T + 1; j++)
{
int vbuf = v[i];
int time = c[i];
int vsum = 0;
dp[i + 1][j] = Math.Max(dp[i][j], dp[i + 1][j]);
while (vbuf > 0)
{
vsum += vbuf;
if (j - time >= 0 && dp[i][j - time] != -1)
{
dp[i + 1][j] = Math.Max(dp[i + 1][j], dp[i][j - time] + vsum);
}
vbuf /= 2;
time += c[i];
}
}
}
Console.WriteLine(dp[N].Max());
}
}
public class Scanner
{
public Scanner() { }
public string next()
{
return Console.ReadLine();
}
public int nextInt()
{
return int.Parse(next());
}
public double nextDouble()
{
return double.Parse(next());
}
public long nextLong()
{
return long.Parse(next());
}
public string[] nextArray()
{
return next().Split(' ');
}
public int[] nextIntArray()
{
return Array.ConvertAll(nextArray(), e => int.Parse(e));
}
public long[] nextLongArray()
{
return Array.ConvertAll(nextArray(), e => long.Parse(e));
}
public double[] nextDoubleArray()
{
return Array.ConvertAll(nextArray(), e => double.Parse(e));
}
}
sekiya9311