51nod一句话题解

update 2019.4.3

1294

因为需要保证是正整数且严格递增,于是想到将原数-位数得到一串新的数列。发现只要保留新数列最长上升非负子序列,将其他进行改变即位最忧情况。n是1e5 采用nlogn的求LIS即可

1419

容易想到若为奇数 n ∗ n − 1 ∗ n − 2 n*n-1*n-2 nn1n2这3个数gcd为1,且lcm最大
若为偶数可知
1. n ∗ n − 1 n*n-1 nn1 gcd肯定为1(最后一位暴力找)
**2.**偶数-1为奇数,之后就是按照奇数来做即可

1449

将m分解成w进制,可以发现每位如果是1、0、w-1都是可以凑出来的。(1、0相当于加法,w-1相当于减法)1、0部分直接continue w-1只要在后一位加1即可。然后从低到高枚举发现无这3个数则无法称重

1307

二分答案,之后就是树上统计son值与输入的进行比较即可

1243

二分答案,每次都尽量往左放船,枚举过程判断是否存在不可能放下的情况以及当前位置是否超出M
(忘记判-1WA了一发)

1686

二分答案,check函数来判断区间众数个数>=mi的个数是否>=k
实现这一过程只要枚举左端点,看右端点最近能放到哪(用一个num数组统计该数出现的位置,当出现一个num值等于mi时终止)而该左端点的答案数则是n-右端点位置

1158

(现在来看 发现二维前缀和就可以过)
当时我的做法是先记录每一层的前缀和。之后枚举每一段纵列区间,从最上层往下枚举,若该层该区间都为1,则答案加上区间宽,否则答案更新为0.每次更改,对最终的ans取max即可

1241

由于每个数都是不同的,因此我们只要记录每个数出现的位置,如果小的数出现在相邻大数的右边,那么这里必定会存在移至队头或队尾的操作,且一旦移动,之后的移动一定可以保证一段有序。

知道这个性质之后我们对于每个相邻位置不合法的情况进行计算。且每次我们都考虑将这一段往后移动那么答案就是之前段往前移的次数加上该位置往后移动的次数,用公式表达就是ans=pre+n-i之后我们对pre进行更新,变为当前位置往前移动的次数即pre=i
最后我们只要对pre再与答案取min即可

1434

我们发现1-n内的lcm即为1-n质数最高次幂的乘积。因此这题就可以转换成1-n内质数的最高次幂的倍数,且大于n的最小值当中的最大的值就是答案

1405

cf不知道做过多少次的树上dp。大致思想就是son表示儿子数,res表示儿子到其的答案数,ans表示真正的答案。

1717

答案为n-sqrt(n)。去年校赛题

1420

可以发现越大的袋鼠去匹配尽量大的袋鼠是最好的,因此想到先对原序列sort之后发现为了满足最小 被匹配的袋鼠不是越大越好,而是越靠近中间越好,因此小袋鼠的枚举从 n / 2 n/2 n/2开始倒叙枚举即可

1605

由题意发现一个人只涂奇数个白点。且1为必胜点,于是可以递推出白点个数为奇数个时先手必胜。

1682

给定一串不重复的数,求每个数作为区间中位数的区间个数 n &lt; = 8000 n&lt;=8000 n<=8000
建立 n n n个前缀和,每个前缀和代表以 a [ i ] a[i] a[i]为中位数的前缀(即大于 a [ i ] a[i] a[i]记作 1 1 1、小于 a [ i ] a[i] a[i]记作 − 1 -1 1、等于记作 0 0 0)之后就变成统计区间值为 0 0 0的区间个数问题,这个只要在枚举前缀和时记录个数记录数组表示前缀答案为 x x x的出现过几次,遍历时,若当前前缀为 y y y,他对答案的贡献就是记录数组 − y -y y的个数

1412

统计 A V L AVL AVL树节点恰为n的个数 n &lt; = 2000 n&lt;=2000 n<=2000
定义 d p [ i ] [ j ] dp[i][j] dp[i][j]代表节点个数为 i i i的层数为j的个数,这样可以很容易想到一个 n ∗ d e e p n*deep ndeep的转移方程,整体复杂度为 n ∗ n ∗ d e e p n*n*deep nndeep,然后我们发现生成深度为 i i i A V L AVL AVL所需的最小节点数类似于一个费波纳数列,所以 n n n 2000 2000 2000的深度其实是个 l o g log log级别的,所以整体复杂度就变成 n ∗ n ∗ l o g ( n ) n*n*log(n) nnlogn这题就能过了

1366

给定朋友关系图,规定朋友之间的存款差距要小于等于d 问最富和最穷的差距。
转换为差分约束系统之后建图跑spfa,若存在一点未被松弛则输出-1,否则输出与原点的最大差即可

1445

题意略
只要按找关系建图,把一个颜色能变的颜色按编号从小到大设定边权从 1 1 1开始累加,之后跑最短路求道 n n n点的最短路即可

2000

可以把其想成线段割角,每次加一个矩形,相当于多加了一个外角和一个内角,所以角数每次加 2 2 2,答案是每次加上 4 4 4乘之前的角数

1791

这题维护一个栈,对于碰到()匹配时计算答案贡献,贡献为同时该层时()匹配的个数,由于一旦层数下降,那么之前存的高层的值对后继答案时没有贡献的,所以动态的在统计贡献的时候对层数+1的前驱个数清空即可。

1435

先求出F(x)质因数分解,再去构造s,构造方案为

  1. 大数在前,小数在后
  2. 对于质因数从大到小确定,这样做确保每个质因数都用上
  3. 确定位值是只取质因数(一个4可以构建成一个2一个3,因此取4的话位数少)

1714

大表跑出sg[i]表示二进制数中有i个1的数的sg值,之后把这n个sg值异或即可。

1737

以边对答案的贡献来考虑,发现这个边为了贡献尽可能大则对答案的贡献就是两端节点数的最小值*边权

1140


update 8.28 0:05

1122

题目给定2*2矩阵每个矩阵中都有一个机器人可上下左右走,问走k步恰好占满矩阵的方案数。这题对每个机器人求从该点走k步到其他的点的方案数然后 4 4 4^4 44的暴力求答案即可。解决走k步从一点到另一点的方案数联想到矩阵快速幂。

1125

题目给定n个不同的数问数列排序的最小代价(代价为交换两数相加)这种位置适配问题可以将适配点和实际应该的点相连发现能练成很多个单环(离散化预处理保证),于是我们只要考虑环内有序最小值即可。考虑这个问题容易想到的是每次都用环内最小值去交换适配位,代价就是最小值*(个数-1)+剩余总和-最小值。当是其实还有一种情况可能最小即先将环内最小值与队列最小值交换然后再环内排完序后

1161

题目给出一个数列每次操作将第i位的数加上改变后i-1位的数,

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值