Subtask 1

直接$N^2$ $DP$,就可以了

Subtask 2

用$f[i][j]$表示当前位置为$i$,结束元素为$j$的方案数。

Subtask 3

看下面

Subtask 4

首先可以枚举一段序列选择同一个重叠的区间,然后一些可以不选,如果选的话要求上升。

然后很容易得到方程,离散化之后就可以$N^4$直接做了。

然后并不会优化,看了题解。

想了想写不出来。

抄代码啦!

  1. #include <map>
  2. #include <ctime>
  3. #include <cmath>
  4. #include <queue>
  5. #include <cstdio>
  6. #include <cstring>
  7. #include <iostream>
  8. #include <algorithm>
  9. using namespace std;
  10. #define F(i,j,k) for (int i=j;i<=k;++i)
  11. #define D(i,j,k) for (int i=j;i>=k;--i)
  12. #define ll long long
  13. #define maxn 505
  14. #define md 1000000007
  15.  
  16. int n,b[maxn],a[maxn],siz[maxn],ls[maxn*2],top,ans=0,inv[maxn];
  17. int l[maxn],r[maxn],C[maxn],g[maxn],fac[maxn],inv_fac[maxn];
  18.  
  19. int ksm(int a,int b,int p)
  20. {int ret=1;for(;b;a=(ll)a*a%p,b>>=1)if(b&1)ret=(ll)ret*a%md;return ret;}
  21.  
  22. int main()
  23. {
  24. scanf("%d",&n);fac[0]=1;F(i,1,maxn-1)fac[i]=(ll)fac[i-1]*i%md;
  25. inv_fac[0]=1;inv_fac[1]=1;F(i,2,maxn-1) inv_fac[i]=ksm(fac[i],md-2,md);
  26. F(i,1,maxn-1) inv[i]=ksm(i,md-2,md);
  27. F(i,1,n) scanf("%d%d",&a[i],&b[i]),ls[++top]=a[i],ls[++top]=b[i]+1;
  28. sort(ls+1,ls+top+1); top=unique(ls+1,ls+top+1)-ls-1;
  29. F(i,1,n)
  30. {
  31. l[i]=lower_bound(ls+1,ls+top+1,a[i])-ls;
  32. r[i]=lower_bound(ls+1,ls+top+1,b[i]+1)-ls;
  33. }
  34. g[0]=1;C[0]=1;
  35. for (int j=1;j<top;++j)
  36. {
  37. int L=ls[j+1]-ls[j];
  38. for (int i=1;i<=n;++i) C[i]=(ll)C[i-1]*(L+i-1)%md*inv[i]%md;
  39. for (int i=n;i>=1;--i)
  40. {
  41. if (l[i]<=j&&j+1<=r[i])
  42. {
  43. int f=0,m=1,c=L;
  44. for (int p=i-1;p>=0;--p)
  45. {
  46. f=(f+(ll)c*g[p]%md)%md;
  47. if (l[p]<=j&&j+1<=r[p]) c=C[++m];
  48. }
  49. g[i]=(g[i]+f)%md;
  50. }
  51. }
  52. }
  53. F(i,1,n) ans=(ans+g[i])%md;
  54. printf("%d\n",ans);
  55. }

  

