【LOJ】#6434. 「PKUSC2018」主斗地】的更多相关文章

题面 Loj 题解 细节比较多的搜索题. 首先现将牌型暴力枚举出来,大概是\(3^{16}\)吧. 然后再看能打什么,简化后无非就三种决策:单牌,\(3+x\)和\(4+x\). 枚举网友打了几张\(3\)和\(4\),然后再枚举吉老师(\(\mathbf {orz}\))打了几张\(3\)和\(4\). 接着枚举\(3\)搭配了几个\(2\),然后贪心地从大到小去除吉老师手中大小为\(2\)的对子,从小到大去除网友手中大小为\(2\)的对子.之后就是检查单牌是否合法了. #include <c…
题解 什么,我这题竟然快到了LOJ rk1???? 搜起来有点麻烦,不过感觉还是比斗地主好下手(至今没敢写斗地主 首先是暴力搜牌型,最多\(3^{16}\)(什么判解还要复杂度怂成一团)的样子?? 然后判牌型,显然只要考虑单牌,和3 + x,4+2 然后暴力搜网友的3和4 暴力搜jry的3和4 然后枚举3搭配了几个2, 然后jry从大到小开始去除大小为2的对子,网友从小到大,是个简单的贪心 之后看看可以去掉的单牌的个数,也是jry从大到小,网友从小到大 之后的就是单牌互相压看看合不合法就好了 代…
这道斗地主比 \(PKUWC\) 那道可做多了... 我们用 \(NOIP\) 那道斗地主的思路:暴搜出三代和四代,贪心出散牌. 还有jry为什么要出xx网友而不出他的另一个老婆 我们发现两个人的每回合出的牌型是一样的.我们先暴力生成牌组,然后暴力将三代和四代情况搜出来,然后 \(check\) 因为九条可怜要严格更小,那么九条可怜在三代和四代中的散牌尽量出大牌,\(xx\) 网友相反. 然后 \(check\) 中暴力枚举有几张对子和散牌,然后再 \(O(15)\) 贪心扫一遍,如果可以,就返…
题面 LOJ #6436. 「PKUSC2018」神仙的游戏 题解 参考 yyb 的口中的长郡最强选手 租酥雨大佬的博客 ... 一开始以为 通配符匹配 就是类似于 BZOJ 4259: 残缺的字符串 这样做 . 把通配符设成 \(0\) 然后 . 别的按 \(\mathrm{ASCII}\) 码 给值 , 最后把他写成式子的形式 ... 后来发现太年轻了 qwq 先要做这题 , 那么先发现性质咯 : 存在一个长度为 \(len\) 的 \(border\) 当且仅当对于 \(\forall i…
题面 LOJ#6435. 「PKUSC2018」星际穿越 题解 参考了 这位大佬的博客 这道题好恶心啊qwq~~ 首先一定要认真阅读题目 !! 注意 \(l_i<r_i<x_i\) 这个条件 !! 所以它询问的就是向左走的最短路了 . 不难发现只有两种策略 , 要么一直向左走 ; 要么第一次向右走 , 然后一直向左走 . 并且到一个定点 \(x\) 的最短路长度 肯定是从右向左一段段递增的 . 为什么呢 ? 不难发现 如果向右走两次 , 那么只有一次是一定有效的 , 另外一次的 \(l_i\)…
题面 LOJ #6432. 「PKUSC2018」真实排名 注意排名的定义 , 分数不小于他的选手数量 !!! 题解 有点坑的细节题 ... 思路很简单 , 把每个数分两种情况讨论一下了 . 假设它为 \(x\) . 不对它进行翻倍操作 : 那么很容易发现 \(\displaystyle [\lceil \frac{x}{2}\rceil, x)\) 的数都不翻倍 . 其余部分任意 . 假设有 \(tot\) 个 . 那么这部分答案就是 \(\displaystyle \binom {n-tot…
题面 Loj 题解 先转化题意,其实这题在乘了\(n!\)以后就变成了全排列中的最大前缀和的和(有点拗口).\(n\leq20\),考虑状压\(DP\) 考虑一个最大前缀和\(\sum\limits_{i=1}^pa_i\),这个位置\(p\)是最大前缀和的右界当且仅当对于\(\forall r>p\)有:\(\sum\limits_{i=p+1}^ra_i\leq0\) 设\(sum_i\)表示二进制状态\(i\)的代数和,方便转移 设\(g_i\)表示选了子集\(i\)后有多少种排列使得所有…
题面 Loj 题解 普通的暴力是直接枚举改或者不改,最后在判断最后对哪些点有贡献. 而这种方法是很难优化的.所以考虑在排序之后线性处理.首先先假设没有重复的元素 struct Node { int poi, id; } a[N]; bool operator < (const Node &a, const Node &b) { return a.poi < b.poi; } bool operator < (const Node &a, const int &am…
题面 Loj 题解 感觉挺难的啊- 状压\(dp\) 首先,有一个性质 对于一个序列的最大前缀和\(\sum_{i=1}^{p} A[i]\) 显然对于每个\(\sum_{i=p+1}^{x}A[i](p+1 \leq x \leq n)<0\) 我们可以以\(p\)分成两个集合 \(n\leq 20\),所以状压一下 \(sum[i]\)表示当前状态表示的和 \(f[i]\)表示用当前状态的数,组成最大前缀和为\(sum[i]\)的方案数 \(g[i]\)表示当前状态的数,组成的序列,每个前缀…
题面 Loj 题解 枚举每一个点 分两种情况 翻倍or不翻倍 \(1.\)如果这个点\(i\)翻倍, 要保持排名不变,哪些必须翻倍,哪些可以翻倍? 必须翻倍: \(a[i] \leq a[x] < a[i]*2\) 那么其他的都可以选择性翻倍 \(2.\) 考虑点\(i\)不翻倍, 不能翻倍的: \(a[i]/2 \leq a[x] < a[i]\) 注意有和\(a[i]\)相等的可以翻倍 以上可以排序后,二分+组合数算 细节比较多,具体看代码 Code #include<cstdio&…
题目:https://loj.ac/problem/6433 想到一个方案中没有被选的后缀满足 “该后缀的任一前缀和 <=0 ”. 于是令 dp[ S ] 表示选了点集 S ,满足任一前缀和 <=0 的方案.很好转移. 令 f[ S ] 表示选了点集 S ,且 S 整体就是最大前缀和的方案. 只会 3n 做出 f[ ] ,就是考虑容斥, \( f[s]=|s|! - \sum f[d]*dp[s^d] (sm[d]>=sm[s]) \) ,其中 sm[ s ] 表示点集 s 的权值和.…
题目:https://loj.ac/problem/6435 题解:https://www.cnblogs.com/HocRiser/p/9166459.html 自己要怎样才能想到怎么做呢…… dp[ t ][ i ] 表示从 [ i , n ] 这些点出发,走 2t 步最左能走到哪. sm[ t ][ i ] 表示从 [ i , n ] 出发,走到 [ dp[ t ][ i ] , i-1 ] 的最小步数和:比如一个终点 x 贡献的就是 [ i , n ] 里离 x 最近的那个点到 x 的距…
题目:https://loj.ac/problem/6436 看题解才会. 有长为 i 的 border ,就是有长为 n-i 的循环节. 考虑如果 x 位置上是 0 . y 位置上是 1 ,那么长度是 | x-y | 的约数的循环节都不可行,因为在该循环节中, x 和 y 处在 “应该相等” 的地位. 最后一个部分分是暴力枚举 0 和 1 来预处理出一个 h[ i ] 表示长度是 i 的约数的循环节不可行.然后枚举循环节的长度 i ,再枚举 i 的倍数看看有没有 “不可行” 的.这样是 nlo…
题目:https://loj.ac/problem/6432 如果不选自己,设自己的值是 x ,需要让 “ a<x && 2*a>=x ” 的非 x 的值不被选:如果选自己,需要让 “ a>=x && 2*a<x ” 的非 x 的值被选. 注意是 “非 x ” 的值. #include<cstdio> #include<cstring> #include<algorithm> #define ll long lon…
题意 链接 Sol 生成函数题都好神仙啊qwq 我们考虑枚举一个长度\(len\).有一个结论是如果我们按\(N - len\)的余数分类,若同一组内的全为\(0\)或全为\(1\)(?不算),那么存在一个长度为\(len\)的border. 有了这个结论后我们考虑这样一种做法:把序列看成两个串\(a, b\),若\(a_i = 0, b_j = 1\),那么对于所有的\(k | (|i - j|)\), \(N-k\)都不会成为答案. 考虑怎么快速算不合法的\((i, j)\).对于多项式乘法…
原文链接https://www.cnblogs.com/zhouzhendong/p/LOJ6433.html 题解 枚举一个集合 S ,表示最大前缀和中包含的元素集为 S ,然后求出有多少个排列是这样的. 对于左边和右边分别考虑,我们可以发现: 左边:每一个后缀和都 >=0 右边:每一个前缀和都 <0 然后就只需要用两个 dp 分别求出每一个集合的元素的排列中分别满足上述条件的方案数即可. 注意一下题目要求最大前缀和非空. 代码 #include <bits/stdc++.h>…
这是个什么集合DP啊- 想过枚举断点但是不会处理接下来的问题了- 我好菜啊 题目描述 小 C 是一个算法竞赛爱好者,有一天小 C 遇到了一个非常难的问题:求一个序列的最大子段和. 但是小 C 并不会做这个题,于是小 C 决定把序列随机打乱,然后取序列的最大前缀和作为答案. 小 C 是一个非常有自知之明的人,他知道自己的算法完全不对,所以并不关心正确率,他只关心求出的解的期望值,现在请你帮他解决这个问题,由于答案可能非常复杂,所以你只需要输出答案乘上 \(n!\) 后对 \(998244353\)…
题目分析 通过画图分析,如果存在border长度为len,则原串一定是长度为n-len的循环串. 考虑什么时候无法形成长度为len的循环串. 显然是两个不同的字符的距离为len的整数倍时,不存在这样的循环串. 怎么求出两两不同的字符的距离呢? 翻转一下字符串做卷积即可.…
题目大意:给你一个$n(n\leqslant20)$项的数列$A$,设重排后的数列为$A'$,令$pre_p=\sum\limits_{i=1}^pA'_i$,求$max\{pre_i\}$的期望,乘$n!$ 题解:令$f_S$为选$S$集合的数,重排后满足$\max\{pre_i\}=\sum\limits_{i=1}^{|S|}S_i$的方案数,$g_S$为选$S$集合数,重排后满足$\max\{pre_i\}\leqslant0$的方案数.发现若数列$B$满足$\sum\limits_{i…
题面 传送门 题解 计算几何的东西我好像都已经忘光了-- 首先我们可以把原问题转化为另一个等价的问题:对于每一个敌人,我们以原点为圆心,画一个经过该点的圆,把这个圆在多边形内部的圆弧的度数加入答案.求总的度数是多少 因为这是个简单多边形,我们可以把它给三角形剖分.就是说把每条边都和原点构成一个三角形,然后对圆计算这个三角形的贡献,根据这条边的顺逆时针顺序来决定贡献要加上还是减去.易知最后的贡献就是这个多边形的贡献 那么我们对于每一个圆,暴力枚举多边形的一条边和原点构成的三角形,然后判一下圆弧和三…
题面 传送门 题解 一旦字符串踏上了通配符的不归路,它就永远脱离了温暖的字符串大家庭的怀抱 用人话说就是和通配符扯上关系的字符串就不是个正常的字符串了比如说这个 让我们仔细想想,如果一个长度为\(len\)的前缀是border,那么对于\(\forall i\in[1,len]\),都有\(s[i]=s[i+n-len]\),也就是说在模\(n-len\)意义下所有位置上的\(01\)要相等 如果有一个\(0\)位置\(i\),一个\(1\)位置\(j\),记\(x=|i-j|\),那么所有\(…
题目在这里...... 对于这道题,现场我写炸了......谁跟我说组合数O(n)的求是最快的?(~!@#¥¥%……& #include <cstdio> #include <algorithm> using namespace std; typedef long long ll; ; ; ll ksm(ll x, ll n) { ll ans = 1ll; //printf("%lld ", x); while( n) { ) ans = ans *…
题面 传送门 题解 我们先想想,在这个很特殊的图里该怎么走最短路 先设几个量,\(a_i\)表示\([a_i,i-1]\)之间的点都和\(i\)有边(即题中的\(l_i\)),\(l\)表示当前在计算从\(i\)到\([l,i]\)中的所有点的步数总和.那么答案就是\([l,i]-[r+1,i]\) 因为\(a_i\)表示\([a_i,i-1]\)之间的点都和\(i\)有边,那么如果从\(i\)出发,对于所有这个区间中的点,肯定是直接一步跳过去最优.证明显然 记\(mn_i\)表示\(i\)以及…
传送门 今天\(PKUWC\)试机的题 看着边上的大佬们一个个\(A\)穿咱还是不会-- 我们考虑枚举最大前缀和,如果一个前缀\(1\)到\(p\)是最大前缀和,那么\(p\)后面的所有前缀和都要小于\(0\) 于是我们设\(sum_S\)为子集\(S\)中所有元素的和,\(f_S\)为满足最大前缀和为\(sum_S\)的\(S\)的排列个数,那么我们可以枚举这个排列中位于第一个的数,只要剩下的数之和\(sum_{S-\{x\}}\)大于\(0\),那么\(f_S\)就可以加上\(f_{S-\{…
题面 题意转化为: 判断每个点所在的圆有多长的弧度角位于多边形内部. 然后就很暴力了. 每个点P,直接找到多边形和这个圆的所有交点,按照距离P的角度排序. 找交点,直接联立二元二次方程组.... 需要判断一段弧是否在多边形内部. 向量随机旋转角度,判断点是否在多边形内部即可. 如果该点在多边形边上,返回-1,重新旋转. 由于double,所以不会出现射线在多边形边上情况. 注意: (0,0)要特判是否在多边形内部.+eps判断 #include<bits/stdc++.h> #define r…
[LOJ#6437][BZOJ5373]「PKUSC2018」PKUSC 试题描述 九条可怜是一个爱玩游戏的女孩子. 最近她在玩一个无双割草类的游戏,平面上有 \(n\) 个敌人,每一个敌人的坐标为 \(x_i,y_i\).可怜有一个技能是在平面上画一个 \(m\) 个点的简单多边形,并消灭所有严格在多边形内部的敌人. 不难发现如果想要快速的消灭敌人的话,只要画一个足够大的简单多边形就行了.但是这样的游戏性就太差了.于是可怜打算为游戏增加一定的随机性. 可怜在平面上随便画了一个 \(m\) 个点…
Loj #2192. 「SHOI2014」概率充电器 题目描述 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品--概率充电器: 「采用全新纳米级加工技术,实现元件与导线能否通电完全由真随机数决定!SHOI 概率充电器,您生 活不可或缺的必需品!能充上电吗?现在就试试看吧!」 SHOI 概率充电器由 \(n-1\) 条导线连通了 \(n\) 个充电元件.进行充电时,每条导线是否可以导电以 概率决定,每一个充电元件自身是否直接进行充电也由概率决定.随后电能可以从直接充电的元件经…
Loj #3096. 「SNOI2019」数论 题目描述 给出正整数 \(P, Q, T\),大小为 \(n\) 的整数集 \(A\) 和大小为 \(m\) 的整数集 \(B\),请你求出: \[ \sum_{i=0}^{T-1} [(i\in A\pmod P)\land(i\in B\pmod Q)] \] 换言之,就是问有多少个小于 \(T\) 的非负整数 \(x\) 满足:\(x\) 除以 \(P\) 的余数属于 \(A\) 且 \(x\) 除以 \(Q\) 的余数属于 \(B\). 输…
Loj #3093. 「BJOI2019」光线 题目描述 当一束光打到一层玻璃上时,有一定比例的光会穿过这层玻璃,一定比例的光会被反射回去,剩下的光被玻璃吸收. 设对于任意 \(x\),有 \(x\times a_i\%\) 单位的光会穿过它,有 \(x\times b_i\%\) 的会被反射回去. 现在 \(n\) 层玻璃叠在一起,有 \(1\) 单位的光打到第 \(1\) 层玻璃上,那么有多少单位的光能穿过所有 \(n\) 层玻璃呢? 输入格式 第一行一个正整数 \(n\),表示玻璃层数.…
Loj #3089. 「BJOI2019」奥术神杖 题目描述 Bezorath 大陆抵抗地灾军团入侵的战争进入了僵持的阶段,世世代代生活在 Bezorath 这片大陆的精灵们开始寻找远古时代诸神遗留的神器,试图借助神器的神秘 力量帮助她们战胜地灾军团. 在付出了惨痛的代价后,精灵们从步步凶险的远古战场取回了一件保存尚完好的神杖.但在经历过那场所有史书都视为禁忌的"诸神黄昏之战"后,神杖上镶嵌的奥术宝石 已经残缺,神力也几乎消耗殆尽.精灵高层在至高会议中决定以举国之力收集残存至今的奥术宝…