这道题别看是签到题,写起来一点不简单 出题人的正解是双向搜索 我们把物品分成两半 每一半分别跑搜索 答案存下来,用个双指针合并即可 然后我构造了两组数据卡掉了他,不得不缩小数据范围 但我这里为什么要致敬Drench呢? 因为Drench在luogu五月月赛出的T2和这道题的特殊解方向是一样的 利用了随机化的思想(才不是什么猜随机数呢qwq) 既然我们可以利用随机化 在特判和正常剪枝完全的情况下给爆搜加一个随机化剪枝 如果长期得不到更优解就跳出 剩下的就是调参了 数据是用双向dfs出的,绝对没问题…
作为T1,当然是越水越好啦qwq 显然经目测可得,那个所谓的质量评级根本就没卵用,可以直接\(W_i = W_i^{V_i}\)累积到利润里面. 这样,本问题显然是一个"子集和"问题的模板.此类问题一般使用暴力DFS或DP解决.对于本题,由于体积过大,使用DFS.(听说DP也可以解?算了出题人太懒不写了qwq) 不难发现,此题爆搜的时间复杂度为\(O(2^n)\),可以拿20分. 对于更大的数据,考虑以双向DFS的形式,降低复杂度. DFS框架:把矿脉分为两部分,先预处理出数组\(sa…
LeetCode 算法题解 js 版 (001 Two Sum) 两数之和 https://leetcode.com/problems/two-sum/submissions/ https://leetcode-cn.com/problems/two-sum/submissions/ 1. 暴力解法 Time complexity: O(n**2) Space complexity: O(n) "use strict"; /** * @author xgqfrms * @descrip…
题解 寻星 题意:给定一个有向带权图,定义从一点到另一点的某条路径长为路径上所有边权的最大值,并给定四个点编号w,t1,t2,t3. 求出一个点s,使它在到t1,t2,t3三点最短路径最大值最大或者根本不存在路径的基础上,到w的最短路径最小. 思路: 本来是要加强数据卡Floyd,但也是来不及了,Floyd无脑跑一遍再枚举即可.注意这是个有向图,而且三体人也看作是人类. #include<cstdio> #include<algorithm> #include<cstring…
题意: 给你一个\(n*n\)的矩阵A,其中有\(T\)个元素不为零.定义矩阵内元素\((x,y)\)的能量值 \(E[x][y]=\sum_{i=1}^{x}\sum_{j=1}^{y}[A[i][j]>0]\) 有\(m\)个询问\((x,y,d)\),每次询问是否存在二元组\((x',y')\)满足 \(x'=x\) 或 \(y'=y\) ,使得 \(E[x'][y']*A[x'][y']>=d\) 如果存在,则\(ans1++,ans2+=min(E[x'][y'])\).否则将 \(…
我们注意到这道题中最多有 $(n+q)$ 个数被加入,而每个数最多被删除一次,因此每次操作 $O(logn)$的复杂度是可以接受的. 我们对于$1..100000$之间每个数分别开一个set,维护这个数出现在哪些位置,这样我们就可以非常方便地维护每个数的前驱和后继. 同时我们开一个数组保存每个位置的数是多少. 对于加入操作,我们直接将这个数的坐标加入相应的set,并且从占据这个坐标的数所对应的set中删除这个坐标. 对于删除操作,我们维护两个迭代器(一个向左,一个向右),每次删除距离询问位置较近…
这道题别看题面这么长,其实题意很简单 就是让你求从起点开始的最长合法区间 合法的要求有两个:兜圈子和直飞 且这两个条件相互独立 (也就是说兜圈子的末尾不会对下面可能出现的直飞造成影响) 举个例子: 1 2 3 2 1 5 4 3 8 9 这个序列他的合法长度是8 因为直飞是 5 4 3 8 9 1是兜圈子的末尾,对直飞无影响 这样看来,兜圈子比直飞优秀的多 因为如果直飞的某段属于兜圈子 那么把这一段归于兜圈子后对序列的合法性无影响 但如果兜圈子的某段属于直飞,那归于直飞后 剩下的这部分可能就不是…
因为版权问题,不丢题面,不放代码了(出题人姓名也隐藏) T1 这,是一道,DP题,但是我最开始看的时候,我思路挂了,以为是一道简单题,然后就写错了 后来,我正确理解题意后写了个dfs,幸亏没有记忆化,不然就会mle 那么怎么Dp呢? 写过dfs后我就很容易能想到了(不写dfs应该也能) f[k, i, j]表示按照路径移动到了第k个,当前在点(i, j)时的最少删去的移动个数 设i'为上一个位置的横坐标,j'为上一个位置的纵坐标 f[k, i, j] = min{f[k - 1, i, j] +…
0x00 前言 写了一天题目,学到了好多东西, 简单记录一下 0x01 Web HappyCTFd 直接使用网上公开的cve打: 解题思路:先注册一个admin空格账号,注意这里的靶机无法访问外网,邮箱填上buu内网的邮箱以admin账户登陆.然后修改密码,给我们注册的邮箱发送邮件,去内网邮箱处登陆,点击链接修改密码.这样平台真正的admin账户就被修改了. 我们以用户名admin,密码为我们刚刚修改的登陆.找到flag. CHECKIN perl 脚本反弹shell: 链接: https://…
注意本题解并没有去追求最优解,只是用比较暴力的方法求解.D题听说要改说明不是位数30位,目前除了D题可能有问题之外其他代码已经全部正确. A.查找字串 用string BF(暴力求解即可) 代码 #include <bits/stdc++.h> using namespace std; main() { string a,b; cin>>a>>b; for(int i=0;i<a.size();i++) { int f=1; if(a[i]==b[0]) { fo…