卡片
答案:3181。
枚举。一次ac。
直线
答案:40257。
写错了。
思路没错,依次枚举所有2个点,求出截距b、斜率b,作为元组存入set中。set可以自动去重,再输出set的len属性。
错误原因是,算截距b的公式写错了。不能写b = y1-k*x1,而是要写 b = (x2*y1-x1*y2) / (x2-x1)。原因可能是不能用k去算b,会有误差。
货物摆放
答案:2430。
又是枚举?
写错了。只是枚举的话,时间复杂度过高。先找出n的所有因子(用set存储因子,因为怕出现重复),然后用二重循环枚举n的所有因子。
路径
答案:10266837。
经典的最短路问题,我用Dijkstra算法求,邻接矩阵存储无向图。计算边权需要求最大公约数与最小公倍数,还要注意i==j时,边权为0。
第一次写错了,自己debug发现了错误,是dijkstra的模板写错了,循环外不能把st[1] = True。
回路计数×
读完题,觉得这大概是图论求哈密尔顿回路?求方案数不会是dp吧?看了题解果然是dp。
听y哥说数据范围小,可以用dfs做。
a b互质:公约数只有1。思路是,先用邻接表建图,然后用dfs去遍历图。当遍历完最后一个点,并且这个点与节点1有边相连,则算作一种访问方案。每个节点只能访问一次,用bool数组 st[] 来表示。
时间显示
思路比较简单,整除+取余即可,注意python的格式化输出。
T = int(input())
for _ in range(T):
time = int(input())
time //= 1000
ss = time % 60; time //=60
mm = time % 60; time //=60
hh = time % 24
print('%02d:%02d:%02d' % (hh,mm,ss))
杨辉三角形×
我只能想到打表出杨辉三角,再枚举的方法。只能过50%的样例,听说Acwing基础课讲了这个。
左孩子右兄弟×
没有思路,看了解析说树形dp。
异或数列×
感觉是个高级题目。不会做。