想法思维题
Anxdada
多读书多看报, 少吃零食多睡觉
展开
-
LeetCode 810 Chalkboard XOR Game【思维】
传送门题意: 给定n个数, 两个人轮流上去删除一个数字, 如果在某个人删除后, 剩下的数字异或等于0,那么这个人就输了, Alice 先手, 如果它能赢return TRUE.思路: 考思维, 首先全部数字异或等于0需要二进制的每一位上1出现偶数次, 那么如果刚开始就异或等于0,Alice肯定就赢了嘛, 否则如果剩下的数字是偶数Alice也一定能赢, 因为每次删除一个数字后剩下的数量一定是奇数...原创 2019-03-19 14:45:03 · 256 阅读 · 0 评论 -
CodeChef - AMR16C Influence on Social media 【思维 + 巧妙求因子个数】
传送门 // 给定n个人发表的帖子数量, 如果一个发表的帖子数量的因子个数是奇素数, 那么他就是一个支持者, 问这n个人中的支持者的排名, 排名是根据在所有人中它发表的帖子数量的多少定的. 并且先输出发表的数量多的.思路: 我们肯定第一步就可以确定的是我们要的数一定是个平方数, 因为一个数的因子都是成对出现的, 其次是如何快速求一个平方数的因子个数了, 用到约数个数定理, 但是还是太慢了, 我们可原创 2018-02-24 13:21:00 · 392 阅读 · 0 评论 -
CodeChef - AMR16E Black Money Island 【并查集 + 思维】
传送门 // 题意: 给定一幅无向带权图(n, m), 给定一个确定权值x, 问在图中是否可以构造出一颗权值为x的生成树. 并且边权一定是A or A + 1.思路: 我们首先每条边先减去A, 那么就变成了一幅01图, 然后预处理做一次生成树算出至少需要1的数量, 所以我们用并查集维护这颗树, 并且要先连接权值为0的边, 再连接权值为1的边并保存下来, 预处理完后, 每一次询问我们先初理出x, 此原创 2018-02-24 13:13:39 · 425 阅读 · 0 评论 -
牛客练习赛6 B,D 题解
比赛传送门 B: 首先不要把题想太复杂了, 只需要维护好几个值就OK了, 首先是5个数组 fa[x] 表示 x 的父亲是谁 son[x] 表示x有说多少个儿子 op[x] 表示x被操作的次数 a[x] 表示x的儿子对x的影响数 b[x] 表示x的孙子对x的影响数有了这些的基础, 那么对于每次我们操作的点u的点权和res, 首先是他父亲对他的影响 res += a[fa[u...原创 2017-11-21 00:15:21 · 504 阅读 · 0 评论 -
atcoder ARC 084 CD题解
传送门 C: 给定三组数, 问从每一组中选择一个数使得满足a < b < c 的选法有多少种.首先我们要知道对于第二个数组中的每一个数, 第三个数组中有多少个大于它的记成cb[i], 并做前缀. 然后以第一个数组中的数作为基准, 从第二个数组找大于它的分界线, 那么处于这个区间中的数 cb[n] - cb[pos-1]就是答案, 然后累计即可.AC Codeconst int maxn = 1原创 2018-02-07 17:14:29 · 455 阅读 · 0 评论 -
atcoder ARC 086 CD题解
传送门 C: 问最少要给多少个元素重新赋值, 使得这个数组中最多只有k种数字.直接记录每个数字出现的次数, 然后从大到小排个序, 从第k+1种那开始选去后面的元素即可.AC Codeint a[maxn];bool cmp(int a, int b) { return a > b;}void solve(){ int n, k; cin >> n >> k;原创 2018-02-07 17:01:07 · 537 阅读 · 0 评论 -
玲珑杯 Round 24 C 题 【思维好题!!! + bitset标记状态】
传送门 // 题意: 给你一个无向图,每次查询的时候给一堆二元组(xi,yi) 求图中有多少个点u与至少一个这次询问给出的二元组(xi,yi)满足dist(u,xi)<=yi,dist表示这两个点在图中的距离 如果不连通dist = inf// 思路: 我们考虑用压位进行优化, f[i][j] 表示的是这幅图中到达i点的距离 <= j 的所有点构成的bitset集合, 然后查询的时候就是把一堆原创 2018-01-23 19:53:12 · 365 阅读 · 0 评论 -
CF contest 892 D题 Gluttony
传送门 //题意:对于给定的一个长度为n的a序列, 重排a序列构造一个b序列, 使得b序列中任意一个连续区间中的和 (sum) 和 原先a序列对应的区间的和(sum) 不相等(除去全体的前缀和). //思路:因为题目中给的是n个不同的数, 所以首先一定有解, 那么如何构造了, 我么可以假设一个序列 1 2 3 4 5 那么如何重构b序列了, 我们可以发现每一个数我们可以选择一个比它小的数相原创 2017-11-19 20:57:19 · 454 阅读 · 1 评论 -
UVALive - 6434 Number Assignment 【思维!】
传送门 // 题意: 给定n个数, 任意分成m份, 定义一份的cost为该份中的max - min , 如果一份只有一个元素, 那么其cost为0, 求min(sigma(cost));// 思路: 我们排个序, 直接求每两个数之间的间隔, 实际上就是要将这些间隔中最大的m-1个删去, 剩下的每一份算算cost就行啦. 但是每一分的cost怎么算了, 我们想想着实际上不好算. 但是我们可以发现一份原创 2018-01-13 19:51:24 · 413 阅读 · 0 评论 -
UVALive 6440 Emergency Handling 【思维好题啊!!! + 优先队列处理】
传送门 // 题意: 给定n个操作, 如果是f表示有一个病人来就诊, a代表医院可以接受一个病人, 选择的规则为首先选严重程度最严重的, 如果相同就想等级高的, 在相同就可以随意选了. 病人的严重程度定义为 s = s0 + r(t - t0); s0为基础严重度 , t0为送到医院来的时间, r 为改为病人的等级. A t. 表示医院在t时间要接受一位病人.// 思路: 如果我们每次都是要把每原创 2018-01-13 19:43:43 · 322 阅读 · 0 评论 -
UVALive 6439 Pasti Pas! 【思维】
传送门 // 题意: 因为不是回文串不是很常见, 我们可以通过以下方法使得任意字符串都可以变成回文串, 那就是想一部分子串用其他字符代替, 比如: PAITIPAI , 他不是一个回文串, 我们以 A = PAI , B = TI代替原串, 那么原串就变成了 ABA 它是一个回文串, 并且长度为3, 所以问给定一个字符串问用以上方法所能构成最长的回文串长度是多少. // 思路: 我们直接从后往前扫原创 2018-01-13 19:33:03 · 327 阅读 · 0 评论 -
UVALive 6436 The Busiest City 【思维 + 树形dp想法】
传送门 // 题意: 给定一颗树, 定义一个点的繁荣度为经过这个点的路径的条数, 求这棵树的最大繁荣度为多少. 注意叶子结点路径数为0.// 思路: 我们首先要知到一个节点的繁荣度怎么算, 它 = 该节点的所有子树之间(size大小)两两相乘再相加的答案, 不要因为一次dfs而算不出其他子树的大小而困扰, 那是因为你没想到这是一棵树, 所以我们直接用总节点数减去该子树的大小就是剩余没算的节点个数原创 2018-01-13 19:19:29 · 362 阅读 · 0 评论 -
BZOJ 2456 mode 【思维 + 卡内存】
传送门 // 题意: 就是找出n个数中出现了超过ceil(n/2)的那个数. // 思维: 其实一看是一个很简单的题目, 但是我们可以注意到它的内存只有1M, 变量定义多了都会MLE, 更不要说开数组之类的, 所以我们必须在O(n)的时复, 和O(1)的空复之内解决这个问题. 所以就有一个想法就是碰碰法, 因为最后我们求的那个数一定出现了n/2以上的次数, 所以我们每次累加一个数的时候如果和前面原创 2018-01-11 21:28:25 · 297 阅读 · 0 评论 -
CodeChef - AMR16I Mancunian Hoards Black Money 【前缀 + 思维】
传送门 // 给定一个s, n, x. 下一行n个数, 然后先第一堆的数是s, 然后每次新创建一堆, 它的数量是前面所有的堆数相加在加a[i], 然后我们就得到了n+1个数字, 问能否从这n+1个数字中恰好选择一些数使得他们加起来 = x.我们可以注意到这是一个很经典的问题, 从给定一些数中恰好选择一些数使得他们恰好等于某个数, 但是这个数据量非常的大, 有63项, 那么二进制就不行了, 像这种经原创 2018-02-24 13:30:08 · 366 阅读 · 0 评论 -
CF 355 div2 C, D 题解 【很好的两道脑洞题】
传送门 C: 给定一个n的n个数的一个排列, 每次操作可以将一个数放在序列的最前面或者最后面, 问把这个序列变成1 2 3….n 的这样一个排列.思路: 我们首先必须要看出一个事实, 那就是我们每次选择一些不在对应位置上的的这些数按顺序的放前面或者放后面使得最后这个序列都是我们要的这个序列,那么要最少, 我们就要找一个最长上升加一子序列, 那么我们要这些不动, 剩下全部按照顺序的放一定可以得到,原创 2018-03-11 17:16:25 · 423 阅读 · 0 评论 -
CF 470 div2 B - D 题解.
传送门 B: 题意: 两个人轮流玩游戏, 首先有一个x0 >= 3, 然后A先手,第 i 轮每个人选择一个小于X(i-1)的素数然后算出这个素数的倍数并且离x(i-1)最近的那个数作为xi, 现在给定x2,问最小的x0是多少.思路: 首先我们可以通过算出x2的素因子得出x1的范围, 因为要范围尽量的大, 也就是包含的情况尽量的多, 那么肯定选择最大素因子, 对于一个数N, 最大素因子为P(N原创 2018-03-12 19:09:51 · 298 阅读 · 0 评论 -
第十四届华中科技大学程序设计竞赛 部分有趣题的题解(A, C, I, L)
传送门A: 题意: 就是定义树上的一个三元组(a, b, c) 成立的条件是|dis(a, c) - dis(b, c)| % 2 == n % 2; 给定一棵树, 问树上这样的三元组有多少个.思路: 分析可知, 我们肯定是把枚举c, 然后判断每一个c有多少个a, b, 可以填, 然后我们发现填这个是和n的奇偶性有关, n为奇, 那么一定时奇-偶(或者相反), 那么我们要知道的就是对于树上每...原创 2018-09-25 13:48:49 · 509 阅读 · 0 评论 -
牛客挑战赛14 D题 codeJan和树 【思维】
传送门 题目大意: codeJan有一天脑洞大开,想到一个有趣的问题。给一个固定根为1号结点的树,定义一个子树的beauty是这个子树的根节点到所有这棵树上其他节点的距离和,叶子节点的beauty是0。定义一个子树的sub-beauty是这个子树的beauty值减去这个子树的某一个子树(不包括自身)的beauty值。显然一个子树的beauty值是唯一的,而sub-beauty值可以有很多...原创 2018-07-31 16:47:18 · 261 阅读 · 0 评论 -
HDU 6370 Werewolf 【推导 + 反向建图】 有趣的题
传送门题意: 背景狼人杀, 不过场上的人只有两种身份, 一种是狼人, 一种是村民, 每个人知道其他人的身份, 村民只说真话, 狼人可能说真话, 现在给定这些人说的话, 问一定能确定身份为狼人和村民的各有多少个人,证明: 证明的话我就用bestcoder的吧, 写的很好, 我就不详细说了. 首先,“所有人都是狼人”是合法的,所以第一个答案一定是0。 那么我们的任务就是确认有多...原创 2018-08-09 10:36:35 · 405 阅读 · 0 评论 -
HDU 6301 Distinct Values 【set 维护mex + 思维】 多校第一场D题
传送门 题目大意:有一个长度为n的数组, 下面给出m个区间信息, l,r表示a[l] - a[r] 中的数字要不一样, 并且要让整个数组字典序尽量的小. 问最后的数组样式.思路: 其实仔细分析可知道, 对于一个新的区间, 假设左面一部分和前面的一个区间重叠了, 那么这个区间剩下要开始的位置实际上就是这个区间中已经填了的数字mex(未出现的最小非负整数, 当然这里就是从1开始就行乐), 怎么做...原创 2018-07-29 18:42:14 · 175 阅读 · 0 评论 -
新疆大学五月月赛 H 题 XOR 好题 【思维】
传送门 题意: 给定n 个城市, 编号从0 - n-1, 连接任意两个城市的代价是这两个城市的编号异或和,问连接这n个城市的最小代价是多少. 思路:这道题的推导还是挺有意思, 我们可以一步一步看, n = 2 时 答案肯定是1嘛. n = 3 时 那么编号2和之前那个点连最优了? 肯定是0, 所以答案是3 n = 4 时 3 又和那个点连最优了, 那就是 2 吧, 因为最高位相同, ...原创 2018-05-04 17:24:30 · 226 阅读 · 0 评论 -
SCU - 4574 人面不知何处去, 桃花依旧笑春风 【思维 + 树状数组】
传送门题意: 给你一个正整数序列,问其中有多少个严格上升子序列?答案模上1e9+7思路: 这样的题一般算贡献. 所以我们考虑一个序列, 那么假设当前这个数字作为严格上升子序列的末尾元素, 那么此时他能造成的贡献是多少了, 实际上就是它前面比它小的每一个数造成的贡献之和. 所以我们需要求前缀和, 这里就用到了树状数组, 那么此时每一个节点更新时就不再是累加1了, 而是累加它所能构成的贡献了… 这样原创 2018-04-20 18:08:10 · 210 阅读 · 0 评论 -
SCU - 4572 醉后不知天在水,满船清梦压星河【思维】
传送门 题意: 在自然数序列中 (0,1,2,3,4,5….),求去掉所有含2,3,5,7的数字后 (0,1,4,6,8,9…)的第k个数.思路: 这道题就很有意思啦.. 去掉后我们可以发现从小到大变成了(0, 1, 4, 6, 8, 9)即1-> 0, 2->1 ….. 序号减去一有0 -> 0, 1 -> 1, 2-> 4….. 一直到5->9,即我们可以求出n用0-5的表示方法来算出每一个对原创 2018-04-20 17:49:37 · 382 阅读 · 0 评论 -
SCU - 4571 逆序对【思维 + 推公式】
传送门 题意: 求所有由1-9组成的长度为n的序列逆序对总数(不懂的可以看看样例)思路: 这道题最开始做的时候打了个表, 那么求出前几项, 硬是没有找到规律, 后面想了想, 可以直接算贡献, 也就是我们直接从9个里任选2人, 那么这两个就可以造成一个1的贡献, 那么其他地方了? 就可以随便填, 然后算出送的填的方式即可. 所以公式就是: C(n, 2) * C(9, 2) * 9^(n-2).原创 2018-04-20 17:40:23 · 277 阅读 · 0 评论 -
CF EDU 41 E 题 Tufurama 【思维 + 树状数组】
传送门 题意: 给定n个数, 你需要找到有多少个下标二元组(x, y), 满足x < y, a[x] >= y, a[y] >= x.思路: 这道题挺有意思的, 首先我们要维护好a[y] >= x, 这个值, 即我们对x这个下标存储最大的id(id < y), 使得a[id] >= x, 这个我们就预处理好了第二个条件, 那么我们如何计数第二个条件了, 那就要用到树状数组了, 我们还要确定的一个事原创 2018-04-08 20:17:45 · 296 阅读 · 0 评论 -
VK Cup 2018 Round 2 div2 C, D 题解 【思维题】
传送门 C: 给定n个严格递增的数, 要从中选择三个数, 再满足下标i< j < k, 且a[k] - a[i] <= U, 的两个限制下,问可以使这个a[k]-a[j]/a[k]-a[i]最大是多少.思路:就是一道很简单的水题,只不过要进行一定的小推导, 首先我们要知道的是如果确定了i, k, 那么很明显j = i + 1; 因为这样才能使a[j] 最小, 即分子a[k]-a[j]越大, 所以我原创 2018-03-26 11:51:17 · 545 阅读 · 1 评论 -
Wannafly 挑战赛13 E VVQ 与线段 【思维 + 线段树】
传送门 题意: 一维数轴上给定很多线段, 求任意两条相交线段的异或最小值, 定义线段的异或值为它们并的长度减他们交的长度.思路: 我们随便画出一个样例可得, 对于两条相交直线[l1, r1], [l2, r2], 他们的异或值为(r2+l2) - (r1+l1), 且l2 <= r1 <= r2, 所以很明显可以得出ans = max((r2+l2) - (r1+l1)), 且l2 <= r1原创 2018-04-08 16:44:43 · 286 阅读 · 0 评论 -
POJ 2785 4 Values whose Sum is 0 【折半二分处理的好题】
传送门 // 题意:给定四个数组, 每个数组中有n个数, 然后从每一个数组中恰好挑选出一个数字使得这四个数字加起来等于0的方案数是多少?思路: 最简单办理的方法就是n^3logn查找, 肯定是不行的… 那么我们可以想将这四个数组分成两个数组, 然后问题就等价于从这两个数组中任意选择一个数使得他们加起来等于0的方法数. 即折半. 所以我们先处理前两个数组的所有可能先存下来, 然后再次枚举剩下的两个数原创 2018-03-21 14:18:46 · 226 阅读 · 0 评论 -
CF contest 888 problem E 【思维 + 状压 + 中途相遇法(折半搜索)】
传送门 //这道题和LA 2965非常像,不过更简单一点, //题意就是从n个数中选取一些数使得他们加起来 % m 尽可能的大, 很容易有一种想法就是二进制枚举, 但是2^35次方非常大 , 所以我们需要用到中途相遇法, 即我们二进制枚举前一部分, 把所有可能的和存起来, 然后再二进制枚举后一部分, 对于后一部分每一个我们枚举出来的和, 在前面二分找出离和当前和相加最大并不超过m-1的数(原创 2017-11-26 00:16:24 · 407 阅读 · 0 评论 -
LA -- 3029 City Game 【思维 + dp】
传送门 //题意: 给出一个只有F,R组成的矩阵, 找出一个最大全由F组成的矩阵, 并将它的面积乘3输出. //思路: 还是类似于扫描法, 维护几个值, up[i][j]代表格子i,j 往上最大能走的空格数. left[i][j]代表格子i,j 往左最大能走的空格数. right[i][j]代表格子i,j 往右最大能走的空格数. 那么怎么计算了. 如果第i行第j列不是空格, 那么三个数组的值都原创 2017-08-23 19:05:14 · 304 阅读 · 0 评论 -
Wannafly 挑战赛5 A 题 珂朵莉与宇宙 【思维 + 前缀和】
传送门 //题意: 就是求给你的长度为n的序列的所有子区间中满足该区间的和是一个平方数. /思路: 开始没想明白, 可能往之前做的一道题上面想去了. 其实想想后觉得也很简单,因为任何一个区间和都可以利用前缀和表示出来, 所以我们只需要判断一下前缀和即可. 即对于每一个前缀和n, 我们都判断一下前面是否出现过的一个前缀和m使得n - m == 一个平方数. 平方数进行枚举就好了(1e3). 并且原创 2017-12-10 21:12:10 · 457 阅读 · 0 评论 -
HDU -- 5600 N bulbs 【思维 + 规律】
传送门 //题意: 给定n个灯的状态, 1表示开,0 表示关. 一个小孩从第一个灯走到最后一个灯, 走时和一选择相邻的任何一方走. 走过当前这个灯时, 这个灯的状态想相反状态变化. 问是否可以让小孩从最后一个灯离开时, 所有的灯都是关着的 //思路: 这道题也没什么好方法, 只有多写几个样例出来研究研究, 可以发现, 灯的奇偶和1(或0)的奇偶有关. 其实也好发现, 当有5个灯时, 2个灯开原创 2017-09-05 16:28:19 · 371 阅读 · 0 评论 -
UVa -- 10635 Prince and Princess 【想法】
传送门 //给出两个序列, 求这两个序列的LCS.每个单序列保证两两不同. 由于数据量比较小, 那么直接n^2是可以过的. 但是如果数据量变大, 如1e4, 则n^2是肯定过不了的. 所以我们需要找出更优的算法. //我们可以注意带每一个序列中的数是两两不同的, (以样例来说)我们对第一个序列重新编号(1,2,3,4,5,6,7), 那么对应第二个序列变成(1,4,6,3,0,0,5,7),原创 2017-08-23 16:35:15 · 292 阅读 · 0 评论 -
LA -- 3695 Distant Galaxy 【思维】
传送门 //题意: 给定一个平面的n个点坐标, 找出一个矩形使得它的边界包含尽可能多的点. //思路: 直接枚举矩形的四个边界肯定是不行的, 达到了On^4,加上累加的时间就是On^5. 对于n最大100的数据是不行的. 那么我们优化一下. 只进行部分枚举. 即枚举这个矩形的上下边界, 然后在这个上下边界中进行从左往右扫描算点. 那么我们肯定需要维护一些值. left(l)[i]维护的是竖线i的原创 2017-08-23 16:51:04 · 305 阅读 · 0 评论 -
LA -- 3708 Graveyard 【思维】
传送门 //题意:子一个周长为10000的圆上等距分布着n个雕塑, 现在有m个雕塑需要加入, 使得(n+m)个雕塑在圆上等距分布, 问最少让原先的n个雕塑移动多少距离. 前三个样例解释如图. //思路 : 重点我们观察那三幅图. 可以发现, 每次都有一个雕塑没动. 那么我们就大胆猜测就是每一次都有一个雕塑没动. 以它作为坐标0. 其他雕塑相对进行编号. 并且我们对原图进行等比例减小的10000原创 2017-08-23 10:52:42 · 534 阅读 · 0 评论 -
UVa -- 11300 Spreading the Wealth 思维好题啊!【思维】
传送门 //首先说好, 这道题的代数分析过程是最重要的, 以后也可能经常会用到. 所以务必重视 //题意: 每个人其实有一些硬币, 每个人可以给相邻人一些硬币, 问最少需要转手几枚硬币使得每个人的硬币数相等. //这道题的思路非常棒 ! 首先设定xi 表示第i个人给来上一个人多少枚硬币, 如x2表示第二个人给了第一个人多少枚. 因为是个环, 那么x1表示第一个人给了最后一个人多少枚硬币, 如原创 2017-08-23 10:41:05 · 389 阅读 · 0 评论 -
UVa --- 10881 Piotr's Ants 【思维】
传送门 //题意:给出一根长度为L的木棒上n只蚂蚁的初始坐标和运动方向, 速度是1cm/s,问T秒后每只蚂蚁的所在位置的情况和运动方向, 如果两只蚂蚁在运动中碰头了, 则这两只蚂蚁立刻掉头(不计时间), T秒后如果蚂蚁掉下木棒输出”Fell off”, 正在掉头输出”Turning”. //这道题就很考思维了, 其实我们可以发现对于有一只蚂蚁起始为(1,R), 那么两秒后一定在(3,R) 出有原创 2017-08-23 10:05:27 · 333 阅读 · 0 评论 -
LA --- 3905 Meter 流星【浮点数区间交集的处理】思维好题啊!!!
传送门 //题意: 在二维平面给定一个矩形区域, 同时给出许多流星的其实坐标和移动速度, 问在那个时刻矩形区域内包含最多的流星数量. //思路 : 这道题是真的好! 思路非常棒. 我们可以发现流星的轨迹是没有什么用的, 有用的是出现在矩形矩形区域内的时刻, 那么我们可以把每一个流星出现在矩形内的时刻求出来, 这样就是一个区间(L, R)(注意边界不能取), 那么我们就得到许多区间, 问题就转化为原创 2017-08-17 10:59:31 · 471 阅读 · 0 评论 -
HDU -- 6188 Duizi and Shunzi 【思维】
传送门 // 题意: 就是从给出的序列中选出一些数, 尽可能的组成对子, 三个的顺子. 问最多可以组成几个这样形式. // 思路: 其实我们可以发现, 当一个数作为一个顺子的最大值的时候, 那么取顺子是要更优的. 否则能取对子就取对子. 这样取下来一定是尽可能的取出了题目中要求的样子. 所以答案也是最优的.AC Code/** @Cain*/const int maxn = 1e6+5;in原创 2017-09-03 20:52:56 · 547 阅读 · 0 评论 -
CF822C Hacker, pack your bags! 【思维好题】
传送门 题意 :给你n段线, 每一段线有一个权值, 在这些线段中选取一些端点不重合的线, 他们的长度刚好是m, 这些线的对应权值要尽可能的小, 输出最小值. //思路:一看范围最大复杂度不超过nlogn, 就是一个排序的复杂度, 所以做法就是先将所给的区间复制一份, 一份以L排序, 一份以R排序, 一起遍历一遍, 遍历的是点, 维护一个区间最小值, 和答案最优值, 当遇到左区间时, 查看len值原创 2017-07-20 23:24:20 · 552 阅读 · 0 评论