40pts:
设f[i]表示现在在第i个柱子的最多果冻数。
考虑转移,那能转移过到i柱子的柱子一定是他与其之间距离绝对值小于等于m的,设它为k。
动态转移方程:
f[i]=max(f[i],f[j]),f[i]+=x[i]f[i]=max(f[i],f[j]),f[i]+=x[i]f[i]=max(f[i],f[j]),f[i]+=x[i]

#include <cstdio>
#include <iostream>
#include <cmath>using namespace std;const int N = 2e5 + 10;
int n, m, h[N], w[N], f[N], ans;int main()
{scanf("%d%d", &n, &m);for(int i = 1; i <= n; i++) scanf("%d%d", &h[i], &w[i]);for(int i=1;i<=n;i++){for(int j=1;j<i;j++) if(abs(h[i] - h[j]) <= m) f[i]=max(f[i],f[j]);f[i]+=w[i];}for(int i = 1; i <= n; i++) ans = max(ans, f[i]);printf("%d\n", ans); return 0;
}

100pts:
设fi表示到了高度i能获得的最大果冻数
每做到一个木桩,判断能否更新f[hi]
即max{f[j]}+xi能否更优
j为转移状态,即高度[hi-m,hi+m]
其中能转移的最优状态设为f[k],则
f[hi] =max(f[hi],f[k]+xi)
这个状态可以用线段树在O(log2n)的时间内求出
总的时间复杂度是
O(n log2 max(hi))

#include <cstdio>
#include <iostream>
using namespace std;
const int N = 2e6 + 10;
int n, m, ans, tmp, tree[N << 2], h[N], x[N];int query(int now, int ql, int qr, int l, int r)
{if(r < ql || l > qr) return 0;if(ql <= l && r <= qr) return tree[now];int mid = (l + r) >> 1;return max(query(now << 1, ql, qr, l, mid) , query(now << 1 | 1, ql, qr, mid + 1, r));
}void change(int now, int x, int val, int l, int r)
{if(x == l && x == r) {tree[now] = val; retu rn;}int mid = (l + r) >> 1;if(x <= mid) change(now << 1, x, val, l, mid);if(x > mid) change(now << 1 | 1, x, val, mid + 1, r);tree[now] = max(tree[now << 1], tree[now << 1 | 1]);
}int main()
{scanf("%d%d", &n, &m);for(int i = 1; i <= n; i++)scanf("%d%d", &h[i], &x[i]);for(int i = 1; i <= n; i++){tmp = query(1, max(h[i] - m, 0), h[i] + m, 1, 1000010) + x[i];ans = max(ans , tmp);change(1, h[i], tmp, 1, 1000010); }printf("%d\n", ans);}

2021-08-11校网比赛C题相关推荐

  1. 2021-08-11校网比赛D题

    思路: 这不直接反素数模板题? 设[1-N]中的一个数x, 我们将x质因数分解, 即x=p1^c1 * p2c2*--*pmcm 则我们发现它的约数个数可以被表示为 (c1+1)(c2+1)--(cm ...

  2. 2021-08-10校网比赛B题

    思路: 建立一个超级源点S, S向所有人连边,边权为雇佣费用 人与人之间存在连边,即交流费用 求最小生成树即可 注意几个细节: 对于最小生成树的边存储只能存一半,否则会超时. 千万不要打快读,我也不知 ...

  3. 2021-08-11校网比赛A题

    思路: 暴力O(n2n^2n2)修改对于一个点x的最小修改价值, 比赛数据真的虚伪,O(N2N^2N2)修改的思路都可以水过. 我们将一个点最小修改价值作为背包问题中的物品体积, 一个点的信号强度作为 ...

  4. 2021-08-09校网比赛C题

    思路: a是一个全排列,n<=10^4 如果进行枚举的话复杂度是O(n2n^2n2), 但是对中位数的计算要做到O(1)不然会超时. 我也不知道数据怎么给n2n^2n2卡过的. 考虑怎么维护中位 ...

  5. 2021-08-09校网比赛B题

    思路: 30pts: 预处理出二维前缀和,循环枚举左上端点和右下端点, 判断区间和是否在闲置内即可. 区间和求值,设sum[i][j]表示以(i,j)为右下端点的二维前缀和 dis=sum[i][j] ...

  6. 2021-08-09校网比赛D题

    思路: 考虑用总方案数-不合法方案数 总数为mnm^nmn 不合法的方案数即相邻的人不存在饭菜相同的情况, 数量为m∗(m−1)n−1m*(m-1)^{n-1}m∗(m−1)n−1,即第一个人任选一种 ...

  7. 2021-08-14校网比赛A题

    思路: 对于一个不取模的答案是不是可以转换成11111-k 那11111-是不是(10n−1)/9(10^n-1)/9(10n−1)/9 那我们考虑乘法逆元将原式转换一下,毕竟除法没有取模的运算嘛! ...

  8. 2021-08-10校网比赛D题

    思路: 考虑差分的思想,男生为+1,女生为-1,做前缀和 一段男女人数相等的序列[l,r] 应该满足sum[r]-sum[l-1]=0 即sum[r]=sum[l-1] sum的范围在[-n,n] 可 ...

  9. 2021-08-10校网比赛C题

    思路: 发现a[n]定下来以后, 第n位一定是a[n] +1 往前推 第n-1位就是 数1到n中 删掉了第a[n]+1大的数后 剩下的n-1个数中第a[n-1]+1大的数 以此类推 考虑如何在每次操作 ...

最新文章

  1. Nature:实验室培育的大脑可以拥有意识吗?
  2. TaskExecutor设计与实现
  3. HJ29 字符串加解密
  4. 用 Go 开发 Go 编译器
  5. jQueryh插件imgareaselect
  6. SRS(simple-rtmp-server)流媒体服务器源码分析--启动
  7. npm升级package.json依赖包
  8. combox 增加请选择_好消息!阜阳机动车互联网选号增加新号段!
  9. 2018-2019-2 20165303《网络对抗技术》Exp2 后门原理与实践
  10. ubuntu搭建nginx服务器,并测试axel与wget的下载速度
  11. 2014-12-02-2107-Java-UML
  12. 计算机网络 组网设计 论文,计算机网络组网毕业设计(校园局域网设计毕业论文)...
  13. [设计模式之禅读书笔记]006_设计模式六大原则(六):开闭原则
  14. Python3爬取搜狗微信公众号
  15. Android 自定义viewGroup实现淘宝二楼及处理多指触控事件
  16. ai怎么渐变颜色_AI的渐变工具为什么如此难用?
  17. java验证13位数书号_ISBN(国际标准书号)的校验
  18. centos7下载安装postgresql 12详细过程
  19. 第二天性-人类进化的经济起源
  20. 微信小程序开发之——婚礼邀请函-邀请函页面(4.3)

热门文章

  1. C++Builder Tchart与TDBchart
  2. 使用Nordic的nRF52840 Dongle配合Wireshark对蓝牙设备抓包(BLE)
  3. echarts地图省市两级下钻
  4. Android - 自定义Dialog内部透明,外部有遮罩
  5. python + selenium 刷B站播放量
  6. MoE 系列(二)|Golang 扩展从 Envoy 接收配置
  7. html5使鼠标移动上去页面上的图片向左移动
  8. DB2数据库设置归档模式
  9. EXP-00056: ORACLE error 12514 encountered解决方法
  10. 哈密顿算子重要性质证明