【BZOJ2998】Problem A(动态规划)

【BZOJ2998】Problem A(动态规划)

题面

BZOJ

题解

一个人的成绩范围可以确定为一个区间
这样就变成了
选择若干区间,不重合,
每个区间有个权值,求最大权值和
这样就可直接\(dp\)了

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<map>
#include<vector>
#include<queue>
using namespace std;
#define ll long long
#define RG register
#define MAX 120000
inline int read()
{
    RG int x=0,t=1;RG char ch=getchar();
    while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
    if(ch=='-')t=-1,ch=getchar();
    while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
    return x*t;
}
int tot,ans,Ans,n;
int f[MAX];
map<pair<int,int>,int> M;
vector<int> G[MAX];
int main()
{
    n=read();
    for(int i=1;i<=n;++i)
    {
        int a=read(),b=read();
        int l=a+1,r=n-b;
        if(l>r)continue;
        M[make_pair(l,r)]++;
        if(M[make_pair(l,r)]==1)G[r].push_back(l);
    }
    for(int i=1;i<=n;++i)
    {
        f[i]=f[i-1];
        for(int j=0;j<G[i].size();++j)
            f[i]=max(f[i],f[G[i][j]-1]+min(i-G[i][j]+1,M[make_pair(G[i][j],i)]));
    }
    printf("%d\n",n-f[n]);
    return 0;
}

原文地址:https://www.cnblogs.com/cjyyb/p/8472236.html

时间: 2024-10-03 00:07:37

【BZOJ2998】Problem A(动态规划)的相关文章

BZOJ 2298: [HAOI2011]problem a 动态规划

2298: [HAOI2011]problem a Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=2298 Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) Input 第一行一个整数n,接下来n行每行两个整数,第i+1行的两个整数分别代表ai.bi Outp

【BZOJ2298】【HAOI2011】problem a 动态规划

链接: #include <stdio.h> int main() { puts("转载请注明出处[vmurder]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/44979323"); } 题解: 一句话 (a,b) 可以理解成一个线段 (a,n?b] . 然后排个序去下重,最后一个线段的权值 x 就是表示 这 x 人互不冲突,一起算. 然后动态规划求若干条不相交线段的权值最大值,最后用总人数减

BZOJ 2302 HAOI2011 Problem c 动态规划

题目大意:给定n个人和n个位置,要求生成一个序列ai,然后第1...n个人依次走到第a1...n个位置,如果那个位置已经有人了就走到下一个位置,直到找到一个空位,坐下.如果找完第n个座位还是没有找到就称这个序列不合法 现在已经确定了一些ai,求合法序列的数量 一个序列合法等价于编号≤i的人至少有i个 然后就可以DP辣... 令fi,j表示编号≤i的人有j个的方案数,cnti表示确定编号为i的人的个数,sumi表示编号可以≤i的人的个数 那么有 fi,j=∑j?i+1k=cntifi?1,j?k?

杭电ACM分类

杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDIATE DECODABILITY

【转】对于杭电OJ题目的分类

[好像博客园不能直接转载,所以我复制过来了..] 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDI

转载:hdu 题目分类 (侵删)

转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029. 1032.1037.1040.1048.1056.1058.1061.1070.1076.1089.1090.1091.1092.1093. 1094.1095.1096.1097.1098.1106.1108.1157.116

第六届福建省大学生程序设计竞赛不完全题解

昨天自己队做了一下第六届福建省赛,感觉有些蒙,赛后补了几道题,能力有限,一共只出A了7道题 A题   Super Mobile Charger 题目链接 http://acm.fzu.edu.cn/problem.php?pid=2212 水题 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; int a[10005]; int b[10005]; int main(

待刷题目分类

各大OJ题目归类 Posted on 2012 年 8 月 8 日 by admin ---------–最优化问题------------- --------动态规划 SOJ1162 I-Keyboard SOJ2096 Maximum Submatrix SOJ2111 littleken bg SOJ2505 The County Fair SOJ2818 QQ音速 SOJ2469 Exploring Pyramids SOJ1833 Base Numbers SOJ2009 Zeros

2014 Super Training #2 F The Bridges of Kolsberg --DP

原题:UVA 1172  http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3613 动态规划问题. 定义: dp[i] = 右岸前i个村庄(m岸)能够与左岸(n岸)不交叉匹配的最大权值和最小桥数 (用pair<int,int> 维护两个值) 方程: dp[i].first = max(dp[i].first,dp[i-1].fir