20200718 SCOI模拟T3(dp)
T1 囚人的旋律
思路:
一般图的独立集问题是 NP 问题,所以肯定转换成序列做
考虑满足独立集
集合中任意两点未连边,所以集合中的点不存在逆序对,所以选出的序列单调上升
#include <bits/stdc++.h>
using namespace std;
#define re register
namespace IO {inline char ch() {static char buf[1 << 21], *p1 = buf, *p2 = buf;return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 1 << 21, stdin), p1 == p2)? EOF: *p1++;
}
inline int in() {int s = 0, f = 1;char x;for (x = ch(); x < '0' || x > '9'; x = ch())if (x == '-') f = -1;for (; x >= '0' && x <= '9'; x = ch()) s = (s * 10) + (x & 15);return f == 1 ? s : -s;
}
} // namespace IO
using namespace IO;const int A = 5e5 + 5;
const int mod = 1e9 + 7;
const int INF = 1e9;
int n, m;
int head[A], tot_road;
struct Road {int nex, to;
} road[2 * A];
inline void edge(int x, int y) {road[++tot_road] = {head[x], y};head[x] = tot_road;
}
int ex[A];
int val[A];
int f[A];inline void build() {for (int i = 1; i <= n; i++) {int num = 0;for (int y = head[i]; y; y = road[y].nex) {int z = road[y].to;if (z > i) num++;}for (int j = 1; j <= n; j++) {if (!ex[j]) num--;if (num == -1) {val[i] = j;ex[j] = 1;break;}}}return;
}// inline void DP(){// f[0]=1;
// for(int i=1;i<=n+1;i++){// for(int j=0;j<i;j++){// if(val[j]>val[i]) continue;
// int pos=0;
// for(int k=j+1;k<i;k++){// if(val[k]>val[j]&&val[k]<val[i]){// pos=1;
// break;
// }
// }
// if(pos) continue;
// f[i]=(f[i]+f[j])%mod;
// }
// }
// return;
// }
// n^3inline void DP() {f[0] = 1;for (int i = 0; i <= n; i++) {int minn = INF;for (int j = i + 1; j <= n+1; j++) {if (val[j] > val[i] && minn > val[j]) f[j] = (f[j] + f[i]) % mod;if (val[j] > val[i]) minn = min(minn, val[j]);}}return;
}
//n^2signed main() {// freopen("senritsu.in", "r", stdin);// freopen("senritsu.out", "w", stdout);n = in(), m = in();for (int i = 1; i <= m; i++) {int u = in(), v = in();edge(u, v), edge(v, u);}build();val[0] = 0, val[n + 1] = n+1;DP();printf("%d\n", f[n + 1]);puts("");return 0;
}
/*
5 5
2 4
2 5
1 4
3 4
3 5
*/
20200718 SCOI模拟T3(dp)相关推荐
- 20200731 SCOI模拟T3(线段树分治)
T3 越野赛车问题 思路: 将 l,rl,rl,r 用线段树分治维护 用并查集维护连通性 维护最长链可以对每个连通块记录最长链两端点 合并时设两端点分别是 s,ts,ts,t 和 x,yx,yx,y ...
- 某 SCOI 模拟赛 T3 s3mple【生成函数 拉格朗日插值】
题意 对于序列 a a a,记 v i v_i vi 为位置距离 a i a_i ai 最近的.比 a i a_i ai 大的数与它的距离(假设 a 0 a_0 a0 和 a n + 1 a_ ...
- 8.12模拟:dp递推
文章目录 前言 本次最大收获 考场 复盘 T1 lecture T2 n-thlon T3 assignment T4 recoverset 总结 前言 245分 100+70+40+35 不太满意q ...
- 【CodeForces - 545 ABCDE套题训练题解】贪心, 构造,模拟,dp,最短路树(Dijkstra+变形)
A: 题干: Input The first line contains integer n (1 ≤ n ≤ 100) - the number of cars. Each of the next ...
- 【 HRBUST - 1055】Single(模拟,dp,打表)(总结)
题干: There are many handsome single boys in our team, for example, me. Some times, we like count sing ...
- Codeforces Round #552 (Div. 3) E stl模拟 F dp G gcd
contest链接 https://codeforces.com/contest/1154 E 题解思路 直接哈希模拟删除T了,可以用setsetset和lowerlowerlower_boundbo ...
- 寒假算法学习 OI生涯 - 悄无声息(模拟+线性DP优化) OI生涯 - 德国心脏病 (模拟)
OI生涯 - 悄无声息 题目描述 「李」走路是没有动静的,如果你在干「李」不让你干的事情,他会神不知鬼不觉的走到你的身后,然后把你奶一顿! 因为你知道「李」走路没有动静,所以为了提防,可以认为「李」有 ...
- [模拟/区间DP]Csp M4 T1T2T4
目录 A.[模拟]数鸭子 题意 样例 样例输入: 样例输出: 思路 总结 代码 B.[模拟]宇宙射线 题意 样例 样例输入: 样例输出: 思路 总结 代码 C.[区间DP]危机 题意 样例 样例输出: ...
- 2019.03.27【GDOI2019】模拟 T3
题目大意 给出$n$, $p$, 求有多少长度为$n$的排列可以被分成三个上升子序列, 数量对$p$取模, 数据范围 $3 \leq n \leq 500$. 思路 首先让我们考虑如果有一个排列,如何 ...
最新文章
- 深度学习如炼丹,你有哪些迷信做法?网友:Random seed=42结果好
- mysql数据库字符集作用_MYSQL数据库字符集支持
- 动画库 Lottie 的使用
- Java安卓 使用视图组 布局
- kratos import 飘红问题
- ngix入门 Linux系统Ubuntu ngix安装
- Android O WMS(3) -- addwindow
- [渝粤教育] 内蒙古大学 微生物学 参考 资料
- LSTM实现情感分类
- 安卓获取wifi列表_大家好,我是来给你家 WiFi 提速的
- Informix数据库学习随笔
- pytest官方文档 6.2 中文翻译版(第十章):警告捕捉
- xiuno开发文档_大白 · TinyMCE编辑器v1.9_Xiuno Plugin_奇狐插件商店_奇狐网
- Relax中的量化管理
- Leetcode刷题笔记 354 俄罗斯套娃
- finalize()用法
- mysql恢复root权限设置密码_MySQL修改root密码及恢复权限的多种方法
- 强化学习应用简述---强化学习方向优秀科学家李玉喜博士创作
- 兄弟连兄弟会机构好不好
- java环境JDK的安装及判断是否安装成功
热门文章
- Python自学第一步-安装软件
- nginx的反向代理upstream说明
- echarts 三种数据双y轴显示 (文末附带完整代码)
- 3D-太阳系、牧师与恶魔小游戏
- python 时间戳转换_python 时间戳
- [Python]简单几行代码带你完成Python切换代理IP
- 个人网站和博客赚钱方式 (如何把WordPress网站变成一门生意)
- 从西贝的“不雅视频”看门店升级数字媒体重要性
- opencv 图像雾检测_opencv-python烟雾图像处理
- 机器学习学习笔记(三)之分类器