study from:

https://www.cnblogs.com/flashhu/p/9480669.html

3.斜率dp

study from:http://www.cnblogs.com/MashiroSky/p/6009685.html

或单减

https://www.luogu.org/problemnew/show/P3195

study from:http://www.cnblogs.com/MashiroSky/p/5968118.html

 1 #include <cstdio>
2 #include <cstdlib>
3 #include <cmath>
4 #include <cstring>
5 #include <time.h>
6 #include <string>
7 #include <set>
8 #include <map>
9 #include <list>
10 #include <stack>
11 #include <queue>
12 #include <vector>
13 #include <bitset>
14 #include <ext/rope>
15 #include <algorithm>
16 #include <iostream>
17 using namespace std;
18 #define ll long long
19 #define minv 1e-6
20 #define inf 1e9
21 #define pi 3.1415926536
22 #define E 2.7182818284
23 const ll mod=1e9+7;//998244353
24 const int maxn=5e4+10;
25
26 ll sum[maxn],a[maxn],f[maxn],L;
27 int q[maxn];
28
29 double slope(int j,int k)
30 {
31 return (f[k]-f[j]+(a[k]+L+1)*(a[k]+L+1)-(a[j]+L+1)*(a[j]+L+1))
32 /2.0/(a[k]-a[j]);
33 }
34
35 int main()
36 {
37 int n,l,r,i;
38 ll s;
39 scanf("%d%lld",&n,&L);
40 sum[0]=0;
41 l=1,r=1;
42 f[0]=0;
43 q[1]=0;
44 for (i=1;i<=n;i++)
45 {
46 scanf("%lld",&s);
47 sum[i]=sum[i-1]+s;
48 a[i]=sum[i]+i;
49 while (r>l && slope(q[l],q[l+1])<=a[i]) //have =
50 l++;
51 f[i]=f[q[l]]+pow(i-q[l]-1+sum[i]-sum[q[l]]-L,2);
52 while (r>l && slope(q[r-1],q[r])>slope(q[r],i))//have no =
53 r--;
54 q[++r]=i;
55 }
56 printf("%lld",f[n]);
57 return 0;
58 }

https://www.luogu.org/problemnew/show/P2900

 1 #include <cstdio>
2 #include <cstdlib>
3 #include <cmath>
4 #include <cstring>
5 #include <time.h>
6 #include <string>
7 #include <set>
8 #include <map>
9 #include <list>
10 #include <stack>
11 #include <queue>
12 #include <vector>
13 #include <bitset>
14 #include <ext/rope>
15 #include <algorithm>
16 #include <iostream>
17 using namespace std;
18 #define ll long long
19 #define minv 1e-6
20 #define inf 1e9
21 #define pi 3.1415926536
22 #define nl 2.7182818284
23 const ll mod=1e9+7;//998244353
24 const int maxn=5e4+10;
25
26 struct node
27 {
28 ll x,y;
29 }s[maxn],d[maxn];
30
31 ll f[maxn];
32 int q[maxn];
33
34 int cmp(node a,node b)
35 {
36 if (a.y==b.y)
37 return a.x>b.x;
38 else
39 return a.y>b.y;
40 }
41
42 double slope(int j,int k)
43 {
44 return 1.0*(f[k]-f[j])/(d[j+1].y-d[k+1].y);
45 }
46
47 int main()
48 {
49 int n,i,m,k,l,r;
50 scanf("%d",&n);
51 for (i=1;i<=n;i++)
52 scanf("%lld%lld",&s[i].x,&s[i].y);
53 sort(s+1,s+n+1,cmp);
54 m=0;
55 k=0;
56 for (i=1;i<=n;i++)
57 if (s[i].x>k)
58 {
59 d[++m]=s[i];
60 k=s[i].x;
61 }
62
63 f[0]=0;
64 q[1]=0;
65 l=1,r=1;
66 for (i=1;i<=m;i++)
67 {
68 while (l<r && slope(q[l],q[l+1])<=d[i].x)
69 l++;
70 f[i]=f[q[l]]+d[q[l]+1].y*d[i].x;
71 while (l<r && slope(q[r-1],q[r])>slope(q[r],i))
72 r--;
73 q[++r]=i;
74 }
75 printf("%lld",f[m]);
76 return 0;77 }

