示例#1
0
        public void TestMethod1_7()
        {
            var obj = WaveletTree.Create(_testString1);
            var pos = obj.Select('a', 1);

            Assert.IsTrue(pos == 5);
        }
示例#2
0
        public void TestMethod1_8()
        {
            var obj = WaveletTree.Create(_testString1);
            var pos = obj.Select('b', 3);

            Assert.IsTrue(pos == 16);
        }
示例#3
0
        public void TestMethod2_1()
        {
            var obj = WaveletTree.Create(_testStringArray1);
            var pos = obj.Select("that");

            Assert.IsTrue(pos == 0);
        }
示例#4
0
        public void TestMethod1_7()
        {
            var obj   = WaveletTree.Create(_testString1);
            var count = obj.Rank('a', 10);

            Assert.IsTrue(count == 2);
        }
示例#5
0
        public void TestMethod2_2()
        {
            var obj   = WaveletTree.Create(_testStringArray1);
            var count = obj.Rank("eat");

            Assert.IsTrue(count == 0);
        }
示例#6
0
    public void Solve()
    {
        int N = Reader.Int(), K = Reader.Int();
        var S = new long[1].Concat(Reader.IntArray(N).Select(a => (long)a - K)).ToArray();

        for (int i = 1; i <= N; i++)
        {
            S[i] += S[i - 1];
        }
        var  tree = new WaveletTree(S);
        long ans  = Enu.Range(0, N).Sum(i => (long)(N - i) - tree.Rank(i + 1, N + 1, S[i] - 1));

        Console.WriteLine(ans);
    }
示例#7
0
 static void Main(string[] args)
 {
     try
     {
         var array = "kjwdlks;k:omewaivpowvmjaiefjcea";
         var obj   = WaveletTree.Create(array);
         Console.WriteLine(obj.Select('k', 1));
     }
     catch (ArgumentNullException e)
     {
         Console.WriteLine(e);
     }
     catch (Exception e)
     {
         Console.WriteLine(e);
     }
     finally
     {
         Debugger.Break();
     }
 }
示例#8
0
    public void Solve()
    {
        int N = Reader.Int(), K = Reader.Int();
        var A = Reader.IntArray(N).Select(a => a - K).ToArray();
        var S = new long[N];

        for (int i = 0; i < N; i++)
        {
            S[i] = (i == 0 ? 0 : S[i - 1]) + A[i];
        }
        var  tree    = new WaveletTree(S);
        long ans     = 0;
        long balance = 0;

        for (int i = 0; i < N; i++)
        {
            int len = N - i;
            ans     += len - tree.Rank(i, N, balance - 1);
            balance += A[i];
        }

        Console.WriteLine(ans);
    }
示例#9
0
        public void TestMethod1_6()
        {
            var obj = WaveletTree.Create(_testString1);

            Assert.ThrowsException <ArgumentOutOfRangeException>(() => obj.Select('g'));
        }
示例#10
0
        public void TestMethod2_3()
        {
            var obj = WaveletTree.Create(_testStringArray1);

            Assert.ThrowsException <ArgumentNullException>(() => obj.Select(null));
        }
示例#11
0
        public void TestMethod2_2()
        {
            var obj = WaveletTree.Create(_testStringArray1);

            Assert.ThrowsException <ArgumentOutOfRangeException>(() => obj.Select("eat"));
        }
示例#12
0
 public void TestMethod3_1()
 {
     Assert.ThrowsException <ArgumentNullException>(() => WaveletTree.Create(_testStringArray2));
 }