- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 【线段树 懒惰标记】JZOJ_1380 最大值(新版)
题目 题意: 在一个长度为n的序列里进行两种操作:(1)1 x y c表示把a[x]到a[y]增加c,(2)2 x y表示询问区间[x~y]的最大值。思路: 这题和1379的差不多,就是第一个操作的时候我们可以先做一个标记,等到查找的时候我们再把标记下传下去,可以使时间得到优化。代码: #include<cstdio>#include&l...
2018-02-08 09:21:37 315
原创 【线段树】JZOJ_1379 最大值
题目 题意: 在一个长度为n的序列中进行2种操作:(1)1 x y表示修改a[x]为y,(2)2 x y表示询问区间[x~y]间的最大值,求每次操作2的结果。思路: 用一个线段树来表示每个区间的最大值,当我们要修改时,我们可以递归下去修改,查找时也是递归。代码:#include<cstdio>#include<algorithm>...
2018-02-08 09:09:42 285
原创 jzoj_1371 假期
题目题意: 奶牛们可以放假了,假期可以在1~n天中选一段连续的,既不能大于q也不能小于p,每天都有一个享受值w,求它们在假期里最多能获得多少享受值。思路: 用f[i][0]记录前缀和,之后的步骤和1370差不多,最后从[i+p-1...min(n,i+q-1)]中求出最大值并减去f[i-1][0],因为这里用的是前缀和。代码:#include#include
2018-02-04 20:54:50 232
原创 jzoj_1370 飞船
题目题意: 给出n个数和m次询问次数,每次给出l和r,求出从[l..r]这个区间中最大的数。思路: 数据太大,不能直接暴力,今天学了RMQ算法,这是个例题,我们可以设f[i][j]为a[i]到a[i+2^j-1]这个范围内的最大值,得出动态转移方程f[i][j]=max(f[i][j-1],f[i+2^j-1][j-1]),初值是f[i][0]=a[i],[l..r]中
2018-02-04 20:26:44 301
原创 洛谷_2024 食物链
题目题意: 给出n只动物和k句话,判断这k句话里有几句假话。思路: 题目中告诉了我们假话的几种情况:• 当前的话与前面的某些真的话冲突,就是假话• 当前的话中 X 或 Y 比 N 大,就是假话• 当前的话表示 X 吃 X,就是假话我们可以用x表示同类,x+n表示猎物,x+2n表示天敌,然后我们在读入的时候判断后两种情况,第一种另外判断。代码:#include<cstdio>...
2018-02-04 18:16:12 301
原创 jzoj_1478 堆排序
题目题意: 给出n个数,从小到大排序后输出。思路: 用堆来操作,每次都取堆顶来输出并从堆里面删除掉它。代码:#include<algorithm>#include<cstdio>using namespace std;int a[200001],num,n;void up(int x){ int t=0; while (x...
2018-02-04 09:28:52 219
原创 洛谷_1551 亲戚
题目题意: 给出n个人的亲戚关系,之后给出p对人,判断这两个人之间有没有亲属关系。思路: 因为这是并查集的例题,所以这里用并查集,每次读入都让它们合并起来,可以压缩路径。代码:#include<cstdio>int n,m,p,x,y,father[50001];int find(int a){ if (father[a]!=a) father[a]=find...
2018-02-04 09:17:30 689
原创 jzoj_2月3日D组
第一题(池塘):题意: 有一个矩阵,'W'代表积水,'.'代表没有积水,如果积水是连起来的就算作一个池塘,一个积水周围8个方向都与它相连。思路: 这题和之前1月26日的家族很像,就是用深搜去把相连的W去掉并统计池塘个数,模拟赛的时候,因为输入等原因,我才拿了10分,细节很重要~~代码:#pragma GCC optimize(2)#include#inclu
2018-02-03 21:36:28 300
原创 jzoj_2月2日D组
第一题(公牛数学):题意: 高精乘。思路: 比赛的时候我忘了高精乘,然后想了1小时写了个不一样的居然A了,下面贴上我的丑代码。代码:#include#include#includechar a[101],b[101];int l1,l2,c[101],d[101],ans[101];void init(){ scanf("%s",a);
2018-02-02 19:51:47 275
原创 jzoj_2月1日D组
第一题(牛车):题意: 一些牛要开车上高速公路,第i头牛的车速为si,有m条高速公路,如果一条车道上前面有x头牛,那现在这头牛的速度就会降低d*x,我们现在要求最多能有多少头牛能上高速。思路: 先让他们的速度排序,因为最好是速度慢的先上高速比较好,然后从1到n头牛枚举,从1到m条车道枚举,如果这头牛可以上这条车道,我们就用一个数组统计这条车道上牛的数量,然后让ans+1
2018-02-01 20:21:23 286
原创 洛谷_1090 合并果子
题意: 有n堆果子,我们每次合并其中的两堆所需的体力为它们数目的和,我们现在要求合并给出的n堆果子最少需要多少体力。思路: 最少的体力为前2堆最小数目的果子,我们可以用每次排序来求,但我这里用的是堆,先建堆,每次取出一个根并删除,取两个加到答案中,并把它们的和扔到堆里面,直到只剩一堆就退出循环。代码:#pragma GCC optimize(2)#include...
2018-02-01 19:33:21 297
原创 jzoj_1月30日D组
第一题(二项式展开式):题意: 求(a+b)^n的展开式,例如(a+b)^3=a^3+3a^2+3ab^2+b^3。思路: 题目中告诉了我们求(a+b)^n的方法,(a+b)^n=?a^n+?a^(n-1)b+?a^(n-2)b^2+…+?b^n其中问号表示系数,(a+b)^n展开式的第i+1项(i=0...n)为a^(n-i)b^i前面的系数为C(n,i),如果系数为
2018-02-01 19:04:31 300
原创 jzoj_1月31日D组
第一题(奇数统计):题意: 给出n个数,里面有一个数是出现了奇数次的,我们要求出这个数。思路: 这题太水了,数据也是很小,直接开桶判断。代码:#includeint n,x,b[500001],m,q;int main(){ freopen("count.in","r",stdin); freopen("count.out","w",stdout);
2018-02-01 18:24:47 272
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人