各种蕴含算法思想的DP - 2的更多相关文章

  1. 各种蕴含算法思想的DP - 3

    内容中包含 base64string 图片造成字符过多,拒绝显示

  2. 各种蕴含算法思想的DP - 1

    study from: https://www.cnblogs.com/flashhu/p/9480669.html 1.前缀和 https://www.luogu.org/problemnew/sh ...

  3. AC自动机——多模式串匹配的算法思想

    标准KMP算法用于单一模式串的匹配,即在母串中寻求一个模式串的匹配,但是现在又存在这样的一个问题,如果同时给出多个模式串,要求找到这一系列模式串在母串存在的匹配个数,我们应该如何处理呢? 基于KMP算 ...

  4. 机器学习&数据挖掘笔记(常见面试之机器学习算法思想简单梳理)

    机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 作者:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 前言: 找工作时( ...

  5. [转]机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)

    机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 转自http://www.cnblogs.com/tornadomeet/p/3395593.html 前言: 找工作时(I ...

  6. JVM三种垃圾收集算法思想及发展过程

    JVM垃圾收集算法的具体实现有很多种,本文只是介绍实现这些垃圾收集算法的三种思想和发展过程.所有的垃圾收集算法的具体实现都是遵循这三种算法思想而实现的. 1.标记-清除算法 标记-清除(Mark-Sw ...

  7. 基本算法思想Java实现的详细代码

    基本算法思想Java实现的详细代码 算法是一个程序的灵魂,一个好的算法往往可以化繁为简,高效的求解问题.在程序设计中算法是独立于语言的,无论使用哪一种语言都可以使用这些算法,本文笔者将以Java语言为 ...

  8. 基本算法思想之递推算法思想(C++语言描述)

    递推算法是非常常用的算法思想,在数学计算等场合有着广泛的应用.递推算法适合有明显公式规律的场合. 递推算法基本思想 递推算法是一种理性思维莫斯的代表,根据已有的数据和关系,逐步推到而得到结果.递推算法 ...

  9. [算法模版]子序列DP

    [算法模版]子序列DP 如何求本质不同子序列个数? 朴素DP 复杂度为\(O(nq)\).其中\(q\)为字符集大小. \(dp[i]\)代表以第\(i\)个数结尾的本质不同子序列个数.注意,这里对于 ...

随机推荐

  1. PHP 练习(租房子)

    一.题目要求 二.题目做法 1.建立数据库 2.封装类文件 <?php class DBDA { public $fuwuqi="localhost"; //服务器地址 pu ...

  2. kali安装后的网络设置教程(必需)

    本文只适用于kali安装完成后的网络设置,使用NAT模式,关于桥接模式设置在完成本教程后,可以自行百度,教程有很多,但前提是你已经执行完了本教程才能进行进一步的设置(但有些人的kali是可以直接联网的 ...

  3. SSIS 你真的了解事务吗?

    事务用于处理数据的一致性,事务的定义是,处于同一个事务中的操作是一个工作单元,要么全部执行成功,要么全部执行失败.把事务的概念应用到在实际的SSIS Package场景中,如何在Package中实现事 ...

  4. Ajax引擎:ajax请求步骤详细代码

    说起AJAX,可能是很多同学在很多地方都看到过,各大招聘网站上对于WEB前端和PHP程序员的技能要求清单中也是必不可少的一项.但是,ajax请求步骤详细代码以及说明却比较少见到 什么是AJAX引擎? ...

  5. 机器学习初入门03 - Matplotlib

    这一部分很简单,所以以代码的形式给出,在实际学习开发中,Matplotlib最好只把它当成一个画图的工具来用,没有必要深究其实现原理是什么. 一.折线图的绘制 import pandas as pd ...

  6. Google C++ 编码规范

    刚刚看到一位博主的文章分享Google C++ 编码规范 本人做一下记录,方便以后学习.. 中文在线版本地址: http://zh-google-styleguide.readthedocs.io/e ...

  7. Windows7下Java运行时环境搭建

    第一步:下载JDK 地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html,(由于Sun于2009年被oracle收 ...

  8. SpringMVC 之 @ResponseBody 和 @RequestBody

    前后端进行数据交互的时候,规定数据交互的格式,使数据交互规范而统一,是极为重要的事.一般而言,我们会采用 JSON 进行数据交互.本文暂不讨论如何 JSON 的格式规范,而是解析一下如何在 Sprin ...

  9. FTP地址

    访问不了FTP的同学可以试试用IPv6 地址2001:da8:203:ed5:CEB2:55FF:FE8B:ED1来访问,用户名密码不变.

  10. 美食查询手机应用"吃了么":NABC

    一 N(need) 当你在一个陌生的地方游玩,想吃到当地的招牌美食时怎么办? 当你听说有一个很好吃的家常菜,也想自己下厨试试时怎么办?打印出菜谱,还是奔波于厨房和电脑之前? 查询周边美食的功能对于那些 ...