2018年8月10日训练日记

HDU 5399 Too Simple(思维+dfs) 题意:给你若n函数的fi(1)~fi(n)的值(有的可能不知道,不知道的输入-1),让你求最终f1(f2(...fn(i)...))=i的方法总数有多少种。(-1的自己填上)。本题不难想到一个-1的时候答案是0,k>1个-1的时候答案为(n!)的(k-1)次方(前提是知道的i函数的fi(1~n)值都是1~n的全排列,即不能有重复的数)。关键在于没有-1的时候,要进行dfs找,答案可能为0也可能为1。

HDU 5400 Arithmetic Sequence(思维)这道题和之前2015杭电一场多校的一道题几乎完全相同。区别就在于d1=d2的情况要特殊处理。然后l[i],r[i]维护以i为中心的左、右两边最远的合法序列长度,最终d1!=d2则ans=∑(i=1~n)l[i]*r[i]  否则ans=∑(i=1~n)l[i]。(r[i]也行)

HDU 5402 Travelling Salesman Problem(棋盘黑白染色)给你一个n*m的矩阵每个格子都有正权值,你要从(1,1)走到(n,m)问经过的格子的最大权值总和是多少。首先当n,m有一个为奇数时,就可以先往另一个方向蛇形走位走到(n,m)遍历完所有格子。当n,m都为偶数时,就是棋盘的黑白染色。把i+j为偶数的格子染成黑色,则一条路径(1,1)到(n,m)的路径中由于两端都是黑格子,必然路径中经过的黑格子数比白格子多1.也就是说有一个白格子不会被经过。因此取一个权值最小的白格子不经过即可。如果这个格子在第一行,那就DRUR这样直到U(或D)的时候是那个格子的时候再R一下就可以了,然后继续蛇形走位。如果不在第一个格子,就先走到这个格子所在行的前一行,然后DRUR这样像刚才那样绕过去就可以了。棋盘染色参考论文。

牛客练习赛一个半小时第一次AK截图纪念

2018年8月10日训练日记_第1张图片

 

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