LOJ 6060「2017 山东一轮集训 Day1 / SDWC2018 Day1」Set $ solution: $ 这一题的重点在于优先级问题,我们应该先保证总和最大,然后再保证某一个最小.于是我们分两部分贪心:(注意 $ tot $ 表示左右元素的异或和) 首先我们要让总和最大的话,我们只需要讨论 $ tot $ 的某一位为0的情况(如果为1,那么不管怎么分配两边的数都只能并且一定有一个数,使它这一位上含有1).对于 $ tot $ 的某一位为0的情况,我们肯定贪心的让两边都在这一位上含有…
[LOJ6067][2017 山东一轮集训 Day3]第三题 FFT 题目大意 给你 \(n,b,c,d,e,a_0,a_1,\ldots,a_{n-1}\),定义 \[ \begin{align} x_k&=b\times c^{4k}+d\times c^{2k}+e\\ f(x)&=\sum_{i=0}^{n-1}a_ix^i \end{align} \] 求 \(f(x_0),f(x_1),\ldots,f(x_{n-1})\). 对 \({10}^6+3\) 取模. 题解 直接多…
Loj #6069. 「2017 山东一轮集训 Day4」塔 题目描述 现在有一条 $ [1, l] $ 的数轴,要在上面造 $ n $ 座塔,每座塔的坐标要两两不同,且为整点. 塔有编号,且每座塔都有高度,对于编号为 $ i $ 座塔,其高度为 $ i $.对于一座塔,需要满足它与前面以及后面的塔的距离大于等于自身高度(不存在则没有限制).问有多少建造方案.答案对 $ m $ 取模. 塔不要求按编号为顺序建造. 输入格式 一行三个整数 $ n, l, m $. 输出格式 输出一个整数,代表答案…
Loj #6073.「2017 山东一轮集训 Day5」距离 Description 给定一棵 \(n\) 个点的边带权的树,以及一个排列$ p\(,有\)q $个询问,给定点 \(u, v, k\),设$ path(u,v) \(表示\) u$ 到 $v \(的路径,\)dist(u,v) \(表示\) u$ 到\(v\) 的距离,希望你求出 Input 第一行一个整数 \(type =0/1\)表示这个测试点的数据类型. 第二行两个整数 \(n,q\). 接下来$ n−1$ 行,每行三个整数…
Loj 6068. 「2017 山东一轮集训 Day4」棋盘 题目描述 给定一个 $ n \times n $ 的棋盘,棋盘上每个位置要么为空要么为障碍.定义棋盘上两个位置 $ (x, y),(u, v) $ 能互相攻击当前仅当满足以下两个条件: $ x = u $ 或 $ y = v $ 对于 $ (x, y) $ 与 $ (u, v) $ 之间的所有位置,均不是障碍. 现在有 $ q $ 个询问,每个询问给定 $ k_i $,要求从棋盘中选出 $ k_i $ 个空位置来放棋子,问最少互相能攻…
「2017 山东一轮集训 Day5」苹果树 \(n\leq 40\) 折半搜索+矩阵树定理. 没有想到折半搜索. 首先我们先枚举\(k\)个好点,我们让它们一定没有用的.要满足这个条件就要使它只能和坏点相连.其他的点没有要求.这样算出来了至少\(k\)个点没有用的生成树个数,我们要得到恰好\(k\)个点的生成树个数就简单容斥一下就好了. 然后我们要得到有\(k\)个点没有用的情况下的点集的方案数.看到\(40\)这个范围我们容易想到折半搜索. 然后就没了. 但是我没写容斥,写的枚举集合划分(被吊…
[LOJ#6066]「2017 山东一轮集训 Day3」第二题(哈希,二分) 题面 LOJ 题解 要哈希是很显然的,那么就考虑哈希什么... 要找一个东西可以表示一棵树,所以我们找到了括号序列. 那么二分一个答案\(d\),把所有点挂到\(d+1\)次祖先上去,那么\(d+1\)次祖先的哈希值就是它原本的括号序列挖去了若干段,直接暴力哈希拼接起来就好了. #include<iostream> #include<cstdio> #include<cstdlib> #inc…
loj6068. 「2017 山东一轮集训 Day4」棋盘 链接 https://loj.ac/problem/6068 思路 上来没头绪,后来套算法,套了个网络流 经典二分图 左边横,右边列 先重新算一下行和列,就是他们x相通的的算一个 然后就去掉了障碍的作用 然后每一行贡献是递增的(0,1,2,3,4---) 直接暴力连上每条可能有的流量为1的边就行了 下面的图可能没啥用就是个普通二分图 错误 有的数组开小了 有的memset(1e6) T成40 代码 #include <bits/stdc…
#6074. 「2017 山东一轮集训 Day6」子序列 链接 分析: 首先设f[i][j]为到第i个点,结尾字符是j的方案数,这个j一定是从i往前走,第一个出现的j,因为这个j可以代替掉前面所有j.于是有转移方程: $$ f_{i,j}= \begin{cases} f_{i-1,j}&,j\neq S_i\\ \sum_{k=1}^{m+1}f_{i-1,k}&,j=S_i \end{cases} $$ 表示如果当前j不是s[i]的话,最靠后的结尾的j还是那个位置,从i-1转移即可,否…
[LOJ6077]「2017 山东一轮集训 Day7」逆序对 题目描述 给定 n,k ,请求出长度为 n的逆序对数恰好为 k 的排列的个数.答案对 109+7 取模. 对于一个长度为 n 的排列 p ,其逆序对数即满足 i<j 且 pi>pj 的二元组 (i,j)的数量. 输入格式 一行两个整数 n,k. 输出格式 一行,表示答案. 样例输入 7 12 样例输出 531 数据范围与提示 对于 20% 的数据,n,k≤20:对于 40% 的数据,n,k≤100:对于 60% 的数据,n,k≤50…