codeforces
文章平均质量分 72
ccDLlyy
不忘初心,方得始终
展开
-
美丽的油画 codeforces 651B
Description从很久很久以前,那里有一个画展,画展有n幅画,第i幅画有一个美丽指数ai。我们知道的是,一个当游览者从一张画到一张美丽指数更高的画的时候,会变得开心。画将会一列的排放,我们可以随意安排画的顺序。那么如果游览者以从头到尾的顺序游览的画,总共最多可以变开心多少次呢。换而言之,我们需要将美丽指数重新排列,使得有最多的i (1?≤?i?≤?n?-?1),原创 2016-09-20 12:36:07 · 626 阅读 · 0 评论 -
CodeForces 707B Bakery(思维+贪心)
题目链接:点击打开链接题意:n个城市,其中k个城市开了面粉店,某人想在剩余的n - k个城市中找一个距离面粉店(任意面粉店)最近的城市开面包店,问最短路径为多少?思路:思维题,面包店一定与面粉店直接相连,所以直接处理每条路径即可,每次贪心的选取一条最短路径,判断相连的两个城市是否只有一个开了面粉店。具体实现,我把边的信息存在优先队列了;或者直接存储每条边的信息,线性扫一遍。// Cod原创 2017-11-02 18:32:06 · 460 阅读 · 0 评论 -
CodeForces 729B Spotlights(思维题+前缀和)
题目链接:点击打开链接题意:给出一个矩阵,对于数值为0的位置,统计其上下左右有几个方向存在1。计算矩阵中所有0的对应值之和。思路:遍历每个位置,利用前缀和判断该位置四个方向存不存在1。复杂度O(n^2)。运行/限制:155ms/1000ms#include #include #include using namespace std;int a[1005][1005],sum原创 2017-11-18 18:19:39 · 482 阅读 · 0 评论 -
CodeForces 798D Mike and distribution(二维贪心 + 思维)
题目链接:点击打开链接题意:思路:// CodeForces 798D Mike and distribution 运行/限制:62ms/2000ms#include #include #include #include #include using namespace std;int a[100005], b[100005], id[100005];bool cmp(原创 2017-11-20 22:49:50 · 409 阅读 · 0 评论 -
CodeForces 375B Maximum Submatrix 2(思维)
题目链接:点击打开链接题意:最大子阵和的变形,给出一个01矩阵,行与行之间可以互换位置,问能够得到最大的全1矩阵的面积。思路:预处理出每一行中每个位置能向左延伸最长的连续1的个数,用二维数组sum存储相应信息,sum[j][num]表示当前列能向左延伸最长的连续1的个数为num的位置个数。对于每一列j,枚举num取从j到1时的情况即可。// CodeForces 375B Maximu原创 2017-11-30 21:38:37 · 506 阅读 · 0 评论 -
CodeForces 672D Robin Hood(二分 + 思维)
题目链接:点击打开链接题意:有n个人,每个人都有一定数量的硬币, 每天硬币最多的人会把自己的一个硬币赠给硬币最少的人,问k天之后硬币最多的人和硬币最少的人的硬币数量之差为多少?思路:k最大为10^9,暴力模拟的话,肯定会超时。此题的正解为二分加思维,二分出最多硬币数和最少硬币数,两者相减得到结果。二分之前先确定最多硬币数的下界和最少硬币数的上界,如果总硬币数sum能整除人数n,最多硬币数的原创 2017-12-09 21:00:32 · 493 阅读 · 0 评论 -
CodeForces 876B Divisiblity of Differences(思维 + 数学)
题目:点击打开链接题意:从n个数中找到k个数,满足任意两者的差能够除尽m。思路:设两个数a、b,若(a - b)% m = 0,则a可写成k1*m + c,b可写成k2*m + c,所以根据对m取余的结果把n个数分类即可。// Code Forces 876B Divisiblity of Differences 运行/限制:61ms/1000ms#include #include原创 2017-12-23 19:18:07 · 415 阅读 · 0 评论 -
CodeForces 669D Little Artem and Dance(思维)
题目链接:点击打开链接题意:有n对男女生跳舞,都是从1到n编号,1号男生和1号女生配对、2号男生和2号女生配对......n号男生和n号女生配对。配对的男女生按照编号从小到大顺时针围成一圈。 有两种操作,均是只移动男生: 1.将所有男生都移动x位(x > 0时顺时针移动;x 2.将所有位置两两相邻的男生换位,举个例子,1、2位置的男生交换,3、4位置的男生交换,......,n -原创 2017-11-27 20:00:47 · 429 阅读 · 0 评论 -
CodeForces 604C Alternative Thinking(思维题)
题目链接:点击打开链接题意:给出01字符串。可以在这个字符串中选择一个起点和一个终点使得这个连续区间内所有的位取反。求经过处理后最多会得到多少次01变换(可以不连续)。思路:思维题。模拟可以发现,增加01变换的方式有大致三种,一是在连续相同的字符串(这种子串记为s)内部找子串取反,这种能够增加01变换的s长度要大于等于3,如10001->10101;二是在s与其相邻非s取相应的部分取反,如原创 2018-01-27 20:39:21 · 365 阅读 · 0 评论 -
CodeForces 729D Sea Battle(思维题)
题目链接:点击打开链接题意:n个格子,这里面包含a条船,每条船占b个格子,船之间不能重复占用格子,而且不知道船的具体位置。之前射击了k次,每次射中一个格子,但都没有打中船。 给出长度为n的字符串,0表示未知位置,1表示被射击过的格子,问要保证至少射中一条船的话,最少需要再射击几次,并输出这些位置编号(多种位置方案的情况下输出一种即可)?思路:思维题,就是要想出一种最少射击方案,无论船位原创 2017-10-24 14:40:41 · 443 阅读 · 0 评论 -
CodeForces 873B Balanced Substring(前缀和+思维)
题目链接:点击打开链接题意:给出的字符串由字符'0'和字符'1'组成,当一段区间[l,r]内的'0'和'1'的个数相同,就称为平衡子串,求最长的平衡子串。思路:若利用前缀和记录0和1的个数(个数和,不是对应值的和),再去两层枚举,复杂度为O(n^2),会超时,所以要想出O(n)的算法,还是利用前缀和(值的和),'0'对应的值为-1,'1'对应的值为1,那么当一段前缀的和与另一段子前缀的和相原创 2017-10-31 19:03:22 · 507 阅读 · 0 评论 -
小熊与球 codeforces653A
DescriptionLimak是一只小熊,他有n个球,第i个球的大小是tiLimak想分别送它的三个朋友一个球,总共三个。然而送礼物不是一件容易的事,要遵循以下两个原则才能让它的三个朋友都开心: 任意两个朋友拿到的球的大小都不是相同的。任意两个朋友拿到的球的大小差距不能大于2。 举个栗子,Limak可以选择三个体积分别为4,5,3的球,或者选择三个体积为9原创 2016-09-21 12:32:37 · 486 阅读 · 0 评论 -
车辆排序 codeforces606C
车辆排序CodeForces 606CDescription一个无限长的铁路有一个载着n辆车的火车,每一辆车的编号从1到n。每一辆车的编号都是不同的。他们的顺序是无序的。David Blaine想要将这些车按照他们的编号从小到大排序,他可以做两种操作。第一种,他可以将一辆车从任意位置移动到所有车的第一位。第二种,他可以将一辆车从任意位置移动到所有车的最后一位。不原创 2016-09-21 20:21:43 · 1187 阅读 · 0 评论 -
code forces 377A
/*给定一个n*m的地图,这个地图初始化有s个空地,并且这s个空地是连通的。现在要求找到一种方案,放k个墙到这个地图,使得剩下的s-k个点还是连通的思路:因为初始化的地图是一个连通的,要求s-k个点也是连通的。那么我们只要对这个图搜索到s-k个连通的点,然后剩下的k个点全部放墙就可以了*///开始直接去广搜k个点成墙,殊不知可能行不通,如:/*原始数据为:5 4 4#...原创 2016-10-24 19:33:03 · 353 阅读 · 0 评论 -
CodeForces 253D Table with Letters - 2(枚举技巧)
题目链接:点击打开链接题意,给出一个字符表,问有多少子表满足:四个角字符相同,子表内a字符的数量不超过k。思路:不加入任何技巧的话,上行、下行、左列、右列四重枚举,O(n^4),复杂度太高,可以加入一点枚举技巧,减少一层枚举。首先要利用前缀和预处理,a[i][j]表示第i行,1 ~ j列字符a的数量。技巧的话,有点形似尺取法,但有区别,尺取法是每次移动一个坐标的le,然后尽可能右移原创 2017-09-17 14:56:30 · 447 阅读 · 0 评论 -
CodeForces 149D Coloring Brackets(区间DP)
题目链接:点击打开链接题意:给出一个括号序列,该序列保证是合法的,即每个括号都能找到唯一的一个匹配括号。给出下列三个染色规则,问有多少种染色情况?1.每个括号要么不涂色,要么涂红色或者蓝色。2.每一对匹配括号,必须有一个且仅有一个被涂色。3.两个相邻的括号不能有相同的颜色。(若两者均未涂色也可以)思路:之前做过最大匹配括号数目的题目,是区间DP问题,此题也可以采用区间DP来做,原创 2017-09-01 16:13:05 · 448 阅读 · 0 评论 -
CodeForces 820D Mister B and PR Shifts(思维题)
题意:给定一个长度为n的排列,每次向右循环移位,求的最小值,并求出是在第几次移位得到的。思路:开始O(N^2)模拟了一下,果然超时。参考了一下网上代码,知道了一个O(N)的思路。用cnt数组记录当前num[i]所在位置 到 下标为num[i]的位置 需要向右循环移位几次,两个变量add、sub表示下一次移位会使sum值+1/-1的个数,每次更新均在上一排列的基础上进行。先注意题意, 1原创 2017-11-07 19:34:48 · 643 阅读 · 0 评论 -
CodeForces 500C New Year Book Reading(贪心+思维)
题目链接:点击打开链接题意:一个人要读n本书,书的重量为wi,要读m天,每天读1本,他每次把位于要看的书上面的书搬开,拿出要看的书,再把上面的书放回去,看完以后把书放到最上面,问根据他的阅读顺序怎样初始化书的排列能使他搬书的总重量最小,求出这个最小重量。思路:对于要顺序阅读的两本书a、b,我们模拟一下可以知道,当把a放上面,搬动的总重量为w[a],当把b放上面,搬动的总重量为w[a]原创 2017-10-31 11:00:16 · 471 阅读 · 0 评论 -
CodeForces 808A Lucky Year(思维)
题目链接:点击打开链接思路:无敌水思维题。// CodeForces 808A Lucky Year 运行/限制:31ms/1000ms#include #include #include #include #include using namespace std;int main(){ int num; while (scanf("%d", &num) != EOF)原创 2017-10-31 14:41:52 · 614 阅读 · 0 评论 -
CodeForces 859C Pie Rules(DP + 思维)
题目链接:点击打开链接题意:两个人Bob和Alice分面包,各种大小的面包顺序是固定的,拿到令牌的一方对当前面包的归属有决定权(可以给自己;也可以不给自己),同时令牌要交给没得到面包的一方(对于当前拿到令牌的人,有两种情况:面包给对方,令牌继续保留;面包给自己,令牌交给对方)。开始令牌在Bob手中,俩人足够聪明,问最后Alice和Bob各自得到多少面包?思路:很多特征都使问题像是个博弈,但原创 2018-02-06 00:04:18 · 455 阅读 · 0 评论