Flower Dance Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://162.105.80.126/contest/%E3%80%90%E5%BC%B1%E7%9C%81%E8%83%A1%E7%AD%96%E3%80%91Round%20%230/Flower%20Dance Description 萌萌哒的TKD正在打代码,耳边放着Flower Dance,手指轻快地在键盘上舞动. 听着这美妙的旋律,TKD不禁想起了什么. 第一次…
[弱省胡策]Round #5 Count 太神仙了. \(DP\)做法 设\(f_{n,m,d,k}\)表示\(n*m\)的矩阵,填入第\(k\)个颜色,并且第\(k\)个颜色最少的一列上有\(d\)个块染了\(k\)颜色. \[ \displaystyle f_{n,m,d,k}=\sum_{i=1}^nC_n^i\cdot (C_m^d)^i\cdot f_{i,m-d,0,k-1}\cdot f_{n-i,m,d+1,k} \] 边界条件特别烦,当\(n=1\)或者\(n==1\&\&…
luoguP3769 [CH弱省胡策R2]TATT PS:做这题前先切掉 P4148简单题,对于本人这样的juruo更助于理解,当然dalao就当练练手吧 题目大意: 现在有n个四维空间中的点,请求出一条最长的路径,满足任意一维坐标都是单调不降的 偏模板的K-D Tree 题目没规定起点,则从任意一点出发,按维度优先级以及每个维度坐标为关键字排序, 每点作为终点查询一次,再插入,其他就是模板化的代码了 这里用到了一个小技巧,就是初始化将子树0的值赋值,避免过多的特判,使代码更加简洁 for(LL…
弱省胡策 Magic 求\(n\)个点\(n\)的条边的简单联通图的个数. 毒瘤,还要写高精. 我们枚举环的大小\(k\),\(\displaystyle ans=\sum_{k=3}^nC_n^k \frac{(k-1)!}{2}n^{n-k-1}k\) 其中\(\frac{(k-1)!}{2}\)表示环的连边方案,\(n^{n-k-1}k\)就是一个大小为\(k\),\(n-k+1\)个大小为\(1\)的森林的生成树个数. 代码: 没有…
DP+容斥原理or补集转化?/KD-Tree 唔……突然发现最早打的两场(打的最烂的两场)没有写记录……(太烂所以不忍记录了吗... 还是把搞出来了的两道题记录一下吧= =勉强算弥补一下缺憾…… Round0 A 要求问(1,2)->(n-1,m)  &  (2,1)->(n,m-1)的不相交路径条数,蒟蒻当时只想到了$N^3$的DP……即枚举当前的总步数,以及两个人分别横向走了几步. 其实正解是(也只能是?)$O(N^2)$的! ans=calc{(1,2)->(n-1,m)}…
Prufer序列+高精度+组合数学/DP+可持久化线段树 Magic 利用Prufer序列,我们考虑序列中每个点是第几个插进去的,再考虑环的连接方式,我们有$$ans=\sum_{K=3}^n N^{N-K-1}*K*\frac{(K-1)!}{2} * \binom{N}{K}$$ 然而直接高精算会爆…… 注意到每一项与前一项相差不大,有$now=last*N/(N-K+1)$,所以我们算出来第一项以后不用每次重算后面的了…… //Round7 A #include<cstdio> #inc…
题目链接: http://ch.ezoj.tk/contest/%E3%80%90%E5%BC%B1%E7%9C%81%E8%83%A1%E7%AD%96%E3%80%91Round%20%230/Flower%20Dance 题意: 在一个n*m的地图上,两个人同时从左上角走到右下角,其中有一些格子是障碍,不能走. 并且,两个人走的路径不能相交. 求总方案数. 题解: 昨天晚上做这道题一点靠谱的思路都没有.就是不相交路线那里被弄死了.. 后来听了讲解才发现..代码如此简单! 就是要开动脑筋啊!…
这个题是传说中的 Hack 狂魔 qmqmqm 出的构造题.当然要神. 这个题的本质实际上就是构造一个图,然后使得任意两点间都有长度为 $k$ 的路径相连,然后对于任意的 $i < k$,都存在两个点使得这两个点没有长度为 $i$ 的路径相连. 我的构造方法就是: 首先给每个点连一个自环. 构造一个大小为 $n-k+1$ 的团. 然后剩下的点造成一条链并与 $n-k+1$ 号点相连. 这样的解是一组可行解. 时间复杂度 $O(n^2)$,空间复杂度 $O(1)$. #include <cstd…
这个题是我出的 sb 题. 首先,我们可以得到: $$A_i = \sum_{j=i}^{n}{j\choose i}(-1)^{i+j}B_j$$ 我们先假设是对的,然后我们把这个关系带进来,有: $$B_i = \sum_{j=i}^{n}{j\choose i}A_j = \sum_{j=1}^{n}{j\choose i}\sum_{k=j}^{n}{k\choose j}(-1)^{j+k}B_k = \sum_{j=i}^{n}B_j\sum_{k=i}^{j}{j\choose k…
orz PoPoQQQ 的神题. 我的想法是:给每一个高度都维护一个 $01$ 序列,大概就是维护一个 $Map[i][j]$ 的矩阵,然后 $Map[i][j]$ 表示第 $i$ 根柱子的高度是否 $\ge j$. 那么怎么维护 $Map[i][j]$ 呢..? 首先我们把柱子按照高度从小到大排序,然后依次给每个高度建主席树,初始时 $Map[i][0]$ 全是 $1$,然后如果当前高度 $i$ 比某个柱子 $j$ 的高度要大了,那么就单点修改 $Map[i][j]$,然后这个就是主席树动态开…
感觉这个题好神啊. 首先我们只管 $a = b$ 的情况,那么我们自然就可以把这个串对 $a$ 取模,然后用 KMP 求出能弄出几个其他的 B 串. 具体就是把串先倍长,然后倒过来,然后求 $Next$ 数组,然后从 $2n$ 开始沿着 $Next[]$ 跳,直到跳到 $\le n$ 的时候停止,看哪些位置被跳到了,哪些位置就是合法的. 问题是现在 $a \neq b$ 怎么办..? 我猜啊,我们可以求出限制是 $a$ 的倍数时,哪些 B 串是合法的,再求出限制是 $b$ 的倍数是,哪些是合法的…
容斥原理+Fib Orz HE的神犇们 蒟蒻只能改出来第三题……实在太弱 官方题解:http://pan.baidu.com/s/1o6MdtQq fib的神奇性质……还有解密a[i]的过程……这里就不细说了…… 主要学习了一下容斥>_<(然而还是没什么感觉?) 写在代码注释里了…… //Round3 C #include<cstdio> #include<set> #include<cstring> #include<cstdlib> #inc…
01分数规划(网络流)+状压DP+树形DP 官方题解地址:http://pan.baidu.com/s/1mg5S5z6 A 好神啊= =第一次写01分数规划 其实分数规划是要求$$ Maximize/Minimize \ \ L=\frac{A(x)}{B(x)}$$ 这里我们拿最大来举例吧……因为本题就是最大嘛~ 通用解法是:二分= = 假设最优解为$\lambda^*$,那么有$$\lambda^*=f(x^*)=\frac{A(x^*)}{B(x^*)} \\ \Rightarrow \…
官方题解:http://wyfcyx.is-programmer.com/posts/95490.html A 目前只会30分的暴力……DP好像很神的样子0.0(听说可以多次随机强行算? //Round2 A #include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> #define rep(i,n) for(int i=0…
平衡树维护凸壳/三角函数+递推+线段树 官方题解:http://pan.baidu.com/s/1sjQbY8H 洛阳城里春光好 题目大意:(其实出题人已经写的很简短了……直接copy的-_-.sorry!) 一个平面上的n个点构成一个点集.老师会进行Q次操作,每次操作有以下两种可能:1. 插入操作:给定两个实数x,y,向点集中加入一个坐标为(x,y)的点.2. 查询操作:给定实数k,取点集中任一点(x,y),求满足方程y=kx+b的b的最大值.现在小Z想知道,对于数学老师的每次查询,符合题意的…
KMP/DP+树链剖分+线段树/暴力 今天考的真是……大起大落…… String QwQ题意理解又出错了……(还是说一开始理解了,后来自己又忘了为什么是这样了?) 反正最后的结果就是……我当成:后面每行只需要和第一行check一下就可以了. 因为那个图真的很像在搞串的匹配啊……一格一格往过移,看能不能匹配 然后不就是每个s[i]对A取一下模,然后KMP?看有多少个位置能匹配咯... (其实这是A=B时的做法) 将原序列增长一倍(复制一遍),对A取模做一遍,然后再对B取模做一遍,看有哪些位置是合法…
反演+FFT+构造+DP 写了这么多tag,其实我一个也不会 A 第一题是反演……数据范围10W,看着就有种要用FFT等神奇算法的感觉……然而蒟蒻并不会推公式,只好写了20+10分的暴力,然而特判30分的时候好像挂了,所以并没有拿到……20分滚粗了 最近打暴力搞部分分的时候,写各种情况的判断条件什么的总是出问题……sad……以后还是自己造下数据判一下能不能过吧,不能总是靠人品啊>_> 我还是放弃FFT吧,反正……出来这种题,我也想不到要用FFT & 不会推公式……呵呵哒 //Round…
description 洛谷 data range \[ n\le 5\times 10^4\] solution 这就是四维偏序了... 好象时间复杂度是\(O(n^{\frac{5}{3}})\)... 因为可以剪枝所以速度快了一些... code #include<bits/stdc++.h> #include<algorithm> #include<iostream> #include<cstdlib> #include<iomanip>…
luogu 题意 其实就是四维偏序. sol 第一维排序,然后就只需要写个\(3D-tree\)了. 据说\(kD-tree\)的单次查询复杂度是\(O(n^{1-\frac{1}{k}})\).所以这里的复杂度是\(O(n^{\frac{5}{3}})\). code #include<cstdio> #include<algorithm> using namespace std; int gi() { int x=0,w=1;char ch=getchar(); while (…
发现一个区间[L,R]代表的2进制数是3的倍数,当且仅当从L开始的后缀二进制值 - 从R+1开始的后缀二进制值 是 3 的倍数 (具体证明因为太简单而被屏蔽). 于是我们就可以在每个点维护从它开始的后缀二进制数的值,因为在%3同余系下只有3个数,所以我们可以很容易的用线段树进行区间维护,然后答案就是 C(num[0],2) + C(num[1],2) + C(num[2],2)    [注意如果查询区间是 [l,r]的话那么 在线段树中查找的区间是 [l,r+1] ,因为区间[x,y]对应 x和…
本蒟蒻第一道\(K-D-Tree\)维护\(dp\) Question 题目大意:求一条路径,使得其四个维度单调不降. 先排序消掉一维再说. 对于每一个点,初始的时候绝对长度是1啊.于是,先赋值一个1,对于每一个点. 设计\(dp\)数组 \[f[i]=max_{f[j]}(a[j]<=a[i],b[j]<=b[i],c[j]<=c[i],d[j]<=d[i]) \] 那问题就转为,对于每一个点,如何求出在它之前的最大\(f[i]\)值. 发现问题类似于三维偏序,正好\(K-D-T…
真是一个自闭的题目(调了一个上午+大半个下午) 从\(WA\)到\(WA+TLE\)到\(TLE\)到\(AC\) 真的艰辛. 首先,这个题,我们可以考虑直接上四维KDTree来解决. 对于kdtree上的每个节点,我们维护三个值,分别表示各个维度的\(mn\),当前节点的\(val\)(这个是用来每次更新\(ans\)的),子树的\(val\)的最大值(用来做估价函数) 首先\(build\)出整个kdtree void up(int root) { for (int i=0;i<=3;i++…
题目 Contest Hunter 3101 阶乘分解 原题传送门 题目分析 这里介绍一个本蒟蒻自己\(yy\)出来的方法. 我们发现,对于某一个单个的整数\(n\),若\(n\)能被某一个数\(x\)整除,那么我们可以看作\(++count[x]\).且将\(n\)变为\(n/x\). 这时就相当有了两个\(n/x\)继续分解,就相当于缩小了问题规模!!! Code: #include<cstdio> #include<bitset> //#include<bits/std…
Description 给定一颗 \(n\) 个点的树,带边权. 你可以选出一个包含 \(1\) 顶点的连通块,连通块的权值为连接块内这些点的边权和. 求一种选法,使得这个选法的权值是所有选法中第 \(k\) 小的.如果不存在第 \(k\) 小的那输出最大的. 答案对 \(998244353\) 取模. Hint \(1\le n,k\le 10^5\) \(\text{边权} \in (0, 10^9]\) Solution 考虑一个现有的选法,我们考虑如何得到一个新的 尽量小的更大的 选法.…
Round 0: Regionals 2010 :: NEERC Eastern Subregional 贴吧题解(官方)? 网上的题解 水 A Murphy's Law 题意:Anka拿着一块涂着黄油的面包正要往嘴里塞,忽然虎躯一震面包脱手了. 面包可以被认为是一条长度为l的线段,脱手的一瞬间面包(线段)与地面平行,此时面包的下表面为黄油.面包脱手后在掉落过程中以一定的角速度绕面包中心(即线段中点)旋转. 问面包的哪一面先着地. l:面包的长度,以厘米为单位: h:Anka的嘴巴与地面的垂直距…
https://codeforces.com/contest/1139/problem/C 题意 一颗有n个点的树,需要挑选出k个点组成序列(可重复),按照序列的顺序遍历树,假如经过黑色的边,那么这个序列就是好的,问有多少个好的序列 题解 黑边不连,红边连,假如两个点不在同一并查集,那么一定经过黑边 定义\(dp[i][j][k]\)为选择前i个点,起始点为j,是否已经经过黑边(k)的方案数 \(dp[i-1][j][0]*(n-N[fin(j)])+dp[i-1][j][1]*n - > dp…
https://codeforces.com/contest/1106/problem/E 题意 一共有k个红包,每个红包在\([s_i,t_i]\)时间可以领取,假如领取了第i个红包,那么在\(d_i\)后才能领取下一个红包,每个红包价值\(w_i\),对方假如有机会领取红包他一定会领取,你有m次阻止对方领取的机会,问对方最少可以拿到多少红包 题解 定义dp[i][j]为前i秒用了j次机会让对方拿到最小价值的红包 \(dp[i][j] - > dp[i+1][j+1]\) 假如使用阻止 \(d…
注意以下几点: 搜索维度非约束条件的都要记录,否则大概率出错,比如_0 st参数传递和_0的互相影响要分辨清楚 num==-1就要返回0而不是1 #include<iostream> #include<algorithm> #include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<string> #include<vec…
orz lydrainbowcat [Problem A]「艦これ市」70万幕后交易事件 排序机器=-=.重要的是相同的处理. 我们可以从小到大添加数字,然后维护一个位置的序列.每一种相等的数字都在一块.如果我们要添加一个新的数字,要把位置>它的数字全部弹出,而且要把小于它的数字(在队头)全部弹出,这样才能保证正确性和最优性. #include <iostream> #include <cstdio> #include <cstring> #include <…
ROUND 1 第一轮是我出的. 比赛情况: #1 NanoApe 300 (完美AK) #2 && #3 swm_sxt / ccz  200 A.candy 这道题就是个nim游戏, 我们知道当且仅当选出的各堆糖果的异或和为0时,先手必败. 这样问题转化为从N个数中选1一些数使得他们的异或和为0的方案数. 30%,O(2^N) DFS. 假如只有询问, 那么可以直接用类似01背包的dp解决. for i = 1 ~ 1024 dp(i, x) += dp(i-1, x^w_i); dp…