ATCODER ABC 099
记录一下自己第一场AK的比赛吧。。。虽然还是被各种踩。。。
只能说ABC确实是比较容易。
A
题目大意
给你一个数(1~1999),让你判断它是不是大于999。
Solution
没什么好说的,代码学过编程就应该都会打。
B
题目大意
有一排树,高度分别为1,1+2,1+2+3,1+2+3+4....1+2+3+...+999.现在下雪了,给出露在外面的两棵相邻的树的高度,问你雪的厚度。
Solution
明显,我们把这俩数减一下就可以得出他们本来的位置,然后直接算一下第二个数本来多大,减去输入就可以了。
C
题目大意
输入一个N,你可以有三种操作:1,把这个数-1;2,把这个数(-6^x);3,把这个数(-9^x).要求用最少的次数使这个数减小到0.x可为任意数。
N<=100000。
Solution
容易发现的是能够减的数其实不多,一共只有不到10个。然后可以手动写一个贪心程序发现大样例过不了(样例良心)。于是思考搜索,暴力寻找所有的方案,加上记忆化后随便就跑过去。
D
题目大意
给定一个(N*N)的矩阵,其中每个格子都有它的颜色。一共有C种颜色。行列的编号从左到右从上到下分别为1,2,3,...,N。
现在要求让所有(i+j)%3余数相同的格子颜色是同样的,余数不同的格子颜色是不同的。把一个格子里的颜色a变成另一种颜色b需要(d[a][b])的代价。求最小代价。
Solution
这道题难在题意理解,把这题面翻译过来不是很容易。其他的就简单了。首先可以想到枚举把每个格子变成什么颜色,暴力计算,这样复杂度略高,不过确实是对的。
然后考虑预处理出来每一种格子都涂成一种颜色需要多少花费,计算的时候直接调用就可以了。复杂度在可以承受的范围内,足矣通过本题。