예제 #1
0
    public long minimizeCost(int[] positions, int[] lengths)
    {
        seg[] l = new seg[positions.Length];
        for (int i = 0;i < positions.Length; i++)
        {
            seg o = new seg();
            o.start = positions[i]; o.length = lengths[i]; o.n = 1;
            l[i] = o;
        }

        Array.Sort(l, delegate(seg a, seg b){
            return a.start.CompareTo(b.start);
        });

        for (int i = 0; i < positions.Length-1; i++)
        {
            if (l[i].start + l[i].length == l[i+1].start)
            {
                l[i].length = l[i].length + l[i+1].length;
                l[i+1] = null;
            }
        }

        //pick the heaviest one
        //f(p) = p(x-y)+yg
        //c += minima of f(p)
        return 0;
    }
예제 #2
0
        /*int[] X1 = new int[10000];
         * int[] Y1 = new int[10000];
         * int[] X2 = new int[10000];
         * int[] Y2 = new int[10000];
         * X1[0] = 5;*/
        private void init()
        {
            seg a = new seg(50, 250, 350, 423);
            seg b = new seg(350, 423, 350, 77);
            seg c = new seg(350, 77, 50, 250);

            A[0] = a;
            A[1] = b;
            A[2] = c;
        }