6654. 【2020.05.27省选模拟】数据结构
时间:2020-05-29
本文章向大家介绍6654. 【2020.05.27省选模拟】数据结构,主要包括6654. 【2020.05.27省选模拟】数据结构使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目描述
题解
dyptql
考虑把区间拆成左右端点排序,左端点可以和至多一个右端点匹配
显然如果一个左端点不和之前的右端点匹配,那么这些右端点必须要在之后匹配
设f[i][j][k]表示做到第i个点,有j个右端点可以匹配,k个必须匹配的方案
随便转移
code
#include <bits/stdc++.h>
#define fo(a,b,c) for (a=b; a<=c; a++)
#define fd(a,b,c) for (a=b; a>=c; a--)
#define add(a,b) a=((a)+(b))%1000000007
#define mod 1000000007
#define ll long long
#define file
using namespace std;
struct type{
int x,s;
} a[1001];
ll f[2][501][501],ans;
int tot,n,i,j,k,l,I,I2;
bool cmp(type a,type b) {return a.x<b.x || a.x==b.x && a.s<b.s;}
int main()
{
freopen("ds.in","r",stdin);
#ifdef file
freopen("ds.out","w",stdout);
#endif
scanf("%d",&n);
fo(i,1,n) scanf("%d%d",&j,&k),a[++tot]={j,1},a[++tot]={k,0};
sort(a+1,a+tot+1,cmp);
f[0][0][0]=1;I=0;
fo(i,0,tot-1)
{
I2=I^1;memset(f[I2],0,sizeof(f[I2]));
fo(j,0,n)
{
fo(k,0,n-j)
if (f[I][j][k])
{
if (!a[i+1].s)
{
add(f[I2][0][j+k],f[I][j][k]);
if (j) add(f[I2][j-1][k],f[I][j][k]*j);
if (k) add(f[I2][j][k-1],f[I][j][k]*k);
}
else
add(f[I2][j+1][k],f[I][j][k]);
}
}
I=I2;
}
fo(i,1,n) add(ans,f[I][i][0]);
printf("%lld\n",ans);
fclose(stdin);
fclose(stdout);
return 0;
}
原文地址:https://www.cnblogs.com/gmh77/p/12989651.html
- WPF一步一脚印系列(1):万事起头难
- 自定义迭代器使用foreach
- 理解cookie的path和domain属性
- 静态页面设置缓存、动态页面设缓存(不断更新中。。。。)
- 区块链技术如何把你的游戏资产真正变为你的资产
- Python标准库07 信号 (signal包,部分os包)
- 当css属性width设为100%时
- GridView实战一:自定义分页、排序、修改、插入、删除
- Windows下程序打包发布时的小技巧
- Linux的“壳”
- 网页优化系列一:合并文件请求(asp.net版)
- Windows下Thumbnail的开发总结
- 剑指OFFER之调整数组顺序使奇数位于偶数前面找(九度OJ1516)
- Linux架构
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 微信小程序处理图片加载失败显示默认图片
- Dart环境配置和运行
- 微信小程序之间跳转及传参
- Spring源码学习笔记(2)——Bean的加载
- Css实现聊天框
- 机器学习之KNN原理与代码实现
- Dart常用的数据类型
- Vue版本更新清除浏览器缓存
- maven:Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/maven/cli/MavenC
- maven整合struts: Compilation error org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException
- Dart判断运算符
- 机器学习之朴素贝叶斯算法原理与代码实现
- jquery中ajax的使用(java)
- mybatis框架org.apache.ibatis.exceptions.PersistenceException:
- Spring源码学习笔记(3)——容器的功能扩展