首页 > TAG信息列表 > trampoline
自定义跳转函数的通用unhook方法
0x00 前言 本文介绍一种比较有意思的unhook手法,来源于小伙伴发的一个GitHub的POC:https://github.com/trickster0/LdrLoadDll-Unhooking,本文讲参照此POC来一步步解读这个方法。 目前大家常用的经典手法大都是直接系统调用(Syscall)或是找到ntdll的地址并重新映射磁盘中的.text段,去C. Pekora and Trampoline(Codeforces Global Round 13)题解
题目链接:C. Pekora and Trampoline 思路:差分,经过仔细思考可以发现,最优解一定是都在1这个位置进行跳跃,因为假设1这个位置上的a[1]=1,那么他会跳到2,也就是具有传递性,直到跳到一个value不为1的地方,这和一开始就在该位置跳是一样的。证明了这个之后,我们进一步思考可以发现,i这个位置,可以Codeforces Global Round 13 C. Pekora and Trampoline
1491C - Pekora and Trampoline #include <bits/stdc++.h> using namespace std; typedef long long LL; const int N=5010; int s[N]; LL cnt[N]; void solve() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) { cnt[i]=[CF1491C] Pekora and Trampoline
[CF1491C] Pekora and Trampoline Description 有 \(n\) 个蹦床排成一列,每个蹦床有一个弹力值 \(s_i\)。每一轮的最开始,会任意选择一个蹦床作为她的起点。当她在蹦床 \(i\) 时,她会跳到蹦床 \(i+s_i\) 上,并且 \(s_i\) 会变为 \(\max(1,s_i-1)\)(也就是说,蹦床每被跳一次弹力值就会减CF1491C Pekora and Trampoline 题解
题目链接 比赛时只想到了 \(\mathcal O(n^3)\) 的暴力做法,官方题解是 \(\mathcal O(n^2)\) ,并且是可以优化为 \(\mathcal O(n)\) 的(贪心+差分)。 贪心是比较明显的,我们需要从左到右依次考虑每张床的贡献,因为第 \(i\) 张床只能由 \([1,i-1]\) 的床跳过来,Pekora从第一张床开始