BZOJ 4584 [Apio2016]赛艇 ——动态规划的更多相关文章

  1. bzoj 4584: [Apio2016]赛艇【dp】

    参考:https://www.cnblogs.com/lcf-2000/p/6809085.html 设f[i][j][k]为第i个学校派出的赛艇数量在区间j内,并且区间j内共有k个学校的方案数 把数 ...

  2. BZOJ 4584 luogu P3643: [Apio2016]赛艇

    4584: [Apio2016]赛艇 Time Limit: 70 Sec  Memory Limit: 256 MB[Submit][Status][Discuss] Description 在首尔 ...

  3. 【BZOJ4584】[Apio2016]赛艇 DP

    [BZOJ4584][Apio2016]赛艇 Description 在首尔城中,汉江横贯东西.在汉江的北岸,从西向东星星点点地分布着个划艇学校,编号依次为到.每个学校都拥有若干艘划艇.同一所学校的所 ...

  4. BZOJ 4584 【APIO2016】 赛艇

    题目链接:赛艇 讲道理好好的Boat为啥要翻译成赛艇呢……题面中不也是划艇么…… 这道题考虑一下dp.由于划艇数量过于庞大,所以肯定不能直接记录到dp状态中.所以一个想法就是把数量离散化,然后把每个学 ...

  5. BZOJ4584 APIO2016赛艇(动态规划+组合数学)

    如果值域不大,容易想到设f[i][j]为第i个学校选了j的方案数,枚举上一个学校是哪个选了啥即可,可以前缀和优化.于是考虑离散化,由于离散化后相同的数可能可以取不同的值,所以枚举第一个和其所选数(离散 ...

  6. LOJ 2567: 洛谷 P3643: bzoj 4584: 「APIO2016」划艇

    题目传送门:LOJ #2249. 题意简述: 有 \(n\) 个位置,第 \(i\) 个位置可以填在 \([a_i,b_i]\) (\(1\le a_i\le b_i\le 10^9\))之间的整数, ...

  7. bzoj 4767 两双手 - 动态规划 - 容斥原理

    题目传送门 传送门I 传送门II 题目大意 一个无限大的棋盘上有一只马,设马在某个时刻的位置为$(x, y)$, 每次移动可以将马移动到$(x + A_x, y + A_y)$或者$(x + B_x, ...

  8. bzoj 4585 烟火表演 - 动态规划 - 可并堆

    题目传送门 传送门I 传送门II 题目大意 给定一棵带边权有根树,修改一条边的边权的代价是修改前和修改后的值的绝对值之差.不能将一条边的边权改为负数.问使得根节点到所有叶节点的距离相等的最小代价. 当 ...

  9. bzoj 3670 动物园 - kmp - 动态规划

    Description 近日,园长发现动物园中好吃懒做的动物越来越多了.例如企鹅,只会卖萌向游客要吃的.为了整治动物园的不良风气,让动物们凭自己的真才实学向游客要吃的,园长决定开设算法班,让动物们学习 ...

随机推荐

  1. UVA 11627 Slalom(二分)

    二分,判断的时候,一个点一个点的考虑肯定是不行啦,考虑的单位是一个区间, 每次左端点尽量向左边移动,右端点尽量向右,得到下次可以达到的范围,检查一下和下一个区间有没有交集. #include<b ...

  2. Jquery二维码在线生成(不能生成图片文件)

    附件地址:http://files.cnblogs.com/files/harxingxing/jQuery%E4%BA%8C%E7%BB%B4%E7%A0%81%E5%9C%A8%E7%BA%BF% ...

  3. 关于Java虚拟机JVM的简单了解

    JVM主要功能 Java是一种高级编程语言. 用高级语言编写的程序不能直接在任何机器上运行. 首先,需要将其翻译成特定的机器语言,javac编译器就专门来干这个事儿的,它把Java程序(含有的.jav ...

  4. C09 指针

    目录 指针相关概念 指针变量 null指针 指针的算术运算 指针数组 指向指针的指针 传递指针给函数 从函数返回指针 指针相关概念 变量 如果在程序中定义了一个变量,在对程序进行编译时,系统就会为这个 ...

  5. <!DOCTYPE>声明

    定义和用法 <!DOCTYPE> 声明必须是 HTML 文档的第一行,位于 <html> 标签之前. <!DOCTYPE> 声明不是 HTML 标签:它是指示 we ...

  6. shell脚本,awk取奇数行与偶数行方法。

    第一种方法: 第二种方法: 第三种方法:

  7. Linux菜鸟起飞之路【五】权限管理(一)

    一.与用户相关的几个文件 1./etc/passwd 储存用户名,格式为 用户名:密码(用密码代位符X代替):UID:GID:用户描述信息:家目录:shell 用户名(login_name):是代表用 ...

  8. PHP将unicode转utf8最简法

    最近开发时遇到Unicode编码问题,找了半天才知道PHP并没有Unicode转码函数,终于发现用一行PHP代码解决的方案: $str = '{"success":true,&qu ...

  9. windows server 服务器 环境配置

    自动备份 xcopy d:\web\zhiku\*.* d:\bak\web\zhiku\%date:~,4%%date:~5,2%%date:~8,2%\ /S /I

  10. 代理工具--fiddle

    正则匹配 1)前缀为“EXACT:”表示完全匹配:只有match=rules时,才匹配 2)无前缀表示基本搜索,表示搜索到字符串就匹配:只要match中包含了rules的字符串,即可 3)前缀为“NO ...