http://codeforces.com/contest/987/problem/C

题意:给你两个n的序列要你根据第一个序列(严格单调递增的方式)在第二个序列里找3个数加起来,输出最小的一个。

思路:先从前往后枚举两个最小的。在从后往前找一个加上使其最小,最后遍历剩下的三元组。

AC代码:

#include<bits/stdc++.h>
#define ll long long using namespace std;
const int maxn=;
const int INF=*1e9;
struct node{
int num,id;
};
struct node1{
ll h,Sum;
};
node a[maxn];
node1 sum[maxn];
int main(){
int n;
cin>>n;
for(int i=;i<=n;i++){
sum[i].Sum=INF;
}
for(int i=;i<=n;i++){
cin>>a[i].id;
}
for(int i=;i<=n;i++){
cin>>a[i].num;
}
ll Min=*1e9;
for(int i=;i<=n-;i++){
Min=*1e9;
for(int j=i+;j<=n;j++){
if(a[i].id<a[j].id){
if(a[i].num+a[j].num<Min)
{
Min=a[i].num+a[j].num;
}
}
}
sum[i].Sum=Min;
sum[i].h=;
}
//cout<<sum[2].Sum<<endl; for(int i=n-;i>=;i--){
Min=*1e9;
for(int j=i-;j>=;j--){
if(a[i].id>a[j].id){
if(sum[i].Sum+a[j].num<Min){
Min=sum[i].Sum+a[j].num;
}
}
}
sum[i].Sum=Min;
sum[i].h=;
}
Min=*1e9;
int i,k;
for( i=;i<=n;i++){
if(Min>sum[i].Sum&&sum[i].h==){
Min=sum[i].Sum;
k=i;
}
}
if(Min<INF){
cout<<Min<<endl;
}
else
cout<<"-1"<<endl;
return ; }

大神:

#include <bits/stdc++.h>
using namespace std;
const int maxn=,inf=0x3f3f3f3f;
int s[maxn],c[maxn],f[maxn],dp[maxn];
int n,ans;
int main(){
scanf("%d",&n);
for (int i=;i<=n;i++) scanf("%d",&s[i]);
for (int i=;i<=n;i++) scanf("%d",&c[i]);
dp[]=inf;
for (int i=;i<=n;i++){
dp[i]=inf;
for (int j=i-;j>=;j--){
if(s[i]>s[j])
dp[i]=min(dp[i],c[i]+c[j]);
}
// printf("%d ",dp[i]);
}
// printf("\n");
ans=inf;
for (int i=;i<=n;i++){
f[i]=inf;
for (int j=i-;j>=;j--){
if(s[j]<s[i]) f[i]=min(f[i],c[i]+dp[j]);
}
// printf("%d ",f[i]);
ans=min(ans,f[i]);
}
// printf("\n");
if(ans==inf) puts("-1");
else printf("%d\n",ans);
return ;
}

CF C. Three displays(DP+思维)的更多相关文章

  1. CF 987C Three displays DP或暴力 第十一题

    Three displays time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  2. cf1153D 树形dp+思维

    一千八的题也不会做了呜呜呜 size[u]表示结点u下的叶子结点, 思维:可以想到一个子树对其父亲会有一个消耗值 考虑一个点如果是max,那么其最大值可以是size[u]-p,p是消耗值最小的子树 一 ...

  3. E. The Contest ( 简单DP || 思维 + 贪心)

    传送门 题意: 有 n 个数 (1 ~ n) 分给了三个人 a, b, c: 其中 a 有 k1 个, b 有 k2 个, c 有 k3 个. 现在问最少需要多少操作,使得 a 中所有数 是 1 ~ ...

  4. 7月15日考试 题解(链表+状压DP+思维题)

    前言:蒟蒻太弱了,全打的暴力QAQ. --------------------- T1 小Z的求和 题目大意:求$\sum\limits_{i=1}^n \sum\limits_{j=i}^n kth ...

  5. CF 256D. Good Sequences(DP)

    题目链接 主要是标记前面素数的最大的DP值,要认真一些.没想到居然写了一个很难发现的错误. #include <cstdio> #include <cstring> #incl ...

  6. CF 335B - Palindrome 区间DP

    335B - Palindrome 题目: 给出一个字符串(均有小写字母组成),如果有长度为100的回文子串,输出该子串.否则输出最长的回文子串. 分析: 虽然输入串的长度比较长,但是如果存在单个字母 ...

  7. CF(435D - Special Grid)dp

    题目链接:http://codeforces.com/problemset/problem/435/D 题意:求三角形个数,三个点必须的白点上,而且三条边必须是横线,竖线或对角线,三条边上不同意出现黑 ...

  8. CF 518D(概率dp)

    传送门:Ilya and Escalator 题意:有n个人排队进车厢,每秒只能进一个人,而且第1个人进了后面的人才能进,第一个人每秒进入车厢的概率为p,不进的概率为1-p,求t秒后进入车厢总人数的数 ...

  9. codeforces 1140D(区间dp/思维题)

    D. Minimum Triangulation time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

随机推荐

  1. Velocity加载模版文件

    一.类路径 加载classpath目录下的vm文件,或者maven项目的resources路径下 Properties p = new Properties(); p.put("file.r ...

  2. Oracle pl/sql 记录、表类型

    一.PL/SQL记录 定义: TYPE <类型名> IS RECORD <列名1 类型1,列名2 类型2,...列名n 类型n,> [NOT NULL] <列的类型> ...

  3. IFC4 在线参考手册

    国内地址1:http://www.vfkjsd.cn/ifc/ifc4/index.htm 国内地址2:http://www.bim-times.com/ifc/ifc4/index.htm 官方地址 ...

  4. ROS Learning-026 (提高篇-004 A Mobile Base-02) 控制移动平台 --- “分封制”

    ROS 提高篇 之 A Mobile Base-02 - 控制移动平台 - "分封制" 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ub ...

  5. ROS Learning-002 beginner_Tutorials 如何添加ROS环境变量 和 如何更新ROS源代码

    ROS Indigo beginner_Tutorials 之 添加环境变量 和 更新ROS源代码的命令 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubu ...

  6. Luogu 3521 [POI2011]ROT-Tree Rotations

    BZOJ 2212 从下到上线段树合并. 考虑到每一个子树内部产生的贡献不可能通过换儿子消除,所以一次更换只要看看把哪个儿子放在左边产生的逆序对数少就可以了. 逆序对数可以在线段树合并的时候顺便算出来 ...

  7. Mybatis避免出现语法错

    在使用MyBatis的时候,可能会看起来没有问题,但是代码运行的时候出现意想不到的错误. 看如下代码: <update id="updateByPrimaryKeySelective& ...

  8. 什么是DMZ、DMZ端口、DMZ主机?

    DMZ是英文“demilitarized zone”的缩写,中文名称为“隔离区”,也称“非军事化区”.它是为了解决安装防火墙后外部网络不能访问内部网络服务器的问题,而设立的一个非安全系统与安全系统之间 ...

  9. bootstrap.js 文件使用指南

    介绍 使用 Bootstrap v3.3.7 时,需要引入三个脚本文件. https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.m ...

  10. C#关于如何修改项目文件夹名称

    在C# 中修改了解决方案项目名称之后,重命名之后出现错误形式: 解决方法就是 打开你的sln文件 ,将里面的地址改过来就好了 以记事本的方式打开.sln文件 修改其中的相对路径,下图选中部分的路径,这 ...