![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
蓝书
行码棋
退役ACMer,落魄过,那么光亮在何时?
展开
-
蓝书 第一章 例题14 填充正方形
题意: 在一个n * n的网格中填了一些大写字母,要求把剩下的格子也填上大写字母,使得任意两个相邻格子的字母不同。 如果有多个解,按要求从上到下、从左到右的顺序把所有格子连接起来的字典序最小 思路: 因为要按从左到右从上到下的顺序字典序排序,要想字典序最小,肯定是前面的字母越小越好。而一个字母周围最多已经存在四个字母,所以只要在每个方格循环字符从前往后就可了。 #include<iostream> #include<algorithm> using namespace std原创 2021-07-05 18:37:00 · 121 阅读 · 0 评论 -
蓝书 第一章 例题10 正整数序列
题意: 给定正整数 n,用最少的操作把序列 1,2,,,n 全部变成 0; 操作是:每次可以从序列中选择一个或者多个,同时减去一个相同的数。 因为每次需要对若干个数进行减去相同的数的运算 比如说1,2,3,4,5五个数,我们第一次操作当然是对后面的三个数减去3,这样就变成了1,2,0,1,2,这屋个数就等价于1,2两个数。 需要明白每次减去中间的数的效果是最好的 1 2 3 4 减去3变成 1 2 0 1 等价于1 2 1,2,3,4,5减去3,变成了1,2,0,1,2等价于1 2 可以发.原创 2021-07-04 16:09:46 · 339 阅读 · 0 评论 -
蓝书 第一章 例题5 蚂蚁 uva
题目: 一根长度为L厘米的木棍上有n只蚂蚁,每只蚂蚁要么朝左爬,要么朝右爬,速度为1厘米/秒。当两只蚂蚁相撞时,二者同时掉头(掉头时间忽略不计)。给出每只蚂蚁的初始位置和朝向,计算T秒之后每只蚂蚁的位置。 输入: 输入的第一行为数据组数。每组数据的第一行为3个正整数L, T,n(0≤n≤10 000);以下n行每行描述一只蚂蚁的初始位置,其中,整数x为蚂蚁距离木棍左端的距离(单位:厘米),字母表示初始朝向(L表示朝左,R表示朝右)。 输出: 对于每组数据,输出n行,按输入顺序输出每只蚂蚁的位置和朝向.原创 2021-07-03 20:36:21 · 181 阅读 · 1 评论 -
蓝书第一章 例题3 分金币
题目链接 题目大意: 一个圆桌n个人,每个人都有一定数量的金币,金币总数能够被n整除。每个人必须给他左边或者右边一些金币,最后使每个人的金币数相等。求转手的金币数量的最小值。转手的金币数指的是每个人给出去的金币数量之和。 思路: 设x1,x2,x3...xnx_1,x_2,x_3...x_nx1,x2,x3...xn分别为第1,2,3,…n个人给前面的人的金币数。 当值为负值时,说明前面的人送给后面的人金币。 整理了笔记,好难整理~???????????? 先是这样: 后来是这样:看下面的还行原创 2021-07-02 23:15:23 · 100 阅读 · 1 评论 -
蓝书 第一章 例题2 突击战
解法:贪心 按执行任务的时间从大到小排序,记录一个最晚结束的时间ans,并且实时更新ans,取最大的值(即最晚结束时间) 因为所有的交代时间必须执行,所以只要按执行时间排序就行。 当前最晚结束时间为 当前总的交代时间加上当前的执行时间 #include<iostream> #include<algorithm> using namespace std; typedef long long ll; const int N = 1e4+5; struct node { int j,b原创 2021-07-02 20:07:33 · 82 阅读 · 0 评论 -
蓝书 第一章 例题1 勇者斗恶龙
思路: 分别将头按直径从小到大和骑士按能力从小到大排序,设置一个指向头的直径大小的标志。 对于每个骑士来说,如果骑士的能力大于头的直径,那么这个头就会被砍掉,标志就要移到下一个头上。 最后判断标志的数与总头数的大小比较,如果cur小于等于n,说明cur指向的头没有被砍掉,所有头没有被砍完。否则就可以砍完。 #include<iostream> #include<algorithm> using namespace std; typedef long long ll; const in原创 2021-07-02 19:19:23 · 138 阅读 · 0 评论