HDU6655 Just Repeat(2019杭电多校J题)】的更多相关文章

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=6655 简单博弈问题,A,B手里各有n,m张牌,牌有颜色,两人轮流出牌(A先出),一个人只能打出对放未打出过的颜色的牌(可以打出自己打出过的颜色的牌),当一方不能再打出牌时,对方获胜. 博弈策略:优先选择双方都有该颜色的牌(对方没有的颜色和自己没有的颜色放在最后,不影响),再优先选择双方牌数相加最大的颜色的牌. 存储方法:读入之后离散化,统计数量,放入结构体数组,最后排序 #include <iost…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6655 题意是说两个人都有一些带有颜色的牌,两人轮流出牌,但是不能出对面出过的颜色的牌,最后谁不能出牌谁输. 贪心的想,如果这种牌我有对方也有,那我肯定先出以此来减少对方可出的牌,如果有几种这样的牌,那肯定是先出两方手牌总和最多的那种颜色. #include<iostream> #include<cstdio> #include<cstring> #include<st…
多校结束了, 网络赛结束了.发现自己还是太菜了,多校基本就是爆零和签到徘徊,第一次打这种高强度的比赛, 全英文,知识点又很广,充分暴露了自己菜的事实,发现数学还是很重要的.还是要多刷题,少玩游戏. 网络赛也打的不好, 开场写01,先是思路错,再是没考虑特判,直接罚时爆炸,再是写06,题意又看错,看了很久.其中队友过07, 我看08,队友03,08先乱写了个优先队列直接t,然后边吃边想,想到正解,忘记加换行... 最后看02, 也没写出来,队友03也是没调出来, 口上说着主攻数据结构,连想的算法都…
Vacation 题目传送门 update(O(n)) 看了那个O(n)的方法,感觉自己想的那个O(nlogn)的好傻,awsl. 0车最终通过停车线的时候,状态一定是某个车堵住后面的所有车(这个车也可以是0车).所以我们要找的就是那个把后面所有都堵住的最前面的车x,x车没有被别的车堵住,从头到尾都按照初始速度行驶,当0车到停车线时,这x车走过的距离d = s_x + 0到x车的车身长度和,时间为d/v_x. 我们假设所有的车都是车x,求出时间,其中最大时间即为答案.因为如正确的时间t = (车…
Keen On Everything But Triangle 题目传送门 解题思路 利用主席树求区间第k小,先求区间内最大的值,再求第二大,第三大--直到找到连续的三个数可以构成一个三角形.因为对于一组数,如果不能构成三角形,就小的就是斐波那契数列,因为数的范围在10^9内,所以不会超过50个数,也就是说,我们之间这样暴力地查询,查询次数不会超过50,肯定能找到结果. 代码如下 #include <bits/stdc++.h> #define INF 0x3f3f3f3f using nam…
Longest Subarray 题目传送门 解题思路 本题求一个最大的子区间,满足区间内的数字要么出现次数大于等于k次,要么没出现过.给定区间内的数字范围是1~c. 如果r为右边界,对于一种数字x,满足条件的左边界l的范围是r左边第一个x出现的位置+1(即这段区间内没有出现过x,如果x在1~r内都没有出现过,那么1~r自然都是l的合法范围),以及1到从右往左数数第k个x出现的位置(即这段区间内的x出现次数大于等于k).所以我们只要找到同时是c种数字的合法左边界的位置中最小的,然后枚举所有的i作…
  Rikka with Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 0    Accepted Submission(s): 0 Problem Description Though both Rikka and Yuta are busy with study, on their common leisure, th…
http://acm.hdu.edu.cn/showproblem.php?pid=6662 题意:有两个人在树上博弈,每个点节点有两个分数a[i]和b[i],先手先选择一个点,后手在先手选的点的相邻点中选择一个点,然后先手在后手选的点的相邻点中选择一个两个人都没有走过的点,直到不能走,游戏就结束.一个人走到节点x,那么先手会获得分数a[x],后手就会会获得分数b[x].最后询问先手能获得与后手的差值最大值. 思路:先手固定好位置后,后手走.有两种走法,向下和向上. 向下好办,用down[i][…
http://acm.hdu.edu.cn/showproblem.php?pid=6659 题意:给你d,x,让求满足f(d,n)=n的最大n(n<=x),其中f(d,n)表示数字d在从1到n的数中出现的总次数. 思路:网上真的是有一种神仙思路(找规律,推公式),显然如果f(d,x)=x那么答案就是x,否则让x -= max( 1 , abs(f(d,x)-x)/18 )然后再验,猛地一看感觉很不靠谱,x是1e18岂不是要爆掉?仔细一看abs(f(d,x)-x)和x的数量级是一样的..(例如让…
http://acm.hdu.edu.cn/showproblem.php?pid=6638 题意:给你一些点的权值,让找一个矩形圈住一部分点,问圈住点的最大权值和 分析:由于是稀疏图,明显要先把x,y坐标离散化,暴力是n^3?(枚举边界n^2,求和是n)显然过不了,那可以枚举y的边界,然后对于x就是最大子段和的问题了,用线段树维护,n^2logn可以过. #include<bits/stdc++.h> using namespace std; ; const int inf = 0x3f3f…
大意: 给定树, 每个点有一个十进制数位, 求有多少条路径组成的十进制数被$k$整除. 点分治, 可以参考CF715C, 转化为求$10^a x+b\equiv 0(mod\space k)$的$x$的个数. 要注意 $tmp$不要设成全局!! 如果$\text{y%z==0}$的话, 那么$\text{x%y%z==x%z}$ #include <iostream> #include <algorithm> #include <cstdio> #include <…
题意 总共有 $n$ 层楼,在第 $i$ 层花费 $a_i$ 的代价,有 $pi$ 的概率到 $i+1$ 层,否则到 $x_i$($x_i \leq 1$) 层.接下来有 $q$ 次询问,每次询问 $l$ 层到 $j$ 层的期望代价. 分析 这种期望具有可加性,因此,维护一个前缀和 $sum[i]$:从 $1$ 到 $i$ 的期望. 设从 $i$ 到 $i+1$ 的期望代价为 $E$,则有 $E = a_i + (1-\frac{r_i}{s_i})(sum[i]-sum[x_i]+E)$ 解得…
题意 给出两个矩形,问这两个矩形把平面分成了几部分. 分析 不需要什么高级技能,只需 “简单” 的分类讨论. (实在太难写了,对拍找出错误都不想改 推荐博客,其中有个很好的思路,即只讨论答案为2,3,5,6的情况,其余都为4,这样可以省掉一些麻烦. #include <bits/stdc++.h> using namespace std; int main() { int x11, x12, y11, y12; int x21, x22, y21, y22; int x1, y1, x2, y…
大意: $n*m$棋盘, 初始位置$(1,1)$, 横坐标为$\frac{m+1}{2}$时可以向下走, 否则只能左右走, 每走一步花费$1$秒. 有$k$管奶, 第$i$罐位置$(r_i,c_i)$, 要花费$t_i$的时间去喝. 对于所有的$1\le i\le k$, 求出喝完$i$管奶最短用时. 实现略复杂的$dp$题, 直接按照官方题解写了. 主要思路是对每一行求出向左/向右喝$x$罐奶的最少用时, 然后$dp$合并答案. #include <iostream> #include &l…
大意: 给定$n(n\le 10^{21})$, 求$\sum\limits_{i=1}^n gcd(\lfloor\sqrt[3]{i}\rfloor,i)\mod 998244353$ 首先立方根可以分块, 转化为 $\sum\limits_{i=1}^{\lfloor\sqrt[3]{n}\rfloor}\sum\limits_{j=i^3}^{min(n,(i+1)^3-1)}gcd(i,j)=\sum\limits_{i=\lfloor\sqrt[3]{n}\rfloor^3}^ngc…
大意: 给定$N^3$立方体, 每个单位立方体权值为三个坐标异或, 每次沿坐标轴切一刀, 得分为两半内权值和的乘积, 求切成$n^3$块的最大得分. 可以发现得分与切法无关, 假设每个点权值为$a_i$, 就有$ans=\frac{(\sum a_i)^2-\sum a_i^2}{2}$. 从而转化为求$f_x=\sum\limits_{i=0}^{N-1}\sum\limits_{j=0}^{N-1}\sum\limits_{k=0}^{N-1}[(i\oplus j\oplus k)=x]$…
大意: 给定序列$a$, 元素范围$[1,C]$, 求一个最长子序列, 满足每个元素要么不出现, 要么出现次数$\le K$. 枚举右端点, 考虑左端点合法的位置. 显然一定是$C$种颜色合法位置的交, 可以用线段树维护合法颜色的种类数, 每次二分出最小的满足合法个数为$C$的位置更新答案. 考虑右端点移动到$i$, 位置$i$的颜色为$x$, 存在一个位置$p_{x}$, 满足 对于颜色$x$的合法区间为$[1,p_{x}]$, 不合法区间为$[p_{x}+1,i]$. 在右端点的移动过程中,…
大意: 长为$n$的数组, 每个位置范围$[0,3]$, $m$个限制$(l,r,x)$表示$[l,r]$内有$x$种数, 求方案数. 维护每个数字最后一次出现位置, 暴力$DP$ 实现时有个技巧是把还没有选择的数位置设为$0$ #include <iostream> #include <cstdio> #include <queue> #define REP(i,a,n) for(int i=a;i<=n;++i) #define PER(i,a,n) for(…
大意: 给定序列$a$, 给定$m$个操作, 求最后序列每一项的值. 一共$3$种操作, 其中第$k$种操作将序列变为$b_i=\sum\limits_{j=i-kx}a_j$, $(0\le x,1\le j\le i\le n)$ 可以发现$\sum b_ix^i=(\sum a_i x^i)(\sum x^{ki})$, 转化为求$(\sum x^{ki})^{cnt}$ 直接快速幂会$T$, 注意到$(\sum x^{ki})^n=\sum\binom{n-1+i}{i}x^{ki}$,…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6582 题意:删掉边使得1到n的最短路改变,删掉边的代价为该边的边权.求最小代价. 比赛时一片浆糊,赛后听到dinic瞬间思维通透XD 大致做法就是先跑一遍最短路,然后再保留所有满足dis[i]+w==dis[j]的边,在这些边上跑最小割(dinic). 代码写的异常丑陋,见谅QAQ #include<iostream> #include<cstdio> #include<cstd…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6701 题目大意为求满足 $max(a_{l},a_{l+1}\cdot \cdot \cdot a_{r})-(r-l+1)<=k$的区间个数. 先预处理出前缀最大值和后缀最大值和ST表,然后分治. 每次可以得到这次分治区间的区间最大值,然后我们要求出以该最大值为区间最大值时的合法区间数目. 这里我们可以枚举合法区间的左端点(右端点),然后通过化简上式得到合法的右端点(左端点),选择枚举左还是右端点…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6667 题目大意是说n个班级,每个班级有ai人和bi杯茶,每个人只能喝其他班的茶并且只能喝一杯.问最多有多少人可以喝茶. 读完题就觉得是网络流or二分图,然后发现数据范围就萎了,开始想怎么转化模型,因为题目实际就是求每个人连其他班的茶之后跑二分图最大匹配. 然后想到了hall定理和推论,好像对于线性求解二分图蛮有帮助的,公式写出来大致就可以明白了. PS:|X|为点集X的点数 hall定理: 二分图G…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6656 题意为从i级花费a元有p的概率升到i+1级,有1-p的概率降到x级(x<i),查询从L级升到R级的花费期望. 菜鸡才知道期望是有可加性的QAQ,即1-5的期望==1-2的期望+2-5的期望. 如果明确这一点就可以比较轻松的推出转移方程.....阿勒? 感觉和我往常见得有点不一样啊QAQ. 按照以往的思路,我会设dp[i]为i到n的期望,则转移方程为$dp[i]=p*dp[i+1]+(1-p)*…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6651 题意:n个科目,总共m分,通过一科需要复习花费科目分数+1分钟,在不知道科目分数的情况下,问最少需要复习多少分钟使得一定可以通过至少k科. 因为需要通过k科,所以最坏的情况是n-k+1科复习时间不够(即只通过k-1科),所以我们要让复习时间最少的n-k+1科其中任选一科都不拖后腿.我们将m分 平均分配到n-k+1科中,如果分配不均则让一些科多复习一分钟,同时在其余k-1科都要复习比n-k+1科…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6646 题意为求a*10x+b*10y=c*10z满足公式的任意一组解x,y,z. 因为c有可能会由a+b进位得到,所以先在c后添加0使得c长度最长,然后先固定a的长度为c-1或c,遍历b的长度为b到c. 用hash判断是否相等.再交换b和a的顺序再判断一次. #include<iostream> #include<cstdio> #include<cstring> #inc…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6641 题意为求出最小的n,满足(f(n,m)-n)^n=k,其中f(n,m)为第m大的x,其中x满足gcd(x,n)==1且x>n. 可以将式子化成f(n,m)=k^n+n,然后我们会发现f(n,m)的范围大致会在(n+1,n+loglogn)之间,因为f(n,m)内最多会有m个质数,质数的密度. 所以可以枚举k^n,k^n^k=n. #include<iostream> #include&…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6638 题意为在一个平面上任意选择一个长方形,使得长方形内点权和最大. 因为长方形可以任意选择,所以上下边一定在某些点上.所以可以枚举上下边. 将上下边看成一条直线y,上下边之间的点看成直线y上的点,则题意就转化成求直线y上最大子段和(子段和的左右边界即是长方形的左右边). 用线段树维护(区间和&最大前缀和&最大后缀和)就可以维护得到区间最大子段和. 显然需要离散化(雾 #include<…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6635 题意是说一开始所有数都冻结,第i秒会解冻第ki个数,求每秒状态下的最长上上升子序列长度. 这种题一想添加操作就不好实现,所以干脆反着来,想删除操作. 从第n秒开始往前遍历,每次都会冻结一个数,这时判断一下这个数是否一定要在最长上升子序列里. 使用二分的方法求最长上升子序列,并且每次求完子序列后可以处理出那些位置是必须在最长上升子序列里的. #include<iostream> #includ…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6630 题意为求出1-n,n个数的全排列中有多少种方案满足第一位为x,第n位为y,且相邻数字绝对值之差不超过2. 我们可以预处理d数组,定义d[i]表示1-i个数的全排列中以1为第一位,i为第i位且相邻数字绝对值之差不超过2的方案数. 则第i位为i,可以由第i-1位转移,表示i位与i-1位数字绝对值之差为1,则$d[i]+=d[i-1]$,也可以由第i-3位转移,表示第i-1位为i-2,第i-2位为i…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6624 题意为求最小的b满足$a*b^{-1}\equiv x(modp)$. 把式子化简一下: $a\equiv b*x(modp)$ $a=b*x-p*y$ $\because 0<a<b$ $\therefore 0<b*x-p*y<b$ $0<b*x-p*y\Rightarrow \frac{p}{x}<\frac{b}{y}$ $b*x-p*y<b\Right…