前言

考试时题目都没看懂,题目十分玄学
举个栗子
Sum(sj,s(j+1))Sum(sj,s(j+1))Sum(s_j, s_{(j+1)})就是Sum(msj,ms(j+1))Sum(msj,ms(j+1))Sum(m_{s_j}, m_{s_{(j+1)}})
and
用1∼n1∼n1\sim n的数概况1∼10000001∼10000001\sim 1000000的数

反正就是十分的玄学


正题


大意

在nnn个数m" role="presentation" style="position: relative;">mmm里选kkk个数。
如果我们选择k" role="presentation" style="position: relative;">kkk个数那么就有一个序列s=s1,s2...sks=s1,s2...sks=s_1,s_2...s_k表示选择第sisis_i个。
然后对于每一个没有被选择的数都会对结果造成一点误差。
如果没有被选择的数编号为iii,对于每一个i" role="presentation" style="position: relative;">iii
如果 i<s1i<s1i, 误差是:2∗|Mi−Ms1|2∗|Mi−Ms1|2 * | M_i - M_{s_1} |
如果sj<i<sj+1sj<i<sj+1s_j,误差是:|2∗Mi−msj−msj+1||2∗Mi−msj−msj+1|| 2 * M_i - m_{s_j}- m_{s_{j+1}}|
如果i>ski>ski>s_k,误差为:2∗|Mi−Msk|2∗|Mi−Msk|2 * | M_i - M_{s_k} |
求选择最少的数使误差小于eee


解题思路

先预处理一个g[i][j]" role="presentation" style="position: relative;">g[i][j]g[i][j]g[i][j]表示在i∼ji∼ji\sim j这个区间内选择一个数的最小误差。
然后用一个f[i][j]f[i][j]f[i][j]表示选择第iii个数,前面的已经取了j" role="presentation" style="position: relative;">jjj个数时的情况。
然后每次枚举一个在iii前面的k" role="presentation" style="position: relative;">kkk从f[i][j]f[i][j]f[i][j]转移到f[k][j+1]f[k][j+1]f[k][j+1],动态转移方程

f[k][j+1]=max{f[i][j]+g[i+1][k−1]}f[k][j+1]=max{f[i][j]+g[i+1][k−1]}

f[k][j+1]=max\{f[i][j]+g[i+1][k-1]\}


代码

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
long long n,e,m[105],g[105][105],f[105][105];
int main()
{memset(f,127/3,sizeof(f));scanf("%lld%lld",&n,&e);for (ll i=1;i<=n;i++)scanf("%lld",&m[i]);for (ll i=0;i<=n+1;i++)for (ll j=i+1;j<=n+1;j++)for (ll k=i+1;k<=j-1;k++)if (!i) g[i+1][j-1]+=2*abs(m[k]-m[j]);//特判——左else if (j==n+1) g[i+1][j-1]+=2*abs(m[k]-m[i]);//特判——右else g[i+1][j-1]+=abs(2*m[k]-m[i]-m[j]);//预处理f[0][0]=0;for (ll i=0;i<=n;i++)for (ll j=0;j<=n;j++)if (f[i][j]<=e)for (ll k=i+1;k<=n+1;k++)f[k][j+1]=min(f[k][j+1],f[i][j]+g[i+1][k-1]);//动态转移for (ll i=2;i<=n+1;i++)if (f[n+1][i]<=e)//枚举答案{printf("%lld %lld",i-1,f[n+1][i]);return 0;}
}

