摘要:
黑匣子 题目链接 看到题解中“维护两个堆”,突然想到了这道题的解法 维护两个堆:大根堆h1, 小根堆h2 大根堆里的是最小的i个值,小根堆里是剩下的值 每Add一个值时 插入到小根堆中, 再比较小根堆的最小值与大根堆的最大值 若h2.top()<h1.top() 将两个元素取出,换一下再放进去 需要 阅读全文
摘要:
末日的传说 题目描述 n位数最多构成n*(n-1)/2个逆序对 首先二分答案求出需要改动的位数k最少是多少 将前面不需要改动的位输出 再算一下构成(k-1)*(k-2)/2个逆序对后还剩多少逆序对 若剩x,就将剩下的数中第x大的数先输出,这样就又构成的x个逆序对 剩下的数倒序输出 少用long lo 阅读全文
摘要:
集合 题目链接 显然,我们是要把数据先排序的, 然后从大到小枚举每个数,看是否能选上, 能选就选,不能拉倒 若能,二分查找a[i]/k,若查找成功,ans++ 将a[i]/k标记为不能选择 最后输出答案即可 (从小到大枚举会爆long long) 阅读全文
摘要:
路标设置 题目链接 此题和跳石头很相似,都是二分答案,模拟判断是否可行 阅读全文
摘要:
排行榜 题目链接 看到题解中一个很巧妙的做法: 先确定SAME的位置, 将DOWN的按输入顺序从上往下输出 再将UP的接着从上往下输出 这样便可以保证DOWN的人名次一定下降了 UP的人名次一定上升了 阅读全文
摘要:
在农场万圣节Trick or Treat on the Farm 题目链接 题解:首先,将原图缩点,变为DAG, 然后在DAG上记忆化搜索即可 阅读全文
摘要:
低价购买 题目链接 n<=5000 n^2的算法是可以接受的 第一个数字显然是求最长下降子序列,可以n^2或nlognDP 要求方案数,可以在n^2算法中做一些修改,DP求方案数 dp[i]表示以第i个数为结尾的最长下降子序列 f[i]表示以第i个数为结尾的最长下降子序列的个数 当a[j]<a[i] 阅读全文
摘要:
P1363 幻想迷宫 显然,若从原图中起点走到相邻的图中对应的“起点”位置 ,就可以无限走下去, 若一个点从原图中可以到达,到了非原图中也可以到达,就可以无限走下去 我们不妨记录下当前到达的x,y坐标,同时也记录下在%n,%m下的坐标, int vis[x][y][3]; x,y表示在%n,%m下的 阅读全文
摘要:
XOR的艺术 题目链接 用线段树维护sum, 修改时 tag[p]^=1; sum=r-l+1-sum; 详见代码 三倍经验: 开关 光开关 去掉build即可 阅读全文
摘要:
贪婪大陆 题目链接 对于一个区间[l,r],右端点在l左边即[1,l-1]中的区间与区间[l,r]没有交集, 左端点在r右边即[r,n]中的区间与区间[l,r]没有交集, 其余区间必与[l,r]有交集, 因此维护两个树状数组,一个维护从1开始右端点的数量, 另一个维护从n开始左端点的数量,插入时取值 阅读全文