首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
bzoj2298
】的更多相关文章
BZOJ-2298|区间dp|线段树
problem a Description 一次考试共有n个人参加,第i个人说:"有ai个人分数比我高,bi个人分数比我低."问最少有几个人没有说真话(可能有相同的分数) Input 第一行一个整数n,接下来n行每行两个整数,第i+1行的两个整数分别代表ai.bi Output 一个整数,表示最少有几个人说谎 Sample Input 1 3 2 0 0 2 2 2 Sample Output 1 1 Hint 100%的数据满足: 1≤n≤100000 0≤ai.bi≤n Sourc…
【BZOJ2298】[HAOI2011]problem a DP
[BZOJ2298][HAOI2011]problem a Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) Input 第一行一个整数n,接下来n行每行两个整数,第i+1行的两个整数分别代表ai.bi Output 一个整数,表示最少有几个人说谎 Sample Input 3 2 0 0 2 2 2 Sample Output 1 HINT 100%的数据满足: 1≤n≤100000 0≤…
BZOJ2298: [HAOI2011]problem a
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2298 题解:刚开始思考的方向错了...一直在想LIS什么的,又发现不合法的情况不好判断,真是个伤心的故事... 把问题转化一下,第i个人说有n-ai-bi个人和它分数一样高,那么我们就可以抽象出一条线段[a+1,n-b],它的权值为n个人中说这句话的次数和 n-ai-bi的最小值. 然后我们就将问题转化成了:给若干条线段,每条线段有一定的权值,选出若干条互不相交的线段,使得权值和最大. 感觉…
bzoj2298
不难发现必然是两个人之间话产生矛盾或自身话有问题很显然,当ai>aj时,若ai<n-bj时i,j两人话矛盾ai<ai<n-bj,这东西有没有数轴上的线段的既视感?我们只要求出做多不相交的线段就可得到最少谎话数 ..] of longint; i,j,k,n:longint; function min(a,b:longint):longint; begin if a>b then exit(b) else exit(a); end; function max(a,b:longi…
[BZOJ2298] [HAOI2011] problem a (dp)
Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) Input 第一行一个整数n,接下来n行每行两个整数,第i+1行的两个整数分别代表ai.bi Output 一个整数,表示最少有几个人说谎 Sample Input 3 2 0 0 2 2 2 Sample Output 1 HINT 100%的数据满足: 1≤n≤100000 0≤ai.bi≤n Source Solution a个人在他前…
【BZOJ2298】[HAOI2011]problem a
题解: 虽然也是个可以过得做法...但又没有挖掘到最简单的做法... 正解是发现这个东西等价于求不相交区间个数 直接按照右端点排序,然后贪心就可以O(n)过了 而我的做法是按照a排序(其实我是在模拟这个过程但我没有发现他的本质...) 然后f[i][j]表示前i个,最大要求为j的最大值 然后用线段树来优化这个东西 一个地方存在的东西还要取个min 代码: #include <bits/stdc++.h> using namespace std; #define rint register in…
[BZOJ2298]problem a
Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) Input 第一行一个整数n,接下来n行每行两个整数,第i+1行的两个整数分别代表ai.bi Output 一个整数,表示最少有几个人说谎 Sample Input 3 2 0 0 2 2 2 Sample Output 1 HINT 100%的数据满足: 1≤n≤100000 0≤ai.bi≤n 首先我们考虑一下,撒谎的人去哪了 然后经过周…
BZOJ2298: [HAOI2011]problem a(带权区间覆盖DP)
Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1747 Solved: 876[Submit][Status][Discuss] Description 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) Input 第一行一个整数n,接下来n行每行两个整数,第i+1行的两个整数分别代表ai.bi Output 一个整数,表示最少有几个人说谎 Sample Input…
BZOJ2298:[HAOI2011]problem a——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=2298 https://www.luogu.org/problemnew/show/P2519 一次考试共有n个人参加,第i个人说:“有ai个人分数比我高,bi个人分数比我低.”问最少有几个人没有说真话(可能有相同的分数) 好题啊,以及我的dp为什么这么烂……算了吐槽放后面. 参考洛谷题解. 显然a+b+1>n一定是谎话,直接特判. 然后考虑冲突,显然两人名次相同的情况下a和b不同就说明这两人只能…
BZOJ2298 [HAOI2011]problem a 【dp】
题目 一次考试共有n个人参加,第i个人说:"有ai个人分数比我高,bi个人分数比我低."问最少有几个人没有说真话(可能有相同的分数) 输入格式 第一行一个整数n,接下来n行每行两个整数,第i+1行的两个整数分别代表ai.bi 输出格式 一个整数,表示最少有几个人说谎 输入样例 3 2 0 0 2 2 2 输出样例 1 提示 100%的数据满足: 1≤n≤100000 0≤ai.bi≤n 题解 一个人的话意思就是自己的分数排名在区间\([a_i + 1,n - b_i]\)之间,且这个区…