2018年8月8日训练日记

HDU 5385 The path(贪心)题意:一张图有N个顶点,给出一些有向边,问该如何给这些边赋值才能满足 存在x,d(1) < d(2) < ….d(x) > d(x+1) > …d(n) 的条件且1为起点,d(x)表示1到x的最短距离。 赋值的范围在1~N。特殊的,d(1) < d(2) < ….

HDU 5386 Cover(暴力)给你两个图,第二个图是第一个图刷过之后的图。接下来给m个操作,每次操作把某一行或某一列刷成一种颜色。保证存在合法操作序列,让你求出任意一个来。只需要暴力倒着求就行,原图没用,只需要判断那一行那一列是否都是这个颜色或为0即可。若是,加入答案中,那一行(列)都置为0。我用了set仅31ms就过了。

HDU 5387 Clock(模拟)给你一个时间,求时针与分针、秒针和分针与秒针 的夹角。结果用分数表示。由于用分数表示,转化成小数就凉了,于是可以先乘以一个较大的数。。。然后分别计算三个针与12点的夹角。注意钝角的时候要化为锐角。(用180度减)题解参考这里。

HDU 5389 Zero Escape(DP)题意:给你n个人,然后是A,B,分别代表两个门的值。然后第二行给出了n个人的价值,问你要使这n个人全部进入门中(可以全进A,全进B,或是AB门都有人进),问你总共有几种方法(所有人进去后进去后两个门的值正好等于所有人的价值%9)(答案取模)。但是要注意这里的价值并不是仅仅加起来就好了,这里是要把它加起来直到为一个个位数。显然是dp。

定义:dp[i][j]为前i个人中然后取得的价值为j的方案数。

状态转移方程:dp[i][j]=dp[i-1][j]+dp[i-1][j-idx[i]](j>=idx[i]),dp[i][j]=dp[i-1][j]+dp[i-1][j+9-idx[i]](j

前一个方程的含义是等于i-1个人取得j的方案数加上i-1个人取得j-idx[i]的方案数,因为这里相当于是01背包,我们在这里是在第i个人的时候才取的idx[i]这个价值。后一个方程的含义是原来的值j加上idx[i]后取模就变了。所以要加上9。

还要分情况:

1、所有人全部进入到B中。

2、把人员分配到A与B中去,这里也同时算上了人员全都进入了A的情况。我们最后只需要取一种dp[n][A]就可以了,因为其余的人必定要进入到另一个B中去的。所以方案数就是dp[n][A]。

3、当第二种不成立时,那么我们要把人员都分配到A中去。为了计算的方便,我们把第二种不成立的就另外分开来到第三种情况中去。最后别忘了mod就好。题解参考这里。

然后多校虽然没崩,不过罚时上天了。最成功的在于成功推出了正确的结论,然后通过了狼人杀那道题。这次简直就是高中生专场,好在学聪明了直接上网找结论,前两道题过得也不算太慢,还行。。。然后剩下的题有机会补一补。今晚打cf,继续加油。

你可能感兴趣的:(训练日记)