jzoj1293,P2933-气象牛(气象测量)【dp】相关推荐

  1. 10.31纪中DAY3_公牛和母牛 气象牛 轻轨 设计

    noip2019-counting down three weeks 纪中day3 (头发日益稀少) 10.31纪中B组notes 公牛和母牛(USACO FEB09 Problem 'bullcow ...

  2. BZOJ1575: [Usaco2009 Jan]气象牛Baric

    n<=100个数字,选最少的个数使"误差"少于E并输出选该个数下最小的"误差".误差定义: 对于任何测量结果子集,每一个非此子集中的结果都会产生误差.总误 ...

  3. codeforces(牛客网dp专题,排序)

    链接:https://ac.nowcoder.com/acm/problem/21314 来源:牛客网 牛牛正在打一场CF 比赛时间为T分钟,有N道题,可以在比赛时间内的任意时间提交代码 第i道题的分 ...

  4. 中国气象网 气象数据开放平台 API使用方法 (Android)(已废弃)

    2016.7.25更新: 原来的接口已经停用了,现在换了http://www.weatherdt.com/ 这个基本都要求收费了,没有在研究,声明一下. ======================= ...

  5. 中国气象网 气象数据开放平台 API用法 (Android)

    因为要做个天气应用.须要找个天气的API.上网上搜了下都是那几个,并且基本都过时了.百度有个天气API,只是貌似仅仅能提供当天的.网上提到的中国气象接口的文章,大都用的时旧API,有的被封了,有的永远 ...

  6. 中国气象网气象数据后台获取方法

    项目开发中需要用到天气信息,但有不适合直接放置气象插件,于是自己找到这个方法:周期性从中国气象网抓取信息保存进数据库,然后显示. 最主要是这几个链接地址,其他的不重要.相信连接地址的规律不用我说也明白 ...

  7. 【智慧气象】气象监测系统集成设备

    气象监测系统,也就是气象监测站,使用越来越广泛,在学校.科研机构.农业.市政交通等领域都有用武之地.具体在应用场景中需求不同,气象监测系统集成设备略有不同. 所谓的气象监测系统,主要功能是用于监测气象 ...

  8. 牛客网dp专题 数位dp

    文章目录 数位dp 例题: NC116652 uva11038 How many 0's NC15035 送分了QAQ NC20669 诡异数字 NC20665 7的意志 NC17385 Beauti ...

  9. CF EDU138 D(数论) ,牛练104C(DP) ,焦作F. Honeycomb(复杂建图,BFS最短路)

    一个感觉还不错的题 D. Counting Arrays 题意:当我们有一个数组,我们可以移除其和满足gcd(a[i],i)=1的元素(移除后自动补位).现在我们有一个数组b,b的每个元素规定了当前我 ...

最新文章

  1. skyline三维模型规格
  2. slam 常用数据集的帧率
  3. java调用php session_php读取memcahed java session
  4. Python《第一次爬虫遭遇反盗链(下)》
  5. 【redis】Redis中常用的五大数据类型的介绍以及代码的实现
  6. 罗技g502鼠标使用感受,以及与g402的对比体验
  7. 天才小毒妃 第878章 你喜欢孩子
  8. 将靠父id的层级关系处理成编码形式
  9. WIn7 解决 - ReadyBoost 未启用,因为该计算机的运行速度足够快
  10. 解决笔记本HDMI外接显示器没声音的问题
  11. 大学生破译周鸿祎手机号 李开复放 橄榄枝
  12. Origin怎么画圆形而非椭圆形?
  13. 《On Java》介绍
  14. Spire.Office 7.5.4 发布 ~~ Spire.Office
  15. java的public int_Java语言中“int”、“public”、“static int ”有什么区别?
  16. 希望成功,给点积分,才有勇气开VIP
  17. 生化危机2win10完美版
  18. APDS-9960手势检测、接近检测、数字环境光感(ALS)和色感(RGBC)传感器驱动(基于传感器管理组件)...
  19. 【matlab】GUI信号发生器软面板
  20. 老毛桃启动U盘快速为硬盘分区图文教程

热门文章

  1. mysql5.5 mysqli_php5.5.38增加mysqli扩展
  2. python 小甲鱼 代码_Python小代码
  3. librosa能量_语音MFCC提取:librosa amp;amp; python_speech_feature(2019.12)
  4. html5 获取文件属性,H5新属性--file文件读取
  5. python导入文件列行_python读写csv文件并增加行列的实例代码
  6. python getattr_详解 Python 的二元算术运算,为什么说减法只是语法糖?
  7. 栈的基础概念与经典题目(Leetcode题解-Python语言)
  8. JAVA开发需求分析套路_毕设做什么好?感觉都是套路了
  9. LeetCode 617合并二叉树-简单
  10. Chain of responsibility(职责链)--对象行为型模式