[CSP-S模拟测试]:题(DP)
题目描述
由于出题人赶时间所以没办法编故事来作为背景。
一开始有$n$个苹果,$m$个人依次来吃苹果,第$i$个人会尝试吃$u_i$或$v_i$号苹果,具体来说分三种情况。
$\bullet 1.$两个苹果都还在,那么这个人将随便选一个苹果吃了。
$\bullet 2.$只有一个苹果,那么这个人将吃掉这个苹果。
$\bullet 3.$都不在了,这个人吃不到苹果就走了。
请问有多少对苹果$(i,j)(i<j)$满足它们两个都幸存下来的概率$>0$。
输入格式
第一行两个数$n,m$。
接下来$m$行,每行两个数$u_i,v_i$。
输出格式
一个数表示答案。
样例
样例输入:
4 3
1 2
3 4
2 3
样例输出:
1
数据范围与提示
样例解释:
只有$(1,4)$满足条件。
数据范围:
对于测试点$1\sim 5$:$n,m\leqslant 20$。
对于测试点$5\sim 8$:若把苹果看做点,人看做边,那么会形成一棵树。
对于测试点$9\sim 15$:$m\leqslant 400$。
对于测试点$16\sim 25$:无特殊限制。
对于所有的数据,$n\leqslant 400,m\leqslant 5\times 10^4$。
题解
考虑一个类似$DP$的做法,定义$f_k(S)$表示$k$个人来过之后,$S$集合的苹果是否都还没有被吃的概率,那么我们可以列出状态转移方程:
$\alpha.u_i,v_i\in S,f_k(S)=0$,都在这个集合肯定不行,因为这两个苹果不能共同存活。
$\beta.u_i\in S,f_k(S)=f_{k-1}(S\cup\{u_i\})$,相当与上一次可以有它,但是这一次就不能有了。
$\gamma.v_i\in S,f_k(S)=f_{k-1}(S\cup\{v_i\})$,同上。
$delta.u_i,v_i\notin S,f_k(S)=f_{k-1}(S)$,如果都不在,肯定没问题。
但是我们最后可能会得到好多的集合,选最小的一个?
肯定不行,那么我们考虑在转化一下思路。
逆着推,那么状态转移方程就变成了:
$\alpha.u_i,v_i\in S$,推不动了。
$\beta.u_i\in S,f_k(S\cup\{u_i\})=f_{k+1}(S)$。
$\gamma.v_i\in S,f_k(S\cup\{v_i\})=f_{k+1}()S$。
$delta.u_i,v_i\notin S,f_k(S)=f_{k+1}(S)$。
初始值$f_m(i)=1$。
时间复杂度:$\Theta(n\times n+n^2)$。
期望得分:$100$分。
实际得分:$100$分。
代码时刻
#include<bits/stdc++.h>
using namespace std;
int n,m;
bool vis[401];
pair<int,int> e[50001];
bool bit[401][401];
int ans;
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
scanf("%d%d",&e[i].first,&e[i].second);
for(int i=1;i<=n;i++)
{
bit[i][i]=1;
for(int j=m;j;j--)
{
if(bit[i][e[j].first]&&bit[i][e[j].second])vis[i]=1;
if(bit[i][e[j].first]||bit[i][e[j].second])bit[i][e[j].first]=bit[i][e[j].second]=1;
}
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
for(int k=1;k<=n;k++)
if(vis[i]||vis[j]||bit[i][k]&&bit[j][k])goto nxt;
ans++;
nxt:;
}
printf("%d",ans>>1);
return 0;
}
rp++
[CSP-S模拟测试]:题(DP)的更多相关文章
- [CSP-S模拟测试]:题(DP+数学)
题目描述 出个题就好了.这就是出题人没有写题目背景的原因.你在平面直角坐标系上.你一开始位于$(0,0)$.每次可以在上/下/左/右四个方向中选一个走一步.即:从$(x,y)$走到$(x,y+1),( ...
- noi2019模拟测试赛(四十七)
noi2019模拟测试赛(四十七) T1与运算(and) 题意: 给你一个序列\(a_i\),定义\(f_i=a_1\&a_2\&\cdots\&a_i\),求这个序列的所 ...
- [考试反思]1003csp-s模拟测试58:沉淀
稳住阵脚. 还可以. 至少想拿到的分都拿到了,最后一题的确因为不会按秩合并和线段树分治而想不出来. 对拍了,暴力都拍了.挺稳的. 但是其实也有波折,险些被卡内存. 如果内存使用不连续或申请的内存全部使 ...
- csp-s模拟测试98
csp-s模拟测试98 $T1$??不是我吹我轻松手玩20*20.$T2$装鸭好像挺可做?$T3$性质数据挺多提示很明显? $One$ $Hour$ $Later$ 这$T1$什么傻逼题真$jb$难调 ...
- csp-s模拟测试97
csp-s模拟测试97 猿型毕露.水题一眼秒,火题切不动,还是太菜了. $T1$看了一会儿感觉$woc$期望题$T1??$假的吧??. $T2$秒. $T3$什么玩意儿. 40 01:24:46 00 ...
- csp-s模拟测试95
csp-s模拟测试95 去世场祭. $T1$:这不裸的除法分块吗. $T2$:这不裸的数据结构优化$Dp$吗. $T3$:这不裸的我什么都不会搜索骗$30$分吗. 几分钟后. 这除法分块太劲了..(你 ...
- csp-s模拟测试93
csp-s模拟测试93 自闭场. $T1$想到$CDQ$,因为复杂度少看见一个$0$打了半年还用了$sort$直接废掉,$T2$,$T3$直接自闭暴力分都没有.考场太慌了,心态不好. 02:07:34 ...
- csp-s模拟测试92
csp-s模拟测试92 关于$T1$:最短路这一定建边最短路. 关于$T2$:傻逼$Dp$这一定线段树优化$Dp$. 关于$T3$:最小生成树+树P+换跟一定是这样. 深入(?)思考$T1$:我是傻逼 ...
- csp-s模拟测试91
csp-s模拟测试91 倒悬吃屎的一套题. $T1$认真(?)分析题意发现复杂度不能带$n$(?),计划直接维护答案,考虑操作对答案的影响,未果.突然发现可以动态开点权值线段树打部分分,后来$Tm$一 ...
随机推荐
- 错误:Only the original thread that created a view hierarchy can touch its views——Handler的使用
在跟随教程学习到显示web页面的html源码时报错:Only the original thread that created a view hierarchy can touch its views ...
- git的忽略文件语法规范
忽略文件语法规范 空行或是以 # 开头的行即注释行将被忽略. 可以在前面添加正斜杠 / 忽略当前路径文件,但不包括子目录的同名文件. 可以在后面添加正斜杠 / 来忽略文件夹. 可以使用 ! 来否定忽略 ...
- 5G调研与总结
5G的重点是: 将极大地超越现有的4G,主要包括速度,时延,带宽,能耗等方面 传输速度的快速提高(相对于4G来说提升了近10倍),在万物物联上的作用会更大 由于传速度快,让各种远程操控成为了可能(AR ...
- ecshop启用gzip后,后台不能打开不能访问的问题
上传测试的时候,站点显示无法打开.随后我用网址打开根目录的robots文件.图片.静态页···全部可以正常打开··· 我尴尬···一一检查后,我就怀疑是不是客户当初设置gzip压缩的问题了.但连后台都 ...
- python基础-11 socket,IO多路复用,select伪造多线程,select读写分离。socketserver源码分析
Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. sock ...
- jdk下载安装后为什么要设置环境变量?
因为电脑不知道javac这个命令是在C:\Program Files\JAVA\jdk1.8.0_65\bin的这个路径下面,所以我们要设置好环境变量,来让电脑知道其路径
- Spring框架中AOP特性
1.AOP介绍 即:面向切面编程,在不改变原有方法的定义与使用.也不改变原程序流程的情况下,可以改变原有方法的功能{增加一些附加的功能,在指定的地方添加其他函数方法:} 2.其他的方法:[需要的四个接 ...
- 洛谷 P3182 [HAOI2016]放棋子(高精度,错排问题)
传送门 解题思路 不会错排问题的请移步——错排问题 && 洛谷 P1595 信封问题 这一道题其实就是求对于每一行的每一个棋子都放在没有障碍的地方的方案数. 因为障碍是每行.每列只有一 ...
- [BZOJ 2989]数列(CDQ 分治+曼哈顿距离与切比雪夫距离的转化)
[BZOJ 2989]数列(CDQ 分治) 题面 给定一个长度为n的正整数数列a[i]. 定义2个位置的graze值为两者位置差与数值差的和,即graze(x,y)=|x-y|+|a[x]-a[y]| ...
- Golang环境配置
下载 下载地址 Go官网下载地址:https://golang.org/dl/ Go官方镜像站(推荐):https://golang.google.cn/dl/ 版本选择 安装 Windows安装 示 ...