hpu_hdy
hpu_hdy
全部文章
分类
题解(24)
归档
标签
去牛客网
登录
/
注册
hpu_hdy的博客
全部文章
(共21篇)
51 nod 1460 连接小岛
先把两个相邻的最大距离和最小距离求出来,然后转化在把所有的按照最大的从小到大排序,如果最大的相等按照最小的从小到大排序,为什么不按照最小值从小到大排序呢?我们可以想一想。我们需要的是能够满足条件的举个例子 1 20 3 8 4 9 5 9 9 如果我们按照最小值从小到大排序的话应该把5给第一个,但是...
51nod
2020-11-25
0
468
51 nod 1491 黄金系统
这个题可以找出来规律是q^2=q+1;然后可以把小的往大的合并,不能把f[i]的给f[i-1],f[i-2],应该是存不下,我一开始这样写第19个样例wa了我下载下来对比发现和答案一样,但是不知道为什么显示的wa。这个可以统计每一位的值。如果一个位的不够可以从下两位提上来,如果哪一个abs>=...
51nod
2020-11-24
0
469
51nod 1420 数袋鼠好有趣
这题应该是分类分错了。就不写题解了。。。 #include<bits/stdc++.h> using namespace std; const int N = 5e5+10; int s[N]; multiset<int> st; int main() { i...
51nod
2020-11-23
0
461
51 nod 1557 两个集合
只需要将满足条件的数尽可能的放一个集合里面,然后看有没有不满足的条件发生,注意可能先放A也可能先放B,所以要跑两遍,一边先放A,一边先放B(没注意到这点wa了好多发。) #include<bits/stdc++.h> #define fo(i,a,b) for(int i=a;i<...
51nod
2020-11-23
0
531
51 nod 1574 排列转换
对于每一个点,如果他的p[i]=s[i],则不需要移动,如果在p序列中的位置在s序列中的左边,则p需要移动,在移动的过程中对于每一个需要向右移动的就都可以替换。同理向左的时候也是如此 4 4 2 1 3 3 2 4 1 p4在s4的左边,p2不需要移动,p1在s1的左边,p3在s3的右边,最优情况是...
51nod
2020-11-23
0
552
51 nod 1158 全是1的最大子矩阵
可以把问题转化成poj2559的这种问题,然后按照每行去计算。推荐一篇blog链接说明 #include<bits/stdc++.h> #define fo(i,a,b) for(int i=a;i<=b;i++) using namespace std; typedef lo...
51nod
2020-11-23
0
484
51 nod 1624 取余最长路
假设我们在第一行x处从第一行到第二行,在第二行的y处从第二行到第三行。 sum[1][x]+sum[2][y]-sum[2][x-1]+sum[3][n]-sum[3][y-1];将相同的移动到一边 sum[1][x]-sum[2][x-1]+sum[3][n]-sum[3][y-1]+sum[2]...
51nod
2020-11-23
0
428
51 nod 1215 数组的宽度
**题,写线段树的时候懒得写query_min了直接cv的max然后cv错了,找了半天。就只需要找到每个区间最大的值相加减去每个区间最小的相加。然后每一个值他的贡献数是(mid-l+1)*(n-i+1).正解是单调栈(不会写,等会了在补。 #include<bits/stdc++.h> ...
51nod
2020-11-20
0
474
51 nod 1153 选择子序列
这个题的题意好难说啊,a[b[i]]要从大到小,直接dfs就行了。 #include<bits/stdc++.h> #define fp(i,a,b) for(int i=a;i<=b;i++) typedef long long ll; typedef double dl; us...
51nod
2020-11-20
0
360
51 nod 1682 中位数计数
n数据是8000,O(n^2)复杂度就能过。因为中位数是按从小到大排序后的中间数。所以对一个区间a[l]到a[r]我们只需要小于a[i]和大于a[i]的个数相等就行。所以在查询每个a[i]的时候我们在遍历1-i的时候如果a[i]<a[j]就cnt++,a[i]>a[j]就cnt--,为啥...
51nod
2020-11-20
0
417
首页
上一页
1
2
3
下一页
末页