51NOD 1773:A国的贸易——题解】的更多相关文章

[51Nod 1773] A国的贸易 题目描述 A国是一个神奇的国家. 这个国家有 2n 个城市,每个城市都有一个独一无二的编号 ,编号范围为0~2n-1. A国的神奇体现在,他们有着神奇的贸易规则. 当两个城市u,v的编号满足calc(u,v)=1的时候,这两个城市才可以进行贸易(即有一条边相连). 而calc(u,v)定义为u,v按位异或的结果的二进制表示中数字1的个数. ex:calc(1,2)=2 --> 01 xor 10 = 11 calc(100,101)=1 --> 0110,…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1773 参考1:FWT讲解 https://www.cnblogs.com/RabbitHu/p/9182047.html 参考2:题解 https://www.cnblogs.com/ivorysi/p/9178577.html (令$\oplus$表示异或) 设$dp[i][j]$表示第$i$天$j$编号城市货物数. 因为只有$i \oplus j$的答案有一个1才能…
题解 FWT板子题 可以发现 \(dp[i][u] = \sum_{i = 0}^{N - 1} dp[i - 1][u xor (2^i)] + dp[i - 1][u]\) 然后如果把异或提出来可以变成一个异或卷积 也就是另一个数组里只有\(0\),\(2^0\),\(2^1\)...\(2^{n - 1}\)有值 用FWT变换一下,然后快速幂,之后和原数组卷积起来就是答案了 代码 #include <iostream> #include <algorithm> #includ…
「NOIP2009」最优贸易 题解 题目TP门 题目描述 \(C\)国有\(n\)个大城市和\(m\)条道路,每条道路连接这\(n\)个城市中的某两个城市.任意两个城市之间最多只有一条道路直接相连.这\(m\)条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为\(1\)条. \(C\)国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价格不一定相同.但是,同一种商品在同一个城市的买入价和卖出价始终是相同的. 商人阿龙来到\(C\)国旅…
[51Nod1773]A国的贸易 Description 给出一个长度为 \(2^n\) 的序列,编号从\(0\)开始.每次操作后,如果 \(i\) 与 \(j\) 的二进制表示只差一位则第 \(i\) 个数会加上操作前的第 \(j\) 个数.求 \(t\) 次操作后序列中的每个数是多少. Input 第一行两个正整数 \(n\) ,\(t\),意义如题. 第二行 \(2^n\) 个非负整数,第 \(i\) 个数表示编号为 \(i-1\) 的城市的初始货物存储量. \(n<=20 \ t<=1…
基准时间限制:2 秒 空间限制:524288 KB 分值: 40  A国是一个神奇的国家. 这个国家有 2n 个城市,每个城市都有一个独一无二的编号 ,编号范围为0~2n-1. A国的神奇体现在,他们有着神奇的贸易规则. 当两个城市u,v的编号满足calc(u,v)=1的时候,这两个城市才可以进行贸易(即有一条边相连).而calc(u,v)定义为u,v按位异或的结果的二进制表示中数字1的个数. ex:calc(1,2)=2         ——> 01 xor 10 = 11        ca…
老了-稍微麻烦一点的树形DP都想不到了. 题目描述 给定一棵树,边权是整数 \(c_i\) ,找出两条不相交的链(没有公共点),使得链长的乘积最大(链长定义为这条链上所有边的权值之和,如果这条链只有 \(1\) 个点则链长视为 \(0\)). 输入输出格式 输入格式: 第一行:一个 \(n\) 表示节点个数. 接下来 \(n-1\) 行每行三个整数 \(u,v,c\) 表示 \(u,v\) 之间有一条 \(c\) 的边. 输出格式: 输出一个整数表示最大的乘积. 输入输出样例 输入样例: 5 1…
原文链接https://www.cnblogs.com/zhouzhendong/p/51Nod1773.html 题目传送门 - 51Nod1773 题意 给定一个长度为 $2^n$ 的序列,第 $i$ 项为 $f_{i-1}$ . 现在让你做 $T$ 次这样的运算:($i\in[0,2^n)$) $$f^{\prime}_i=f_i+\sum_{j=0}^{n-1} f_{i\ {\rm XOR} \ 2^j}$$ 输出最终的 $f$ 序列. 题解 构造转移多项式 $g$ .使得 $g_0=…
题目描述 给出一个长度为 $2^n$ 的序列,编号从0开始.每次操作后,如果 $i$ 与 $j$ 的二进制表示只差一位则第 $i$ 个数会加上操作前的第 $j$ 个数.求 $t$ 次操作后序列中的每个数是多少. 输入 第一行两个正整数 n , t,意义如题. 第二行 2^n 个非负整数,第 i 个数表示编号为 i-1 的城市的初始货物存储量.n<=20  t<=10^9 输出 输出一行 2^n 个非负整数. 第 i 个数表示过了 t 天后,编号为 i-1 的城市上的货物数量对 1e9+7 取模…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1709 (我什么时候看到二进制贡献才能条件反射想到按位处理贡献呢……) 参考:https://www.cnblogs.com/hzoier/p/8593825.html 最朴素当然是LCA暴算. 但是更聪明的做法是考虑每个节点$u$,固定$lca$求贡献,能够$LCA(u,v)=lca$的点$v$的个数显然为$size[lca]-size[u$所在的以$lca$为根的子树…