摘要:
T1 读入一个n,对于一个三元组(i,j,k)满足要求当且仅当1≤i,j,k≤n且i×j≥k。求符合条件的三元组的数量。 对于30%的数据n≤100 对于60%的数据n≤5000 对于100%的数据n≤100000 暴力:O(n3)暴力枚举 60pts: $ \be 阅读全文
摘要:
传送 刚想提交评测姬就炸了所以我也不知道A没A 评测姬好了我也A了 暴力想法:对每个点bfs,算出以这个点为左上角的最大合法矩形。复杂度O(n3),但是因为数据过水可以A掉 单调栈法 考虑优化暴力:我们可以算出每个点在一行内最多向右扩展多长。这样计算点(i,j)为左上角的最大矩形时,从 阅读全文
摘要:
大概日后会更新(?) 零.HASH的用途 在数据范围不大的时候,你完全可以用一个map或者set来搞定 如果可以用c++ 11,你还可以用undered map来搞定 然鹅map也是hash实现的 所以当数据范围很大/你莫得c11/出题人毒瘤的时候,就需要哈希 为了愉快的进行HASH,下面煮的栗子默 阅读全文
摘要:
T1: n!太大了,所以我们取log 根据log的性质,可以维护logi的前缀和si 枚举k 当sk⩾时,k满足条件 T2: 输入毒瘤哇(写了1.5h) 按照拓扑序处理 T3 语文OI题.jpg 每个字符串的长度都是50!的 阅读全文
摘要:
枚举即可 搜索 dfs NOIP骗分大法 Dfs判环: 跑够1s直接输出有环 当遍历到一个在栈里的点时,证明有环。 经典题: 经典题*2: 枚举每层高度,半径 剪枝1:剩下的体积维的最小侧面积+已搜的面积比已搜到的最优解大 v=\pi r^2 h,S=2\pi r h,最大半径是当前的半 阅读全文
摘要:
题目戳我 看到最小值最大,很容易想到二分。 那么我们想想怎么check 在找路径的时候,显然让路径越接近要check的mid就越好。而且我们不能漫无目的的凑,要找个神奇的顺序,所以我们不妨使用dfs。 在dfs时,对于每一个节点,考虑它所有连着儿子的边。如果这条边的长度大于$mi 阅读全文
摘要:
之前听说过三分然鹅一直妹有写.jpg 三分用来解决单峰函数(例如二次函数)求最值的问题,经常用于一个东西套个三分 怎么三分 首先,我们肯定是把整个函数分成三段,像这样 其中l和r是三分时当前所在的位置 这里设求最大值 我们将的[l,r]这一段三等分,三等分点分别是mid1,mid2, 阅读全文
摘要:
此系列并木有按照顺序来,前面的有时间补上 跟我读:咕咕咕 这里是手动分割线 DP做题步骤 区间DP 经典题之能量项链 变环为链,然后搞正常的区间dp 不过还有一种做法是设dp[i][len]表示从i往后推len个位置这一段合并的最大值 但本质都是一样的 感觉难一点的矩阵取数游戏 我们 阅读全文
摘要:
什么是Trie 我们现在有很多很多的单词,想要记录下来并对它们进行各种神奇的操作(比如求最长前缀以及字符串匹配什么的),这时候我们就要用trie来记录。 煮个栗子: 我们现在要记录下qwqwqwq ,qwqwqaq ,qqqqq这三个单词,建出来的trie就长这样 显然这棵$ 阅读全文
摘要:
又是一道题解满了的题 按照题意,我们需要维护一个 n\times n 大小的矩阵内的最大最小值。 显然一个二维的东西不好直接维护。 我们可以先维护行的最值,然后再用单调队列维护连续n行的最值。(如果暂时不理解这句话请先看下面的操作。) 设 mx[i][j],mn[i][j] 分别 阅读全文