随笔分类 -  ICPC-搜索、枚举、构造、模拟

摘要:题意 : 给定两个序列 a 和 b ,保证 a 数列的和 == b数列的和,从头到尾考虑 (a[i] - b[i]) 的前缀和,直到前缀和为负数则无法进行下去,所得的便是a[1~i]的和,现在有一个操作,就是你可以将最前面的a[1] && b[1] 这两个数放到末尾去,问你最少经过多少次这样的操作能 阅读全文
posted @ 2017-09-13 17:36 qwerity 阅读(122) 评论(0) 推荐(0)
摘要:链接 : http://codeforces.com/contest/849/problem/B 题意 : 给出 n 个在直角坐标系上的点,每个点的横坐标的值对应给出的顺序序数,比如 1 2 4 3 则相当于给出了(1,1)、(2,2)、(3,4)、(4,3)这四个点,现在问你能不能找出两条不重叠的 阅读全文
posted @ 2017-09-02 12:32 qwerity 阅读(169) 评论(0) 推荐(0)
摘要:题意 : 机器人要从一个m * n 网格的左上角(1,1) 走到右下角(m, n)。网格中的一些格子是空地(用0表示),其他格子是障碍(用1表示)。机器人每次可以往4个方向走一格,但不能连续地穿越k(0≤k≤20)个障碍,求最短路长度。起点和终点保证是空地。 分析 : 很明显的BFS最短路,但是这里 阅读全文
posted @ 2017-08-20 17:45 qwerity 阅读(486) 评论(0) 推荐(0)
摘要:题意 : 有一个n个数的数列且元素都是0~n-1,问你将数列的其中某一个数及其前面的数全部置到后面这种操作中(比如3 2 1 0中选择第二个数倒置就产生1 0 3 2)能产生的最少的逆序数对是多少? 分析 : 首先铁定排除枚举法,直接暴力肯定是超时的。既然这样不妨来找找规律,从第一个数开始,如果我们 阅读全文
posted @ 2017-08-18 10:44 qwerity 阅读(128) 评论(0) 推荐(0)
摘要:题意 : 给定一个 w * h 的 矩阵,在矩阵中找不同n个连通块的个数(旋转,翻转,平移算作一种) 分析 : 这题的关键点有两个 ① 生成n连块并且存储起来(因为题目是多测试用例,如果每一次都重新生成必将浪费很多时间) ② 判断是否生成了重复的n连块 存储 :首先先确定用什么结构来存储n连块的信息 阅读全文
posted @ 2017-07-19 17:23 qwerity 阅读(408) 评论(0) 推荐(0)
摘要:题意:有个#字型的棋盘,2行2列,一共24个格。 如图:每个格子是1或2或3,一共8个1,8个2,8个3. 有A~H一共8种合法操作,比如A代表把A这一列向上移动一个,最上面的格会补到最下面。 求:使中心8个格子数字一致的最少步骤,要输出具体的操作步骤及最终中心区域的数字。如果有多个解,输出字典序最 阅读全文
posted @ 2017-07-18 11:51 qwerity 阅读(186) 评论(0) 推荐(0)
摘要:题意:你有一篇n(2≤n≤9)个自然段组成的文章,希望将它们排列成1,2,…,n。可以用Ctrl+X(剪切)和Ctrl+V(粘贴)快捷键来完成任务。每次可以剪切一段连续的自然段,粘贴时按照顺序粘贴。注意,剪贴板只有一个,所以不能连续剪切两次,只能剪切和粘贴交替。例如,为了将{2,4,1,5,3,6} 阅读全文
posted @ 2017-07-18 11:37 qwerity 阅读(181) 评论(0) 推荐(0)
摘要:题意 : 有装满水的6升的杯子、空的3升杯子和1升杯子,3个杯子中都没有刻度。不使用道具情况下,是否可量出4升水呢? 你的任务是解决一般性的问题:设3个杯子的容量分别为a, b, c,最初只有第3个杯子装满了c升水,其他两个杯子为空。最少需要倒多少升水才能让某一个杯子中的水有d升呢?如果无法做到恰好 阅读全文
posted @ 2017-07-18 10:59 qwerity 阅读(240) 评论(0) 推荐(0)
摘要:题意 :w*h(w,h≤16)网格上有n(n≤3)个小写字母(代表鬼)。要求把它们分别移动到对应的大写字母里。每步可以有多个鬼同时移动(均为往上下左右4个方向之一移动),但每步结束之后任何两个鬼不能占用同一个位置,也不能在一步之内交换位置。输入保证所有空格连通,所有障碍格也连通,且任何一个2*2子网 阅读全文
posted @ 2017-07-16 11:45 qwerity 阅读(397) 评论(0) 推荐(0)
摘要:题目链接 :http://codeforces.com/contest/831/problem/C 题意 :选手有一个初始积分,接下来有k个裁判为他加分或减分(时间顺序给出),然后告诉你n(1<=n<=k)个积分减分过程中的积分(不一定是时间顺序),问根据这些信息,他的初始积分有多少种可能 分析 : 阅读全文
posted @ 2017-07-15 09:16 qwerity 阅读(160) 评论(0) 推荐(0)
摘要:题意 : 如果一个字符串包含两个相邻的重复子串,则称它是“容易的串”,其他串称为“困难的 串”。例如,BB、ABCDACABCAB、ABCDABCD都是容易的串,而D、DC、ABDAB、 CBABCBA都是困难的串。程序从输入中读取多行数据,每行包括两个整数n和L(即按此顺序给出),其中n > 0, 阅读全文
posted @ 2017-07-13 17:31 qwerity 阅读(188) 评论(0) 推荐(0)
摘要:① 使用增量构造法可以构造出升序数组arr的不重复子集,并且按字典序排序 #include<bits/stdc++.h> using namespace std; int arr[16]; inline void print_subset(int *index, int cur, int n)/// 阅读全文
posted @ 2017-07-11 19:51 qwerity 阅读(1022) 评论(0) 推荐(0)
摘要:题意 : 输入正整数n,按从小到大的顺序输出所有形如abcde/fghij = n的表达式,其中a~j恰好为数字0~9的一个排列(可以有前导0),2≤n≤79。 分析 : 最暴力的方法莫过于采用数组存储0~9然后next_permutation枚举排列再带入表达式看是否满足等式,但是这样的复杂度就是 阅读全文
posted @ 2017-07-11 09:59 qwerity 阅读(159) 评论(0) 推荐(0)
摘要:题意 :输入一个m行n列的字符矩阵,统计字符“@”组成多少个八连块。如果两个字符“@”所在的格子相邻(横竖以及对角方向),就是说它们属于同一个八连块。 分析 :可以考虑种子填充深搜的方法。两重for循环枚举所有的点,然后只要是@点且还没被染色过则从这个点出发到达相邻的点染成同样的色(这里的颜色可以用 阅读全文
posted @ 2017-07-10 20:34 qwerity 阅读(154) 评论(0) 推荐(0)
摘要:题意 :对于下面这个字符串 0,00,01,10,000,001,010,011……. 首先是长度为1的串,然后是长度为2的串,以此类推。不存在全为1的串。 你的任务是编写一个程序。首先输入一个代码头(例如AB#TANCnrtXc),则上述序列的每个串依次对应编码头的每个字符。例如,0对应A,00对 阅读全文
posted @ 2017-07-10 17:18 qwerity 阅读(280) 评论(0) 推荐(0)
摘要:题目链接 :http://codeforces.com/contest/821/problem/B 题意 :给出 m 和 b 表示在坐标轴上的一条直线 要求你在这条直线和x、y轴围成的区域中找出一个矩形,使得矩形贡献的价值最大,矩形的贡献由在矩形里面的每一个整数点(x, y)的和构成即 x+y。 分 阅读全文
posted @ 2017-07-01 15:18 qwerity 阅读(155) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/contest/602/problem/B 题意 :给出一个含有 n 个数的区间,要求找出一个最大的连续子区间使得这个子区间的最大值和最小值的差值不超过 1 ,最后输出这个子区间的长度。 分析 :我们可以根据区间的最值之差利用尺取的方法来找出答案 阅读全文
posted @ 2017-06-23 14:46 qwerity 阅读(183) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/contest/816/problem/C 题意 :给出一个 n*m 的变化后的矩阵,变化前矩阵的元素全是0,变化的规则是选择其中的一行或者一列将元素进行加一操作,问你最少用几步操作能将全零的矩阵变成一开始输入的矩阵,如果无法做到则输出-1,否则 阅读全文
posted @ 2017-06-18 21:34 qwerity 阅读(167) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/contest/814/problem/B 题意 : 有一个给出两个含有 n 个数的序列 a 和 b, 这两个序列和(1~n)的其中一个全排列序列 p 只有一个元素不同, 要求你找出任意满足这个条件的序列 p 分析 : 全排列有个特点, 就是各个 阅读全文
posted @ 2017-06-12 20:37 qwerity 阅读(136) 评论(0) 推荐(0)
摘要:题意 : 一个十进制整数被叫做权势二进制, 当他的十进制表示的时候只由0或1组成。例如0, 1, 101, 110011都是权势二进制而2, 12, 900不是。当给定一个n (1<=n<=1,000,000)的时候, 计算一下最少要多少个权势二进制相加才能得到n。 分析 : 由于权势二进制可以在任 阅读全文
posted @ 2017-06-10 12:57 qwerity 阅读(309) 评论(0) 推荐(0)