题意: 给你一个\(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中删除这个坐标. 对于删除操作,我们维护两个迭代器(一个向左,一个向右),每次删除距离询问位置较近…
题解 寻星 题意:给定一个有向带权图,定义从一点到另一点的某条路径长为路径上所有边权的最大值,并给定四个点编号w,t1,t2,t3. 求出一个点s,使它在到t1,t2,t3三点最短路径最大值最大或者根本不存在路径的基础上,到w的最短路径最小. 思路: 本来是要加强数据卡Floyd,但也是来不及了,Floyd无脑跑一遍再枚举即可.注意这是个有向图,而且三体人也看作是人类. #include<cstdio> #include<algorithm> #include<cstring…
作为T1,当然是越水越好啦qwq 显然经目测可得,那个所谓的质量评级根本就没卵用,可以直接\(W_i = W_i^{V_i}\)累积到利润里面. 这样,本问题显然是一个"子集和"问题的模板.此类问题一般使用暴力DFS或DP解决.对于本题,由于体积过大,使用DFS.(听说DP也可以解?算了出题人太懒不写了qwq) 不难发现,此题爆搜的时间复杂度为\(O(2^n)\),可以拿20分. 对于更大的数据,考虑以双向DFS的形式,降低复杂度. DFS框架:把矿脉分为两部分,先预处理出数组\(sa…
这道题别看是签到题,写起来一点不简单 出题人的正解是双向搜索 我们把物品分成两半 每一半分别跑搜索 答案存下来,用个双指针合并即可 然后我构造了两组数据卡掉了他,不得不缩小数据范围 但我这里为什么要致敬Drench呢? 因为Drench在luogu五月月赛出的T2和这道题的特殊解方向是一样的 利用了随机化的思想(才不是什么猜随机数呢qwq) 既然我们可以利用随机化 在特判和正常剪枝完全的情况下给爆搜加一个随机化剪枝 如果长期得不到更优解就跳出 剩下的就是调参了 数据是用双向dfs出的,绝对没问题…
这道题别看题面这么长,其实题意很简单 就是让你求从起点开始的最长合法区间 合法的要求有两个:兜圈子和直飞 且这两个条件相互独立 (也就是说兜圈子的末尾不会对下面可能出现的直飞造成影响) 举个例子: 1 2 3 2 1 5 4 3 8 9 这个序列他的合法长度是8 因为直飞是 5 4 3 8 9 1是兜圈子的末尾,对直飞无影响 这样看来,兜圈子比直飞优秀的多 因为如果直飞的某段属于兜圈子 那么把这一段归于兜圈子后对序列的合法性无影响 但如果兜圈子的某段属于直飞,那归于直飞后 剩下的这部分可能就不是…
与普通的最短路径不同的是,题目中新引入了一个计入总体的费用——城市建设费.由于城市建设费由整体的某最大值决定,导致解没有最优子结构的性质,给思维带来难度. 既然最棘手的是城市建设费,我们就对它分类讨论.为了分类有效,我们先把城市繁华度从小到大排个序,这样分类讨论时当前路径的城市的最大繁华度即为不严格递增的.这样,我们便可以考虑当前路径只可能经过前k个最不繁华的城市(可以不经过,但只要经过,经过的城市就一定在那前k个最不繁华的城市中),让k从小到大递增(每次+1)至n,对于每个k值,更新一下最短路…
0x00 前言 写了一天题目,学到了好多东西, 简单记录一下 0x01 Web HappyCTFd 直接使用网上公开的cve打: 解题思路:先注册一个admin空格账号,注意这里的靶机无法访问外网,邮箱填上buu内网的邮箱以admin账户登陆.然后修改密码,给我们注册的邮箱发送邮件,去内网邮箱处登陆,点击链接修改密码.这样平台真正的admin账户就被修改了. 我们以用户名admin,密码为我们刚刚修改的登陆.找到flag. CHECKIN perl 脚本反弹shell: 链接: https://…
问题描述 小王参加的考试是几门科目的试卷放在一起考,一共给 t 分钟来做.他现在已经知道每 门科目花的时间和得到的分数的关系,还有写名字要的时间(他写自己的名字很慢)请帮他 算一下他最高能得几分.总分一定时,第一门科目成绩尽量高,第一门科目成绩也一样时, 第二门科目成绩尽量高……以次类推.如果放弃某一门的考试(花的时间为 0),那么 名字也就不用写了. 输入格式 第一行三个正整数 t,n,name. t 是总时间,n 表示考 n 个科目,name 表示写名字要的 时间(每一门科目写名字时间一样)…
题解: 都是不错的技巧题目 t1暴力就不说了 t2dp是比较显然的 然后发现都是0,1用bitset优化 代码非常短 t3容易发现这个东西在不断合并 于是我们想到启发式合并 存疑:splay启发式合并复杂度 为了比较简单用了set的启发式合并 线段树启发式合并可以做到nlogn updata的时候计算一下左二子最大值和右儿子最小值的差就行了 t4是看题解的.. 拓展了在trie树上实现排序的思维 其实还是比较简单的 我们对于排序的元素,都搞到trie树上 然后显然就类似于二分查找了 至于全局xo…