首页 > TAG信息列表 > HNOI2011

P3214 [HNOI2011] 卡农 (dp +排列计数 正难则反)

  题目传送门 题目大意: 给定两个数 \(n , m\) ,在集合 \(S = {1,2...n}\) 中选取 \(m\) 个非空子集,使得子集不重复并且子集中的每个元素出现偶数次,求出满足上述条件的方案数。 假设 \(a\) 为 \(\{\{1,2\},\{2,3\}\}\),\(b\) 为 \(\{\{2,3\},\{1,2\}\}\),那么 \(a\) 与 \(b\) 为重复

[luogu p3214] [HNOI2011] 卡农

\(\mathtt{Link}\) P3214 [HNOI2011] 卡农 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) \(\mathtt{Description}\) 在集合 \(S = {1, 2, \ldots, n}\) 中,选出 \(m\) 个子集,使得 无空集 选定的 \(m\) 个集合两两不同 选定的 \(m\) 个集合中,\(1\) 到 \(n\) 中每个元素出现次数必

题解[ [HNOI2011]数矩形 ]

题目 Luogu darkbzoj Sol 提供一个不用高级计算几何技巧的写法。 感觉和\(Atcoder\ ABC220G\)比较相似。 把全部的直线求出来。 考虑两条直线满足什么条件才会构成一个矩形的对边: 两条直线的中垂线完全相同 原本的两条直线不重合 两条直线长度相同 那就好办了:把所有的\(\dfrac{n

[HNOI2011]卡农

题目 点这里看题目。 分析 一个片段就是 \(\{1,2,\dots,n\}\) 的一个非空子集,所以片段共有 \(2^n-1\) 个; 问题相当于求片段集合的大小为 \(m\),且每个音符最终出现偶数次的子集数量。 看一下问题的限制: 所有片段非空; 集合中不存在相同的两个片段; 集合中每个元素总共出现偶数次; 最

[HNOI2011]卡农

壹、题目描述 ¶ 传送门 to Luogu. 贰、题解 ¶ \[\newcommand\down[2]{{{#1}^{\underline{#2}}}} \]先不考虑集合的无序性,这样只需要最后 \(\div m!\) 即可。 记 \(f(i)\) 为选择 \(i\) 个合法集合的方案数。 注意到只要我们选择了前 \(i-1\) 的集合,最后一个集合就已经被确定了。

BZOJ2337: [HNOI2011]XOR和路径(期望 高斯消元)

题意 题目链接 Sol 期望的线性性对xor运算是不成立的,但是我们可以每位分开算 设\(f[i]\)表示从\(i\)到\(n\)边权为1的概率,统计答案的时候乘一下权值 转移方程为 \[f[i] = (w = 1) \frac{1 - f[to]}{deg[i]} +(w = 0) \frac{f[to]}{deg[i]} \] 高斯消元解一下 注意:f[n] = 0,有

[HNOI2011]数学作业

嘟嘟嘟 令\(dp[i]\)表示到第\(i\)个数时的答案,很容易列出: \[dp[i] = dp[i - 1] * 10 ^ {num[i]} + (i - 1) + 1 \] 其中\(num[i]\)表示\(i\)的位数。 然后看数据范围,知道这一定得用矩乘优化。可是\(num[i]\)是一个变量啊,这怎么办。 A了后我问坐在旁边的学姐,然后学姐一眼秒:按位

P3211 [HNOI2011]XOR和路径 (拆位+高斯消元)

https://www.luogu.com.cn/problem/P3211 题目描述 给定一个无向连通图,其节点编号为 1 到 N,其边的权值为非负整数。试求出一条从 1 号节点到 N 号节点的路径,使得该路径上经过的边的权值的“XOR 和”最大。该路径可以重复经过某些节点或边,当一条边在路径中出现多次时,其权值在计算

[HNOI2011]XOR和路径

XI.[HNOI2011]XOR和路径 同上题一样,本题采用倒序DP的方式。 我们考虑按位处理。设当前处理到第\(p\)位,再设\(f_i\)表示从位置\(i\)出发,到达终点时的期望结果。 则对于一条边\((x,y,z)\),如果\(z\)在第\(p\)位上是\(1\),则有\(f_x\leftarrow 1-f_y\);否则,则有\(f_x\leftarrow f_y\)。

#矩阵乘法# [luogu 3216] [HNOI2011]数学作业

Porblem https://www.luogu.com.cn/problem/P3216 Solution Code #include<cstdio> #include<cstring> #include<algorithm> #define ll long long #define rep(i,x,y) for(ll i=x;i<=y;i++) using namespace std; const int N=10; ll n,mod,W=3;

[HNOI2011]卡农(容斥/DP)

Problem 题目地址 Solution 首先对题意进行一步转换:从 \([1,2^n-1]\) 中选出不重复的 \(m\) 的数,使它们的异或和为 \(0\) 的方案数。 手推一下即可。 为了计算方便,我们考虑顺序,最后再把顺序处理掉(即选择的集合相同,顺序不同视作不同的方案)。 设 \(f[i]\) 表示选择 \(i\) 个数异或

luogu P3217 [HNOI2011]数矩形

LINK:数矩形 题意:给出n个点 求出一个最大的矩形。 矩形可以使斜着的。(不会告诉你样例我算了几年 这道题的一个潜规则 矩形面积都是整数 我也不知道为啥一定是整数 姑且是题目输出的要求吧。 所以用double什么的精度会挂的很惨。 考虑暴力 n^3枚举点 剩下一个点利用一些奇奇怪怪的

BZOJ 2329: [HNOI2011]括号修复 Splay

code: #include <cstdio> #include <map> #include <vector> #include <cstring> #include <string> #include <algorithm> #define N 100007 #define ll long long #define lson s[x].ch[0] #define rson s[x].ch[1]

BZOJ2115 [Wc2011] Xor 和 LG3211 [HNOI2011]XOR和路径

Xor F.A.Qs Home Discuss ProblemSet Status Ranklist Contest 入门OJ ModifyUser   autointLogout 捐赠本站 Problem 2115. -- [Wc2011] Xor2115: [Wc2011] XorTime Limit: 10 Sec  Memory Limit: 259 MBSubmit: 5811  Solved: 2474[Submit][Status][Discuss]Desc

HNOI2011 卡农

题目链接:戳我 蒟蒻今天正式开始学容斥了!!(但是还是不会做啊不会做啊不会做啊) 这个题题意化简下来是这样的:n个数中选择m个子集,它们需要满足三个条件—— 1、选择的子集不能为空 2、选择的子集不能相同 3、选择的子集中,每个数出现的次数必须为偶数 那个集合相同的条件没有什么难搞的,直

[HNOI2011]括号修复

设\(nd[4]\) 0——多出来的右括号 1——多出来的左括号 2——取反后多出来的右括号 3——取反后多出来的左括号 这样一来 Swap: swap(0,3),swap(1,2),swap(sn[0],sn[1]) Invert: swap(0,2),swap(1,3),val[k]^=1 Replace: v<-siz[k],v+2^1<-siz[k],v^1<-0,v+2<-0 注意一下运算优先级