传送门

文章目录

  • 题意:
  • 思路:

题意:

思路:

首先证明一个结论:一个数最多被加两次。
首先假设a[i]=a[i−1]a[i]=a[i-1]a[i]=a[i−1]或a[i]=a[i+1]a[i]=a[i+1]a[i]=a[i+1],那么此时可以将a[i]=a[i]+1a[i]=a[i]+1a[i]=a[i]+1,若此时a[i]=a[i−1]a[i]=a[i-1]a[i]=a[i−1]或a[i]=a[i+1]a[i]=a[i+1]a[i]=a[i+1],那么可以将其再加一,这个时候一定与两边的都不想等,此时再加就没有意义了。
既然只能加两次,那么定义f[i][j]f[i][j]f[i][j]表示到了第iii个位置,这个数加了jjj次后满足条件的最小代价,转移方程:f[i][j]=min(f[i][j],f[i−1][k]+j∗b[i])f[i][j]=min(f[i][j],f[i-1][k]+j*b[i])f[i][j]=min(f[i][j],f[i−1][k]+j∗b[i])
注意初始化的时候要将其设为尽可能大的数。
代码中101010改成333即可,当时是猜了个结论。

// Problem: D. Make The Fence Great Again
// Contest: Codeforces - Educational Codeforces Round 73 (Rated for Div. 2)
// URL: https://codeforces.com/contest/1221/problem/D
// Memory Limit: 256 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native")
//#pragma GCC optimize(2)
#include<cstdio>
#include<iostream>
#include<string>
#include<cstring>
#include<map>
#include<cmath>
#include<cctype>
#include<vector>
#include<set>
#include<queue>
#include<algorithm>
#include<sstream>
#include<ctime>
#include<cstdlib>
#include<random>
#include<cassert>
#define X first
#define Y second
#define L (u<<1)
#define R (u<<1|1)
#define pb push_back
#define mk make_pair
#define Mid ((tr[u].l+tr[u].r)>>1)
#define Len(u) (tr[u].r-tr[u].l+1)
#define random(a,b) ((a)+rand()%((b)-(a)+1))
#define db puts("---")
using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); }
//void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); }
//void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int,int> PII;const int N=300010,mod=1e9+7,INF=0x3f3f3f3f;
const LL inf=0x3f3f3f3f3f3f3f3f;
const double eps=1e-6;int n;
int a[N],b[N];
LL f[N][20];int main()
{//  ios::sync_with_stdio(false);
//  cin.tie(0);int _; scanf("%d",&_);while(_--) {scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d%d",&a[i],&b[i]);for(int i=1;i<=n;i++) for(int j=0;j<=10;j++) f[i][j]=inf;for(int i=0;i<=10;i++) f[1][i]=1ll*b[1]*i;for(int i=2;i<=n;i++) {for(int j=0;j<=10;j++) {for(int k=0;k<=10;k++) {if(a[i-1]+k!=a[i]+j) f[i][j]=min(f[i][j],f[i-1][k]+1ll*j*b[i]);}}}LL ans=inf;for(int i=0;i<=10;i++) ans=min(ans,f[n][i]);printf("%lld\n",ans);}return 0;
}
/**/

Educational Codeforces Round 73 (Rated for Div. 2) Make The Fence Great Again dp + 结论相关推荐

  1. Educational Codeforces Round 73 (Rated for Div. 2) F. Choose a Square 线段树 + 二维转一维

    传送门 文章目录 题意: 思路: 题意: 给你nnn个点(xi,yi)(x_i,y_i)(xi​,yi​),每个点有个价值cic_ici​,现在你可以框一个正方形,要求左下角和右上角的坐标(x,y)( ...

  2. Educational Codeforces Round 73 (Rated for Div. 2) E. Game With String 思维博弈 好题(2500)

    传送门 文章目录 题意: 思路: 题意: 思路: 我们将每一段...拿出来看成若干段,将其分成以下四种情况: (1)len<b(1)len<b(1)len<b (2)b≤len< ...

  3. Educational Codeforces Round 111 (Rated for Div. 2) E. Stringforces 二分 + 状压dp

    传送门 文章目录 题意: 思路: 题意: 给你一个串,只包含前kkk个字母和???,定义fif_ifi​表示第iii个字母在串中出现的最长连续长度,你现在需要将???替换为前kkk个字母,使得mini ...

  4. Educational Codeforces Round 73 (Rated for Div. 2)

    A 很简单的一个模拟,只要前面的数字有两个以上就能合成后面的,我们进行一遍合成看能不能出现2048就可以了. #include<cstdio> #include<cstring> ...

  5. Educational Codeforces Round 81 (Rated for Div. 2) E. Permutation Separation 线段树 + dp

    传送门 文章目录 题意: 思路: 题意: 给你一个打乱的排列,每个位置都各有一个价值,让你选择一个分界点,分成p1,p2,...,prp_1,p_2,...,p_rp1​,p2​,...,pr​和pr ...

  6. Educational Codeforces Round 77 (Rated for Div. 2) C. Infinite Fence 数论

    传送门 文章目录 题意: 思路: 题意: 思路: 碰到这样的题肯定是先写几个找找规律了,随便写几个就可以发现是以lcm(a,b)lcm(a,b)lcm(a,b)为一个循环,所以我们只需要在一个周期lc ...

  7. Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)

    Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...

  8. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  9. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

最新文章

  1. hdu 5100 n*n棋盘放k*1长方条最多覆盖面积
  2. C++ 中 vector 的作用:
  3. 【Android】ClassLoader Tree
  4. Civil 3D 中使用COM API导入DEM数据创建曲面
  5. android 开发艾特功能,Android Binder
  6. Python学习笔记(运算符)
  7. python界面编程 plc_在python gui编程怎么运行
  8. Spring的AOP特性
  9. 使用os.system调用外部程序,如wget下载
  10. An attempt by a client to checkout a Connectio n has timed out报错解决
  11. .net中button按钮点击之后的两个参数是什么意思_如果想完成更加有意思和强大的程序,你应该这么做...
  12. 非酋用计算机弹唱,非酋简谱 薛明媛/朱贺 听说爱情就是这样子
  13. 计算机办公软件海报,word知识面制作一个图文并茂的宣传海报
  14. 合群是堕落的开始,优秀是开始的独行!(孤独的自白)
  15. 活体检测——Oulu-NPU数据集
  16. python中一般使用几个空格表示缩进_python中使用空格还是使用 Tab键缩进的建议...
  17. 大学生上课为什么一定要认真听讲?
  18. centos7 glibc2.17升级到glibc2.28
  19. 国产开源「文本-视频生成」模型!免费在线体验,一键实现视频生成自由
  20. 数据索引---Solr DIH

热门文章

  1. 软件项目组织管理(五)项目范围管理
  2. mysql如何快速插入一千万条数据_如何快速安全的插入千万条数据?
  3. 动态ram依靠什么存储信息_ROM、RAM、DRAM、SRAM和FLASH傻傻分不清
  4. 单身的原因终于找到了!原来是这几个......
  5. 5分钟盗走你的隐私照片,这个全球性漏洞到底有多可怕
  6. 程序员为啥365天都背电脑包?这答案我服!
  7. 裤子换裙子,就问你GAN的这波操作秀不秀
  8. 我用Python玩小游戏“跳一跳”,瞬间称霸了朋友圈!
  9. oracle创建public链接,如何在oracle直接使用地址来创建database link
  10. java ready_Java PushbackReader ready()用法及代码示例