ATCODER ABC 099

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

这道题难在题意理解,把这题面翻译过来不是很容易。其他的就简单了。首先可以想到枚举把每个格子变成什么颜色,暴力计算,这样复杂度略高,不过确实是对的。

然后考虑预处理出来每一种格子都涂成一种颜色需要多少花费,计算的时候直接调用就可以了。复杂度在可以承受的范围内,足矣通过本题。

posted @ 2018-06-11 14:10  ~victorique~  阅读(350)  评论(0编辑  收藏  举报
Live2D