差分数组|小a的轰炸游戏-牛客317E】的更多相关文章

小a的轰炸游戏 题目链接:https://ac.nowcoder.com/acm/contest/317/E 思路  这题考查的是对差分数组原理和前缀和的理解. 四个数组分别记录朝着四个方向下放的个数最后求个前缀,就代表着这一行中从这个点开始作为起点的轰炸区域个数,四个数组分别向着四个方向下放最终得到的四个数组分别是前. 4个数组对应下面4条箭头: 图中的绿色是要进行区间操作的菱形.红色圆圈是打的+1操作,蓝色圆圈是打的-1操作.它们是成对出现的,每个红色圆圈都有一个蓝色圆圈来消除它. 它们的标…
算法题14 小Q歌单,牛客网,腾讯笔试题 题目: 小Q有X首长度为A的不同的歌和Y首长度为B的不同的歌,现在小Q想用这些歌组成一个总长度正好为K的歌单,每首歌最多只能在歌单中出现一次,在不考虑歌单内歌曲的先后顺序的情况下,请问有多少种组成歌单的方法. 输出描述: 输出一个整数,表示组成歌单的方法取模.因为答案可能会非常大,所以输出对1000000007取模的结果. 输入示例: 5 2 3 3 3 输出示例: 9 解题方法: 方法一.暴力搜索,枚举其组合数. # -*- coding:utf-8…
链接:https://ac.nowcoder.com/acm/contest/317/E来源:牛客网 题目描述 小a正在玩一款即时战略游戏,现在他要用航空母舰对敌方阵地进行轰炸 地方阵地可以看做是n×mn×m的矩形 航空母舰总共会派出qq架飞机. 飞机有两种,第一种飞机会轰炸以(xi,yi)(xi,yi)为中心,对角线长为lili的正菱形(也就是两条对角线分别于xx轴 yy轴平行的正方形),而第二种飞机只会轰炸正菱形的上半部分(包括第xixi行) (具体看样例解释) 现在小a想知道所有格子被轰炸…
题目传送门 题意: 给出一个n*m的矩形,然后有两个操作. 1操作,对一个给出的菱形,对菱形范围内的东西进行+1. 2操作,对一个上半菱形的区域,进行+1操作. 最后求矩形内各个数的异或和. 思路: 在矩形中,我们在四个角上进行++--,然后利用差分的性质,就解决了区间更新, 但是在这里,想破脑汁,也没想出怎么进行++--.因为矩形的差分是横着或者竖着的, 最后的求和非常容易,但是这里不一样.最后看了题解豁然大悟,原来差分还可以动态的来, 本行的差分数组使用完了,还可以把差分数组下传,继续在下一…
链接:https://ac.nowcoder.com/acm/contest/1085/A来源:牛客网 应肖老师要求前来更新水一水 题目描述 小 sun 非常喜欢放假,尤其是那种连在一起的长假,在放假的时候小 sun 会感到快乐,快乐值等于连着放假的天数,现在小 sun 把他的安排表告诉你,希望你告诉他在他的安排表中, 他的最大快乐值.  当某天没有安排的时候就是放假. 输入描述: 第一行两个数n,m,代表总共有n天,m个安排. 接下来有m行,每行是一个安排l,r,代表从第l天到第r天,小sun…
题目 链接:https://ac.nowcoder.com/acm/contest/28537/Q 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 柱状图是有一些宽度相等的矩形下端对齐以后横向排列的图形,但是小A的柱状图却不是一个规范的柱状图,它的每个矩形下端的宽度可以是不相同的一些整数,分别为a[i]a[i]a[i],每个矩形的高度是h[i]h[i]h[i],现在小A只想…
题目 链接:https://ac.nowcoder.com/acm/contest/28537/G 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 131072K,其他语言262144K 64bit IO Format: %lld 题目描述 小C最近学会了java小程序的开发,他很开心,于是想做一个简单的记事本程序练练手. 他希望他的记事本包含以下功能: 1.append(str),向记事本插入字符串 str(英文字符) 2.delete(k),删除记事本最后k个字…
我是看题解的! 这道题还是有很多细节,当然,是一道差分的好题! 题意:有2种飞机,一种是只炸上半菱形,一种是炸整个菱形.问所有区域内的所有格子的异或和. 思路:用前缀和思路: 这样遍历过去就完成了一次轰炸. 但是,这样是不现实的,因为不可能每次都这样做.但是下面一下就可以. 这里,我尽量写清楚这道好题的主要思路. 也就是使用a, b,c,d4个数组来存储1和-1:然后再箭头方向更新!就很好了. #include<iostream> #include<cstdio> using na…
原题 公式 中间数字与变量之间乘号bug省略可能看着有点别扭例如8x2为8*x2 首先设扫一遍后0的个数为x0 2的个数为x2 4的个数为x4 ①如果x0=x4 ans=32*x4+4 ②如果x0>x4 定义now为x0-x4+1 (1)如果now>x2 ans=32x4+8x2 否则 ans=32x4+(2now-1)*4 ③如果x0<x4 定义now为x4-x0 (1)如果now>x2 ans=32x0+8x2+16 否则 ans=32x0+(2now-1)*4+16 代码 #…
题目 题意: 一个长度为n的排列.输入n个数 a[ i ],a[ i ] ∈ [1,n],要求找到长度最小的区间 [ l , r ],满足区间[ l , r ]内的数是连续的,且同时包含 数 x 和 数 y . 思路: 容易得: 要想得到这个区间,这个区间内必须满足 “最大值 - 最小值 == r - l ” .我们维护出每个数出现的位置,即p[x]表示数x的位置,考虑每次迭带更新答案.维护四个变量 分别表示当前区间的左右端点,最大最小值. 首先找到[p[x], p[y]]中的每个数位置的最大最…