您的位置:首页 > 其它

10/26

2017-10-26 22:56 155 查看
这周还是dp,不过数位dp的练习题已经开放了

今天还是针对昨天的练习赛来写一下题解。

A题和C题是水题,B题还好,D题需要思考一下,怎么做都行但有个简单的方法,E题有点困难,看懂题意了但没时间写了,英语水平。。。。。

A题意

    有一个人想要访问3个人的家一共n次,现在他在1号房子,进行了第一次访问。在3幢房子中间每两幢房子都有一条路,第二行表示1号房子和2号房子之间的路的长度,第三行表示1号房子和3号房子之间的路的长度,第四行表示2号房子和三号房子之间的路,问你他要想再进行n-1次访问,且相邻两次不能访问同一户人家(就是不能不走路),他需要走的最短长度是多少。

思路

    首先我们可以知道,要是n=1的话那么输出0就行了。否则找到三条路里面最短的一条路,如果这一条路与1号房子相连,那么接下来n-1次都走这条路就是最短的了,否则走一条min(a,b)到达最短的路c,之后c次都走那条就行了。

B题

比如1 8 4  找差值为3的倍数的 总数2个的集合。

现在有

集合0%3  

集合1%3

集合2%3

我们输出1,集合1%3 放入了1

我们输入8,集合8%3,也就是2%3 ,放入了8.

我们输出4,集合4%3,也就是1%3,放入了4.

所以集合1%3 有两个数,>=m了。我们把这个集合输出即可。

利用vector进行存储即可。

c题梁大佬直接暴力过的

题意:找出所有使得x与x各个位上的数之和 = n成立的x,且x为正数

思路:因为n的位数<=9,所以x各个位置的数之和<100,即n-100<x<=n 然后遍历

开始以为暴力不行,后来过了开心

D题

题意:有n个硬币,刚开始所有的硬币均为不流通,然后分开n次使得n个硬币流通,小明每次只能从左到右看,不能返回,且不能用手改变位置,若看的位置是流通硬币且下一个硬币是不流通的,则小明则在心中将这两个硬币交换位置,若前后两个硬币均为流通或不流通则不交换,问每次将此时流通的硬币全部排到最后的难度是多少

思路:已经在最后的相连的流通硬币是不会交换的,然后每次将一个流通硬币换到下一个流通硬币时这个流通硬币就不能再换的,要开始换下一个流通硬币,每次看的次数就是没有连接在尾部的流通硬币个数。难度+1

E

题意

 给你一堆由数字组成的串,他们原来不加任何操作的数字大小顺序是1<2<3<4…而你有一个操作,可以将一些数字加一个’(为了方便就叫他大写操作,而原数字就是小写),这样他就比所有小写的数字都要小,并且1’<2’<3’<4’…<1<2<3<4…而且一种数字要大写的话必须所有串中的这个数字都要大写,给出你n个串,问你能否改变一些数字使这些串在字典序上变成不下降的排序。

这个题有点迷,开始打算dfs直接搜,但没时间写了,做题有点慢了,其实主要是读题慢,ε=(´ο`*)))唉
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: