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. java中字符串的存储

    在java中,不同的字符串赋值方法,其所在的地址可能不同也就导致,两个字符串的值看似相等可是在s1==s2操作时,其结果返回的却是false 例: String s1 = "Programm ...

  2. java中怎么把String转化为字符数组呢?

    我想让用户输入一组字符串,然后将这个字符串的每一个赋给一个char.即,abcde char ch[]=new char[5]; ch[0]=a;ch[1]=b;..... 解决方案如下图所示: St ...

  3. EZOJ #73

    传送门 分析 我们知道如果对于模数$P$有$gcd(x,P) = 1$则$x$一定有且仅有一个逆元,可以表示为 $x \equiv \frac{y}{1} (mod P)$ 即为$xy \equiv ...

  4. 使用IDEA开发SPARK提交remote cluster执行

    开发环境 操作系统:windows 开发工具:IntelliJ IDEA  14.1.1 需要安装scala插件 编译环境:jdk 1.7   scala 2.10.4 使用IDEA开发spark应用 ...

  5. python常见的加密解密

    #!/usr/bin/env python ''' Python Crypto Wrapper - By Chase Schultz Currently Supports: AES-256, RSA ...

  6. 文本PDG转PDF

    作者:马健邮箱:stronghorse_mj@hotmail.com发布:2008.08.03更新:2008.08.24 补充说明:此文成文较早,当时文本PDG如果不想用官方浏览器SSREADER看, ...

  7. 十天入门java教程 Day01

    这几年一直在想学一门语言,java,Python,php也都看过,但是没有一门是精的.语言学习并不是写出hello world就行了.个人感觉需要静心去学习. java语言是什么? java是一种计算 ...

  8. Locust学习总结分享

    简介: Locust是一个用于可扩展的,分布式的,性能测试的,开源的,用Python编写框架/工具,它非常容易使用,也非常好学.它的主要思想就是模拟一群用户将访问你的网站.每个用户的行为由你编写的py ...

  9. java 学习第三篇if判断

    JAVA 判断 单词: if 如果 else 否则 单分支: If(条件) { 代码块 } If是一个判断语句.代码格式如上. If括号的内是表达式.如果表达式值是成立的便执行代码块.之后在执行IF语 ...

  10. 关于执行memcached报错问题

    执行#/usr/local/memcached/bin/memcached随后出现如下错误:./memcached: error while loading shared libraries: lib ...