首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
HZOJ 巨神兵
】的更多相关文章
HZOJ 巨神兵
60pts: 每个DAG的拓扑序是唯一的,所以考虑将DAG分层.f[i][j]记录当前选择的节点状态是i,最后一层的节点状态为j(dep取最大). 初始状态:$f[i][i]=1;i\in [1,1<<n)$.那么我们第一层枚举当前状态i,第二层枚举[1,1<<n).那么令s=i&j,t=j&(~i),s即为i的一个子集,所以令s为当前的最后一层,t为i 的补集的一个子集,令t为转移后的最后一层,要求s到t中每个点都有边.枚举t中每个点,设ch1为集合$i-s$当前…
BZOJ 3812 主旋律 (状压DP+容斥) + NOIP模拟赛 巨神兵(obelisk)(状压DP)
这道题跟另一道题很像,先看看那道题吧 巨神兵(obelisk) 题面 欧贝利斯克的巨神兵很喜欢有向图,有一天他找到了一张nnn个点mmm条边的有向图.欧贝利斯克认为一个没有环的有向图是优美的,请问这张图有多少个子图(即选定一个边集)是优美的?答案对 1,000,000,0071,000,000,0071,000,000,007 取模. n<=17n<=17n<=17 分析 这道题就是枚举拓扑序最后的点集来转移 #include <bits/stdc++.h> using na…
[CSP-S模拟测试]:巨神兵(状压DP)
题目描述 欧贝利斯克的巨神兵很喜欢有向图,有一天他找到了一张$n$个点$m$条边的有向图.欧贝利斯克认为一个没有环的有向图是优美的,请问这张图有多少个子图(即选定一个边集)是优美的?答案对$1,000,000,007$取模. 输入格式 第一行两个整数$n$和$m$.接下来$m$行每行两个整数表示一条有向边.保证无重边无自环. 输出格式 一行一个整数表示答案,对$1,000,000,007$取模. 样例 样例输入: 3 61 22 11 33 12 33 2 样例输出: 25 数据范围与提示 对于…
csp-s模拟测试57(10.2)「天空龙」·「巨神兵」·「太阳神」
题目是古埃及神话??? A. 天空龙 傻逼模拟,看来没有滑天下之大稽QAQ,也没有打错快读(大雾...) B. 巨神兵 难度爆增,一脸懵比..... 60分状压: 因为是求有向图,关于有向图好像拓扑用的很多,考虑到每个图的拓扑序是一定的 那么我们可以借此转移,设f[i][j]为当前点的状态为i,出度为零的点的度数为j 向下一层转移时枚举下一层的点集,那么点集S中每个点一定要和j连边,可以和i中除j以外的点连边 然后对于每个点cnt1,表示除j以外与i的连边,cnt2表示与j的连边,该点的贡献为2…
hzoj 2301(莫比乌斯反演)
题意 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公 数. 思路: 与先前的那个相比,这次a,c并不一定为一.所以先用的莫比乌斯+容斥定理但是TL 然后发现可以进一步有优化 可以发现8/3 和 8/4都等于2.所以我们可以分段计算,用sum记录mu的和,每次求出a/i的最大位置I,在i至l这段数中,a/i的值都是相同的,便可以每次循环计算出一段数的值,而且当数值越大时,重复越多. #include…
NOIp模拟赛 巨神兵(状压DP 容斥)
\(Description\) 给定\(n\)个点\(m\)条边的有向图,求有多少个边集的子集,构成的图没有环. \(n\leq17\). \(Solution\) 问题也等价于,用不同的边集构造DAG,有多少种合法方案.我们考虑怎么构造DAG使得方案不重不漏. 我明知道一个DAG的拓扑序是唯一确定的.所以我们按照拓扑序每次转移一个点集. \(f[s][s']\)表示 构造 已经选择的点集为\(s\),当前最后一层点集为\(s'\)的DAG 的方案数. 转移时枚举不在\(s\)中的子集\(k\)…
【2016NOIP十连测】【test4】【状压DP】【容斥原理】巨神兵
题目大意: 给一个n个点(n<=17),m条边的有向图(无自环.无重边),求其无环子图的方案数. 题解: 看到n<=17,显然是用状压dp. 用f[i]表示点集i的满足条件的方案数. 状态转移时可以一层一层地把点加进点集. 具体的,枚举已知点集i,在i的补集中枚举下一层的点集j(可以无边相连)(以下i,j定义相同), 统计由i连向j的边e.对于这些边,每一条都可以选或不选, 就有2e种情况,即: f[i^j]+=f[i]*2e; 这显然是错误的, 因为对于点集k的一种连边方案,可以有多种方式划…
HZOJ 单
两个子任务真的是坑……考试的时候想到了60分的算法,然而只拿到了20分(各种沙雕错,没救了……). 算法1: 对于测试点1,直接n遍dfs即可求出答案,复杂度O(n^2),然而还是有好多同学跑LCA/最短路…… 期望得分10; 算法2(搬运题解,因为这个我没有想到……): t=1的数据最直接的想法是枚举所有可能的a[]数组判断是否可行.第2个测试点n<=5,1<=a[i]<=20.注意20^5=3200000,直接暴力搜索a[i]的取值是可以承受的,可以通过第2个测试点,期望得分10分,…
20191102 「HZOJ NOIP2019 Round #12」20191102模拟
先开坑. md原题写挂我也真是... 100+20+10 白夜 打表大法吼 显然,不在环上的点对答案的贡献是 \((k-cycle)^{k-1}\) . 打表得到环上的递推式,矩阵一下乘起来就好了. #include<bits/stdc++.h> using namespace std; #define int long long template <typename Tp> void read(Tp &x){ x=0;char ch=1;int fh; while(ch!…
20191004 「HZOJ NOIP2019 Round #9」20191004模拟
综述 第一次 rk1 ,激动. 题目是 COCI 18/19 Round #1 的三至五题. 得分 \(100+100+20\) \(\mathrm{cipele}\) 问题描述 HZOJ1313 题解 二分答案+贪心 发现"最大值最小",自然想到二分答案. 对 \(a,b\) 排序,通过一些操作保证 \(a\) 比 \(b\) 短. 如果 \(b_j\) 不能被 \(a_i\) 选择,那么它一定不能被 \(a_k(k>i)\) 选择. 基于这个贪心配对即可. \(\mathrm…