摘要: 原题链接 考察:组合数学 思路: C[i][j] = C[i-1][j-1]+C[i-1][j],注意拿当前数+不拿当前数,和分苹果的划分方式不一样.当C[i][j] = 0,Sum[i][j] = 1,求前缀和i、j范围必须相同. 1 #include <iostream> 2 #include 阅读全文
posted @ 2021-03-04 23:32 acmloser 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:枚举 + hash 思路: 暴力是直接枚举a[i]与a[j],需要优化省去一重循环.我们枚举的a[i],a[j]检查是否为k倍数时,需要让a[j]*10t + a[i](t位为a[i]的位数,注意这里用字符串转换反而不如直接求位数方便).一重循环枚举a[i]时,t已知,a[i]已知, 阅读全文
posted @ 2021-03-04 21:31 acmloser 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:思维 思路: 考虑四个端点的规律,而不是斜率相同的点的规律.除了第三象限其他端点的值与x、y都很好找.第三象限要进行x+1>=<y分类.代码写繁琐了,y总的思路将点分为在上、下、左、右更好. 1 #include <iostream> 2 #include <cstring> 3 # 阅读全文
posted @ 2021-03-04 19:55 acmloser 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:线段树 or 树状数组 思路: 套模板即可. 注意:build函数里,赋值不是赋值a[u],而是a[l].l、r是1~n范围内.u是线段树结点编号. 1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 阅读全文
posted @ 2021-03-04 13:24 acmloser 阅读(48) 评论(0) 推荐(0) 编辑
摘要: 原题链接 考察:树状数组 +贪心 or归并排序+贪心 思路: 首先一个定理:冒泡排序的交换次数 = 逆序对个数.证明: 冒泡排序每次交换减少一个逆序对,当最后逆序对数量 = 0,交换次数>=k. 又因为每次只能减少一个.那么必然可以取到k.对于某一个人i而言,i前面>hi有k个,后面<hi有t个.k 阅读全文
posted @ 2021-03-04 08:54 acmloser 阅读(74) 评论(0) 推荐(0) 编辑