zoukankan      html  css  js  c++  java
  • 1030


    比赛at 1030:距noip2016十几天
    T1:
    题意很简单,给定N个线段,请找出包含其他线段最多的那条线段,并计算出它包含了多少条线段。
    为了让问题不复杂化,题目保证任意两个线段的端点不会相同。

    题解:将所有的点在二维坐标轴上列出来后可以发现可以被这个线段包含的点都在他的右下方,参考【星星点灯】,用树状数组+离散即可;

    注意点:map,set由于实际比赛不会开O2,10w数据量以上就会爆炸,不要用~不要用~不要用,重要的话说三遍;


    T2:
    现在有n(1 <= N <= 100)个整数,第i个数的数值是Ai,现在Fj要把第i个数调整为Bi。
    现在Fj有三种选择:
    把第i个数的数值+1,代价为 x
    把第i个数的数值-1,代价为y
    将第i个数的数值-1,第j个数的数值+1,花费为|i-j|*z

    现在给定n个Ai和Bi,问按要求调整后,最小花费代价是多少?
    数据保证Ai和Bi的范围是 0..10.

    在比赛中,我实际上对这道题真没什么感觉,贪心的话,后效性无法避免;
    动规的话,也真没什么不错的思路;
    最后打的暴力;
    题解:
    首先先把两个数组化成这样的形式,以样例为例:
    a 1223334444
    b 111122233

    化成这样的形式之后:可以这样dp:
    设f[i][j]表示前i个a化成前j个b的最小代价;
    f[i][j]=min(
    f[i-1][j]+y;
    f[i][j-1]+x
    f[i-1][j-1]+z*(A[i]-B[j])
    )


    小x在一个山洞里探险,很不幸的是,没有找到宝藏,并且还很悲催的迷路了。不过幸运的是,小x获得了这个山洞的地图,这个迷宫被抽象成了一个二维坐标系,迷宫的每个单元格都有自己唯一的坐标,现在小x所在的位置为sx,sy。迷宫的出口为坐标系的原点,也就是坐标为[0,0]的单元格。
    小x在这个迷宫里,只能上下左右移动,也就是说,只能按照坐标轴的方向进行四个方向的移动。
    在地图上,小x发现有N个单元格被柱子占据,被柱子占据的单元格,意味着小x不能通过这个格子。保证这N个柱子所在的坐标都在[1..1000]之间。小x知道,这个迷宫的范围为无限大,并不受到空间和坐标值的限制。
    小x在地图上发现,自己所在的位置,根本就不能到达迷宫的出口,通往出口的所有路径都被那N个柱子封锁住了。这个让小x很着急,不过小x又发现地图还有一个功能,可以把一些柱子移除掉,但是移除一根柱子都要花费小x很大精力,远远比走路花费的力气要大得多。
    现在小x想知道,最少移除几根柱子,能让小x从自己的位置走到出口,也就是原点。

    这题就是个bfs;

  • 相关阅读:
    237. Delete Node in a Linked List
    430. Flatten a Multilevel Doubly Linked List
    707. Design Linked List
    83. Remove Duplicates from Sorted List
    160. Intersection of Two Linked Lists
    426. Convert Binary Search Tree to Sorted Doubly Linked List
    142. Linked List Cycle II
    类之间的关系
    初始化块
    明确类和对象
  • 原文地址:https://www.cnblogs.com/chadinblog/p/6022684.html
Copyright © 2011-2022 走看看