摘要: 末日的传说 题目描述 n位数最多构成n*(n-1)/2个逆序对 首先二分答案求出需要改动的位数k最少是多少 将前面不需要改动的位输出 再算一下构成(k-1)*(k-2)/2个逆序对后还剩多少逆序对 若剩x,就将剩下的数中第x大的数先输出,这样就又构成的x个逆序对 剩下的数倒序输出 少用long lo 阅读全文
posted @ 2018-07-24 18:39 yjk 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 集合 题目链接 显然,我们是要把数据先排序的, 然后从大到小枚举每个数,看是否能选上, 能选就选,不能拉倒 若能,二分查找a[i]/k,若查找成功,ans++ 将a[i]/k标记为不能选择 最后输出答案即可 (从小到大枚举会爆long long) 阅读全文
posted @ 2018-07-24 17:54 yjk 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 路标设置 题目链接 此题和跳石头很相似,都是二分答案,模拟判断是否可行 阅读全文
posted @ 2018-07-24 17:47 yjk 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 排行榜 题目链接 看到题解中一个很巧妙的做法: 先确定SAME的位置, 将DOWN的按输入顺序从上往下输出 再将UP的接着从上往下输出 这样便可以保证DOWN的人名次一定下降了 UP的人名次一定上升了 阅读全文
posted @ 2018-07-24 17:42 yjk 阅读(788) 评论(0) 推荐(0) 编辑
摘要: 在农场万圣节Trick or Treat on the Farm 题目链接 题解:首先,将原图缩点,变为DAG, 然后在DAG上记忆化搜索即可 阅读全文
posted @ 2018-07-24 16:53 yjk 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 低价购买 题目链接 n<=5000 n^2的算法是可以接受的 第一个数字显然是求最长下降子序列,可以n^2或nlognDP 要求方案数,可以在n^2算法中做一些修改,DP求方案数 dp[i]表示以第i个数为结尾的最长下降子序列 f[i]表示以第i个数为结尾的最长下降子序列的个数 当a[j]<a[i] 阅读全文
posted @ 2018-07-24 16:48 yjk 阅读(163) 评论(0) 推荐(0) 编辑
摘要: P1363 幻想迷宫 显然,若从原图中起点走到相邻的图中对应的“起点”位置 ,就可以无限走下去, 若一个点从原图中可以到达,到了非原图中也可以到达,就可以无限走下去 我们不妨记录下当前到达的x,y坐标,同时也记录下在%n,%m下的坐标, int vis[x][y][3]; x,y表示在%n,%m下的 阅读全文
posted @ 2018-07-24 16:03 yjk 阅读(189) 评论(0) 推荐(0) 编辑
摘要: XOR的艺术 题目链接 用线段树维护sum, 修改时 tag[p]^=1; sum=r-l+1-sum; 详见代码 三倍经验: 开关 光开关 去掉build即可 阅读全文
posted @ 2018-07-24 15:30 yjk 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 贪婪大陆 题目链接 对于一个区间[l,r],右端点在l左边即[1,l-1]中的区间与区间[l,r]没有交集, 左端点在r右边即[r,n]中的区间与区间[l,r]没有交集, 其余区间必与[l,r]有交集, 因此维护两个树状数组,一个维护从1开始右端点的数量, 另一个维护从n开始左端点的数量,插入时取值 阅读全文
posted @ 2018-07-24 15:25 yjk 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 小A和uim之大逃离 II 题目链接 比较裸的搜索,vis[i][j]再加一层[0/1]表示是否使用过魔液 转移时也将是否使用过魔液记录下来,广搜即可 阅读全文
posted @ 2018-07-24 15:06 yjk 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 雷涛的小猫 题目链接 n^2DP比较好想, f[i][j]表示第i棵树高度为j的最大收益 直接从上到下转移即可,每次记录下max f[1~n][j] 用于下面的转移 f[i][j]=max(f[i][j-1],max(f[1~n][j-Delta])) max(f[1~n][j-Delta])是已经 阅读全文
posted @ 2018-07-24 14:55 yjk 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 玉米田Corn Fields 题目链接 此题和互不侵犯状压DP的做法类似 f[i][j]表示前i行,第i行种植(1)/不种植(0)构成的二进制数为j时的方案数 首先我们可以预处理出所有一行中没有两个相邻的1的二进制数 然后进行暴力的DP 阅读全文
posted @ 2018-07-24 14:55 yjk 阅读(140) 评论(0) 推荐(0) 编辑
摘要: 侦探推理 题目链接 这是一道恶心至极的模拟题 我们可以枚举罪犯是谁,今天是星期几,从而判断每个人说的话是真是假 若每个人说的话的真假一致,且说谎话的人数<=k且说真话的人数<=m-k,就是一个符合的方案 而此题的精髓在于字符串的处理! 要知道每句话的末尾会有一个空格(为此爆到30分) 以及以下坑点: 阅读全文
posted @ 2018-07-24 14:41 yjk 阅读(171) 评论(0) 推荐(1) 编辑
摘要: 删数 题目链接 删数 题目链接 删数 题目链接 一道裸的区间DP,f[l][r]表示剩下区间[l,r]时的最大价值 可以由f[1~l-1][r]和f[l][r+1~n]转移过来 详见代码: 1 #include<algorithm> 2 #include<iostream> 3 #include<c 阅读全文
posted @ 2018-07-24 14:26 yjk 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 产生数 题目链接 本着“水题不可大做”的原则,我直接字符串hash+爆搜,成功爆栈。。 我们发现,依次搜索每一位能取到的数字个数,最后乘起来即可(乘法原理) 然后又爆了一个点。。 long long存不下!! 于是我面向数据编程,看到输出的数后面有很多0 就产生了这个神奇的骗分做法 阅读全文
posted @ 2018-07-24 14:22 yjk 阅读(427) 评论(0) 推荐(0) 编辑
摘要: 矩阵取数游戏 题目链接 每行分别跑一趟区间DP即可 这道题区间DP是非常裸的,按套路来即可 但是很毒瘤的是需要高精度, “我王境泽就是爆零,从这跳下去,也不会用__int128的!” 阅读全文
posted @ 2018-07-24 14:14 yjk 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 火柴排队 题目链接 ∑(ai​−bi​)^2=∑ai^2-2*∑ai*bi+∑bi^2 显然∑ai^2+∑bi^2是不变的,我们要让 2*∑ai*bi最大,才能使原式最小 然后我们一眼就可以看出来, 当第i大的ai与第i大的bi一一对应时,∑ai*bi最大 反正我不会证 知道了对应关系后,于是就成了 阅读全文
posted @ 2018-07-24 14:03 yjk 阅读(125) 评论(0) 推荐(0) 编辑
摘要: P1341 无序字母对 题目链接 根据题意,只有在每两个相邻的字母都构成一个要求的无序字母对时,才能满足要求, 我们不妨将每个字母看成一个节点,每个无序字母对看成一个无向边, 我们要从一个点出发,不重复地走完所有的边, 所走的路径上的点构成的字符串即为一个合法的解 这就转化成了求一条字典序最小的欧拉 阅读全文
posted @ 2018-07-24 13:47 yjk 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 高低位交换 题目链接 这道题非常水,我是用位运算做的 a=n>>16 二进制的“高位”b=n-(a<<16) 二进制的“低位”ans=(b<<16)+a 转换 阅读全文
posted @ 2018-07-24 13:05 yjk 阅读(136) 评论(0) 推荐(0) 编辑