トップページに戻る    次の競技プログラミングのテンプレートへ    前の競技プログラミングのテンプレートへ

004 競技プログラミングのテストデータ読込

乱数を使って作成したテストデータの読込のテンプレートです。


C#のソース

using System;
using System.Linq;
using System.Reflection;

class Program
{
    static long a;
    static string StrK;
    static long[] BArr;

    static void Main()
    {
        for (int TestNo = 1; TestNo <= 100; TestNo++) {
            string FileName = string.Format("TestDate{0}.txt", TestNo.ToString().PadLeft(3, '0'));
            string txtFileFullPath = Assembly.GetExecutingAssembly().Location;
            txtFileFullPath = System.IO.Path.GetDirectoryName(txtFileFullPath);
            txtFileFullPath = System.IO.Path.Combine(txtFileFullPath, FileName);

            string[] TestDataArr = System.IO.File.ReadAllLines(txtFileFullPath,
                System.Text.Encoding.GetEncoding("Shift_JIS"));

            a = TestDataArr[0].Split(' ').Select(X => long.Parse(X)).Last();
            StrK = TestDataArr[1];
            BArr = TestDataArr[2].Split(' ').Select(X => long.Parse(X)).ToArray();

            Console.WriteLine("{0}テストデータ{1}{0}", new string('■', 5), TestNo);

            long ResultNaive = SolveNaive();
            long ResultQuick = SolveQuick();

            Console.WriteLine("テストデータ{0}は、ナイーブだと{1}", TestNo, ResultNaive);
            Console.WriteLine("テストデータ{0}は、クイックだと{1}", TestNo, ResultQuick);

            if (ResultNaive != ResultQuick) {
                Console.WriteLine("テストデータ{0}で差異あり、ナイーブだと{1}、クイックだと{2}",
                    TestNo, ResultNaive, ResultQuick);
            }
        }
    }

    //ナイーブに解く
    static long SolveNaive()
    {
        return -1;
    }

    //クイックに解く
    static long SolveQuick()
    {
        return -1;
    }
}


解説

WAの原因が分からないときは、

乱数を使って、テストデータを大量に作って、
TLEを気にしないナイーブな実装と
TLEを防いだ実装で結果を比較するのが効果的です。