CF C. Three displays(DP+思维)
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+思维)的更多相关文章
- CF 987C Three displays DP或暴力 第十一题
Three displays time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- cf1153D 树形dp+思维
一千八的题也不会做了呜呜呜 size[u]表示结点u下的叶子结点, 思维:可以想到一个子树对其父亲会有一个消耗值 考虑一个点如果是max,那么其最大值可以是size[u]-p,p是消耗值最小的子树 一 ...
- E. The Contest ( 简单DP || 思维 + 贪心)
传送门 题意: 有 n 个数 (1 ~ n) 分给了三个人 a, b, c: 其中 a 有 k1 个, b 有 k2 个, c 有 k3 个. 现在问最少需要多少操作,使得 a 中所有数 是 1 ~ ...
- 7月15日考试 题解(链表+状压DP+思维题)
前言:蒟蒻太弱了,全打的暴力QAQ. --------------------- T1 小Z的求和 题目大意:求$\sum\limits_{i=1}^n \sum\limits_{j=i}^n kth ...
- CF 256D. Good Sequences(DP)
题目链接 主要是标记前面素数的最大的DP值,要认真一些.没想到居然写了一个很难发现的错误. #include <cstdio> #include <cstring> #incl ...
- CF 335B - Palindrome 区间DP
335B - Palindrome 题目: 给出一个字符串(均有小写字母组成),如果有长度为100的回文子串,输出该子串.否则输出最长的回文子串. 分析: 虽然输入串的长度比较长,但是如果存在单个字母 ...
- CF(435D - Special Grid)dp
题目链接:http://codeforces.com/problemset/problem/435/D 题意:求三角形个数,三个点必须的白点上,而且三条边必须是横线,竖线或对角线,三条边上不同意出现黑 ...
- CF 518D(概率dp)
传送门:Ilya and Escalator 题意:有n个人排队进车厢,每秒只能进一个人,而且第1个人进了后面的人才能进,第一个人每秒进入车厢的概率为p,不进的概率为1-p,求t秒后进入车厢总人数的数 ...
- codeforces 1140D(区间dp/思维题)
D. Minimum Triangulation time limit per test 2 seconds memory limit per test 256 megabytes input sta ...
随机推荐
- 【265】shell文件创建链接
优点:可以在其他文件夹内运行对应的*.sh文件,例如通过putty会默认进入的文件夹,可以将链接文件放在那里,就可以直接调用了! 方法:很简单 1. 在文件上点击右键>创建链接 2. 可以对下面 ...
- MySQL存储引擎 -- MyISAM 与 InnoDB 实现
一.MyISAM索引实现MyISAM引擎使用B树作为索引结构,叶节点的data域存放的是数据记录的地址. MyISAM主键索引这里设表一共有三列,假设我们以Col1为主键,Col2为辅助索引.则下图是 ...
- oracle --(四)表空间(tablespace)
基本关系:数据库---表空间---数据段---分区---数据块 表空间(tablespace)表空间(tablespace)是包含物理数据文件的逻辑实体,存放数据库的所有可用数据,因此表空间的尺寸也是 ...
- 第3章 ZooKeeper基本数据模型 3-1 zk数据模型介绍
基本数据模型是zookeeper的重点. 它是参照Linux/Unix的目录结构. 子节点就相当于是父目录下的一个子目录,在zookeeper里面它是称之为节点,父节点和子节点,然后每一个节点就会有一 ...
- 【总结整理】webGIS学习
安装ArcGIS Server + ArcSDE + PostgreSQL + ArcMap安装(windows7)博客:https://blog.csdn.net/buqutianya/articl ...
- go语言linux环境配置
linux的设置方法:有4个环境变量需要设置:GOROOT.GOPATH.GOBIN以及PATH.需要设置到某一个profile文件中(~/.bash_profile(单一用户)或/etc/profi ...
- Entity Relationships
Entity Relationships: Here, you will learn how entity framework manages the relationships between en ...
- C/C++中有关字长与平台无关的整数类型
在C/C++中,整型的长度跟编译器相关,编译器的实现取决于CPU. 比如TC++是DOS16下的应用程序,DOS16是16位的操作系统,所以TC++中sizeof(int)==16:同理win32中s ...
- oracle安装和使用问题解决方案
1.Enter the full pathname for java.exe 要输入的是32位系统的jdk中的java.exe路径,比如 C:\Program Files\Java\jdk1.6.0 ...
- c# 制作悬浮框
一,制作winform 窗体 窗体要做小一点,你见过500*500的悬浮框吗? 二,去掉边框和标题栏 this.FormBorderStyle = FormBorderStyle.None; 运行出来 ...