思维
Self-Discipline
在校大学生
展开
-
HDU 6415 Rikka with Nash Equilibrium
题目:点击打开链接题意:给个n*m矩阵,用1~n*m填进去,使得Nash equilibriums至多一个,Nash equilibriums值某个数在所在行和列是最大的。分析:从大到小填进去,dp[i][j][k]表示填了i个数占了j行k列的方案数,显然新填一个数要么j+1要么k+1要么都不加,不可能j和k都加,然后递推下去,加一些判断优化更快。用记忆化搜索或者直接推出公式n!∗m!∗(...原创 2018-08-21 23:34:34 · 218 阅读 · 0 评论 -
2019百度之星初赛第二场 度度熊与运算式1
题意:分析:异或把式子分成了很多块,我们把每一块先贪心相加,如果每一块多一个异或运算,总和-2,也就是说多任意个异或,减少的值都是2的倍数。我们可以从高到低贪心确认每一位能不能为1,能放就打标记,下次就不放了,最后考虑相异或的1的个数的奇偶情况。代码:#include<bits/stdc++.h>using namespace std;#define ll lon...原创 2019-08-19 10:02:04 · 400 阅读 · 0 评论 -
Codeforces 849 B Tell Your World
题意:告诉你一个长度为n的序列,每位的值代表的就是(i,num[i])这个点,问这些点能不能连成两条平行的直线。分析:通过暴力枚举num[1]-num[0], num[2] - num[1],num[2] - num[0])/2这3种情况,如果能有两个平行的直线那这里面一定是至少有一个是斜率的,然后通过得的斜率求枚举每一个值,看是不是有两个起点。或者考虑每个点和第1个点的斜率,相同的用并查集弄...原创 2019-08-07 08:17:08 · 139 阅读 · 0 评论 -
HDU - 6623 Minimal Power of Prime 因子幂最小(暴力+思维)
题意:输出n所有质因子幂的最小值。分析:打出10000以内的素数,把 n 分解质因数,如果 n 分解完不为1或者最小幂已经为1,可以直接输出结果,否则分4种情况,n是一个质数的4次方,n是一个质数的3次方,n是一个质数的2次方,n是一个或多个不同质数相乘得到,讨论出前三种情况即可。注意精度问题。代码:#include<bits/stdc++.h>#define ll l...原创 2019-07-31 23:00:44 · 260 阅读 · 0 评论 -
HDU6602 Longest Subarray(线段树+思维)
题意:长度为n的序列,求最大的子序列长度,要求子序列中所出现的数字个数>=k。思路:线段树维护覆盖的区间,参考https://blog.csdn.net/Ratina/article/details/97503663。代码:#include<bits/stdc++.h>using namespace std;#define ll long longconst ...原创 2019-08-04 13:04:58 · 234 阅读 · 0 评论 -
Rectangle-小米 Online Judge TCO 预选赛
题意:平面上有n个点,每两个可以构成一个矩形。点 (x1,y1),(x2,y2)构成的矩形的左上角为(min(x1,x2),min(y1,y2)),右下角为 (max(x1,x2),max(y1,y2))。于是我们有了 n⋅(n−1) /2个矩阵,并把它们从 1 到n⋅(n−1) /2依次标号。现在我们随机从这些矩阵中选出标号不同的两个,请问他们的面积交的期望是多...原创 2019-06-07 08:18:09 · 246 阅读 · 0 评论 -
HDU 6315 Naive Operations
题意:给出一个长度为n初值为0的数组,以及长度为n的b数组,然后q次操作,add(l,r) 使得区间l~r所有元素+1,或者查询l~r区间a[i]/b[i]的和。题解:线段树+思维好题,这题构造线段树的方法很巧妙,竟然是以b数组构造,线段树维护的是区间最小值,每次区间加 1变成区间减1,每次更新时,直接将 b 数组的对应区间都减一,如果发现有零,就将对应位置的答案加一并重置回原b数组对应的数,...原创 2019-06-06 15:55:28 · 148 阅读 · 0 评论 -
Educational Codeforces Round 66 (Rated for Div. 2) Minimal Segment Cover
题意:给你n个区间,m个询问,对于每个询问求最少可以用多少个区间完成覆盖,区间可以重叠。思路:倍增法,f[i][j]表示i点连续向后扩展2^j个区间后可以达到的最后位置,预处理O(nlogn),注意一下细节。代码:#include<bits/stdc++.h>#define ll long longusing namespace std;const int N = 1e...原创 2019-06-06 10:38:39 · 167 阅读 · 1 评论 -
HDU - 5573 Binary Tree
题目:点击打开链接题意:给你一个n和k和一颗完全二叉树(权值1 2 3 4 5 6 ...),让你从1开始一直到第k层选择一条路径,路径上的每个点可以选择*1或*(-1),让你输出一种构造方案恰好到第n层能得到n。分析:很有意思的一道题,记录一下,首先明确由1.2.4...2k1.2.4...2k可以构造出所有小于2k+12k+1的数,那么实际上只要走2的幂次即最左边的结点即可。 那么实际上...原创 2018-11-22 18:31:15 · 160 阅读 · 0 评论 -
CodeForces - 960D Full Binary Tree Queries
题目:点击打开链接题意:无限长度的二叉树,每次操作1把包含数x的那一层整体移动k个位置,正往右,负往左,操作2把包含数x的那一层带着子树移动k个位置.操作3打印从x到根沿线的所有数。分析:对于每一层我们可以记录旋转了多少次,因为最多有60+层.对于操作2它的子树就分别移动2*k次,4*k次,8*k...,对于查询操作,我们可以先找到x的位置,然后依次除以2就是上层的对应位置,根据旋转次数打...原创 2018-10-08 11:07:38 · 186 阅读 · 0 评论 -
牛客国庆集训派对Day4H 树链博弈
题目:点击打开链接题意:开始题意没弄明白,必须选一个节点变白,然后再选择祖先或者重新选择其他一个节点变白。分析:结论是如果树的所有层的黑点的个数是偶数,则先手必败。因为全是偶数,先手造作第k层的点后,那么k层的点就变为奇数了(留给后手一个必胜的状态),这时后手也操作k层的一个点,然后复制先手的操作,一定可以留给先手一个全是偶数的状态。这样,一定是后手走完最后一步,先手必败。代码:...原创 2018-10-06 12:09:17 · 251 阅读 · 0 评论 -
牛客国庆集训派对Day3 A Knight
题目:点击打开链接题意:略。分析:规律题,打了表半天没找出规律。。。网友思路:如果目的点不在第一象限,将其转化到第一象限,且另m>n若2*n>m>n 若(n+m)是三的倍数,我可以通过走x个(1,2)和y个(2,1)到达,那么x+2x+2y+y=n+m,得x+y=(n+m)/3; 若(n+m)%3==1,我可以走这样一步使得(-2,1),使得目的...原创 2018-10-04 21:55:45 · 240 阅读 · 0 评论 -
2018 北京赛区网络预选赛 A. Saving Tang Monk II
题目:点击打开链接题意:S为起点,T为终点,.为空地,#为毒气,B为氧气室,P为加速。每走一格时间花费1,入一个#花费一个氧气瓶,无氧气不能入,入B能获得一个氧气,身上最多能携带5个氧气,入P不花费时间,求起点到终点的最小花费时间。分析:因为最多能带5个氧气,所以每次入毒都只有那几种可能,所以可将二维图扩展为三维的状态。每个地方相同的状态进入结果是相同的,所以标记的vis数组扩展为3维即可...原创 2018-09-25 21:21:03 · 208 阅读 · 0 评论 -
ACM-ICPC 2018 焦作赛区网络预赛 B. Mathematical Curse
题目:点击打开链接题意:有n个数和m个运算符,按顺序选m个数进行运算,初值为k,问最后能得到的最大值是多少。分析:dp[i][j]表示选到了第i个数时用了j个运算符,观察发现,一个数只能由它前一个状态的最大值或最小值转移过来(因为乘上一个负数会使最小的数变最大),所以我们同时维护最大最小。代码:#pragma GCC optimize(2)#pragma GCC optimiz...原创 2018-09-16 11:37:11 · 219 阅读 · 0 评论 -
CSU 2172 买一送一
题目:点击打开链接题意:略。题解:首先要看出来这是一棵树,然后就想怎么去重设当前节点为u,商品类型为a[u],父节点为fa在dfs的过程中维护这几个信息:1、 上一个以a[u]为第二分量的二元对的数目pre[a[u]]2、 从根到fa的不同商品类型的数目num,即以当前a[u]为第二分量的二元对的数目3、 从根到fa的答案ans[fa]那么当前的答案就是ans[u]...原创 2018-09-16 07:37:28 · 622 阅读 · 0 评论 -
杂好题汇总
1、hdu 6705 path题意:有向图求第k大路径(权值和),每条边可以走无数次。分析:因为k很小,所以应该是预处理出前k大路径,首先想到的是贪心,大致想法是用一个优先队列弹出前k个,无奈后面没想明白,看了题解才恍然大悟。首先把每个点出边按权值排序,每个点权值最小的出边最有可能是前k大,n个点中出边最小的一定是最小的,确定完之后还要考虑这个点和其他点组成路径,要保证最小,只能和这条边的...原创 2019-08-25 13:48:21 · 323 阅读 · 0 评论