思路:这个题是在一个n2的复杂度之上进行了dp方程的优化变形,最后变成线性dp,但还是有一些不懂(菜是本质,%oi爷们)

代码:

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
typedef long long LL;
int n,k;
int col[maxn];
LL dp[maxn],sum[maxn],val[maxn];bool Eoln(char ch) {return ch==10||ch==13||ch==EOF;}
char readc()
{static char buf[100000],*l=buf,*r=buf;if (l==r) r=(l=buf)+fread(buf,1,100000,stdin);if (l==r) return EOF; else return *l++;
}
int readi(int &x)
{int tot=0,f=1;char ch=readc(),lst='+';while ('9'<ch||ch<'0') {if (ch==EOF) return EOF;lst=ch;ch=readc();}if (lst=='-') f=-f;while ('0'<=ch&&ch<='9') tot=tot*10+ch-48,ch=readc();x=tot*f;return Eoln(ch);
}int main()
{readi(n),readi(k);for(int i=1;i<=n;i++) readi(col[i]);int a;for(int i=1;i<=n;i++) readi(a),sum[i]=sum[i-1]+a;memset(val,-0x3f,sizeof(val));for(int i=1;i<=n;i++){dp[i]=dp[i-1];dp[i]=max(dp[i],val[col[i]]+sum[i]);val[col[i]]=max(val[col[i]],dp[i-1]-sum[i-1]);}printf("%lld\n",dp[n]);return 0;
}

转载于:https://www.cnblogs.com/lalalatianlalu/p/8439718.html

507 LOJ 「LibreOJ NOI Round #1」接竹竿相关推荐

  1. LOJ #510. 「LibreOJ NOI Round #1」北校门外的回忆(倍增+动态开点线段树)

    题目 这个题是一个精彩的分析性质区间离散的问题 真的详细 维护链真的一绝. LOJ\rm LOJLOJ最短ACCode\rm AC \ CodeAC Code #include<bits/std ...

  2. LOJ#510. 「LibreOJ NOI Round #1」北校门外的回忆(线段树)

    题面 传送门 题解 感谢\(@M\_sea\)的代码我总算看懂题解了-- 这个操作的本质就是每次把\(x\)的\(k\)进制最低位乘\(2\)并进位,根据基本同余芝士如果\(k\)是奇数那么最低位永远 ...

  3. LOJ #573. 「LibreOJ NOI Round #2」单枪匹马 线段树

    $f$ 函数暴力计算的话是 $O(n)$ 的(用一个 $\frac{x}{y}$ 来保存每一步计算结果,然后依次合并) 我们将一段区间的结果写成 $\frac{ax+by}{cx+dy}$ 的形式,初 ...

  4. 「LibreOJ NOI Round #2」不等关系 (dp+NTT分治)

    description 戳我看题目哦 solution 有一道非常相似的题目 一棵树,每条边限制两个端点的大小关系(限制 a[u]>a[v]a[u]>a[v]a[u]>a[v] 或 ...

  5. 【LOJ574】「LibreOJ NOI Round #2」黄金矿工

    [题目链接] 点击打开链接 [思路要点] 可参考 官方题解 . 以下为笔者个人的见解,方便起见,下称矿工为老鼠,金矿为洞. 我们可以对洞的权值加上深度,老鼠的权值减去深度,从而不需要考虑树的边权. 考 ...

  6. 【LOJ573】「LibreOJ NOI Round #2」单枪匹马(矩阵乘法)

    传送门 题解: 注意到分子分母每次无非就是交换位置然后分母加上分子的若干倍. 把这个转移写成矩阵的形式,求个逆,维护一下矩阵和矩阵的逆的前缀积就行了. 代码: #include<bits/std ...

  7. 「LibreOJ NOI Round #2」单枪匹马

    题目 通过这道题成功发现我不会矩乘 答案是一个连分数,看起来不像是一般的数据结构能做的样子,设\(x_{l,r},y_{l,r}\)分别表示\([l,r]\)询问的分子和分母 于是有 \[\frac{ ...

  8. 【LOJ573】「LibreOJ NOI Round #2」单枪匹马

    [题目链接] 点击打开链接 [思路要点] 见 官方题解 .(反正也是我写的) 时间复杂度 O(N+M)O(N+M)O(N+M) . [代码] #include<bits/stdc++.h> ...

  9. 「LibreOJ NOIP Round #1」旅游路线

    「LibreOJ NOIP Round #1」旅游路线 题目链接 做法: 首先肯定要预处理些东西,来使单词询问达到\(o(logn)\)或者\(o(1)\)的复杂度,又因为距离这个东西的范围太大,我们 ...

  10. LOJ#538. 「LibreOJ NOIP Round #1」数列递推

    description sosusosu 虐爆 OI 之后成为了一名文化课选手.一天,他做作业碰到了一堆数列问题,每道题给出的数列都是以下形式: 给定一个下标从000开始,无限长的整数列ai{a_{i ...

最新文章

  1. Explain执行计划
  2. ExtJS 4.2 第一个程序
  3. 奔图内部扫描错误13_现代浏览器内部揭秘(第三部分)
  4. 【CyberSecurityLearning 55】SQL注入
  5. LeetCode 多线程 1115. 交替打印FooBar
  6. 超过屏幕长度字符省略
  7. MFC开发IM-第八篇、调整各个控件的上下tab顺序
  8. python降维可视化 自编码_如何使用自动编码器可视化降维? (Python | TensorFlow)...
  9. Linux brctl 命令,虚拟网络设备 LinuxBridge 管理工具
  10. js实现删除页面元素
  11. ESP8266模块搭建最小系统原理图
  12. 波导缝隙天线(一)[搬运]
  13. HTML-文本格式化
  14. 最近的一些杂感-20220107
  15. 人员定位管理系统保障危化品行业安全作业
  16. 空间机械臂Matlab/Simulink仿真程序自由漂浮空间机械臂(双臂)轨迹跟踪控制matlab仿真程序
  17. 史蒂文斯理工学院计算机科学,史蒂文斯理工学院
  18. 项目用到的注解(乱七八糟)
  19. LinuxC++:网络编程(一)最原始服务端及客户端代码实现和函数释义
  20. 爱死磕:8月30日市场策略最高38个点!

热门文章

  1. 基于队列的二叉树层次遍历
  2. 【图像处理】hough变换_检测直线
  3. 分析uint8_t\uint_16_t\uint32_t\uint64_t
  4. 深度学习----现今主流GAN原理总结及对比
  5. Java异常处理机制(基础知识)
  6. 2015 ICCV论文《Joint Fine-Tuning in Deep Neural Networks for Facial Expression Recognition》
  7. cognos数据源配置修改oracle,Cognos 新建数据源报错(原创)
  8. 2021-06-06 下拉框,列表框..
  9. 服务器显示跨域请求,出现跨域问题的原因及其解决方法
  10. 提示框几秒消失比较好_移动设计提示框介绍-《产品日常笔记》