原题 CF1707A Doremy's IQ 思路概述 题意分析 给定一个长度为 \(n\) 的序列 \(a_i\) 和一个整数 \(q\),对于序列中的每个元素按顺序遍历并选数,每个元素可选可不选,但如果出现选取了 \(a_i>q\) 的情况,\(q\) 减去 \(1\),在保证选取元素数量最多的前提下输出选数情况。 思路分析 最先看
树状数组板子,单点修改,区间查询,注意处理读入字符的问题。 //7961 Problem D:【省选基础数据结构 树状数组】树状数组 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN=100005; ll c[MAXN],a[MAXN],n; #define lowbit(x) ((x)&-(x)) void add(l
就喜欢找这种紫题来做,一看,排列组合,就想到了打表。 正如楼上的题解所说,OEIS是个好东西,从中找出一串序列,然后打个表,一道紫题就轻松地AC啦!! 0, 1, 1, 5, 11, 36, 95, 281, 781, 2245, 6336,18061, 51205, 145601, 413351, 1174500, 3335651,9475901, 26915305, 76455961, 217172736,61
1## P3915 树的分解 题目描述 给出\(N\)个点的树和K,问能否把树划分成\(\frac{N}{K}\)个连通块,且每个连通块的点数都是\(K\)。 解题思路 分析样例: 「\(sample1\)」 可被划分为\(1\).\(2\)、\(3\).\(4\)两个大小为\(2\)的连通块。 「\(sample2\)」
\(P1641 [SCOI2010]\)生成字符串 前置知识 组合数、坐标轴。 题目描述 以\(n\)个\(1\)和\(m\)个\(0\)组成字符串,求出满足条件「在任意的前\(k\)个字符中,\(1\)的个数不能少于\(0\)的个数」的字符串数量。 解题思路 考虑到题目要求的条件「\(1\)的个数不少
\(P2700\) 逐个击破 前置知识 克鲁斯卡尔最小生成树算法 并查集 贪心思想 题目描述 给出一颗带权的树,删除任意条边,求出使得给定的点不连通的最小权值。 解题思路 样例说明:删除权值为\(1\)和\(3\)的边,使得\(1.2.4\)三点不连通,答案为\(1 + 3 = 4\)。
CSP集训题解 Summer已经完结了于是新开一个,而且旧的已经很卡了 9.9CSP-S短赛2(开小灶2) T1 元素周期表 看来是一种套路,将每个点对应的x,y坐标连边,在一个联通块内的就是可达的,那么答案就是联通块数减一 点击查看代码 #include <bits/stdc++.h> typedef long long ll;typedef unsi
LeetCode 两数相加算法题解 All In One js / ts 实现两数相加 两数相加原理 图解 字符串相加 / 大数相加 // 字符串相加 / 大数相加 const addStrings = function(num1, num2) { let res = ''; let temp = 0; const arr1 = num1.split(''); const arr2 = num2.split(
[NOIP2014 提高组] 飞扬的小鸟题解 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏。玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙。如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败。 为了简化问题,我们对游戏规则进行
题目传送门。 考虑建立虚树然后再上面搞树形 DP。 于是这道题就变成分讨题。 设 \(f_i\) 表示 \(i\) 子树内的答案。若 \(f_i=1\),表示 \(i\) 子树内的特殊点可以被一条链覆盖,且 \(i\) 可以作为链的开头。若 \(f_{i}=1\),表示 \(i\) 子树内的点可以被一条链覆盖,但 \(i\) 不能作为链
设 \(k\) 为 \(a\) 中的空位数量。 首先咱们转化这个“相似”的条件,发现它其实是说,笛卡尔树的结构相同。 那么我们把p建笛卡尔树然后把a的数往上填。如果此时有上面小于下面就挂了(挂了:即每个询问答案都是NO) 然后对于中间的空,它需要 \(>\) 下面的最大值,并且 \(<\) 上面的最小值。
(本文将笔者测试时的想法及赛后想法均写出来了) 题目: 话说某某在 \(cj\) 校运会上异军突起,其实不是偶然,而是有历史原因的。 时光回溯到 \(XX\) 年前,某某为了心中的理想,每天爬 \(N\) 里山路上学。直到有一天 \(mlj\) (也就是战神 \(Mars\))来到这里,被某某所打动,于是决定帮某某一把。从
可能会断断续续的,是因为可能有的时候忘记了写记录 9.5 今天搞了一天的平衡树,但大部分都是比较基础的操作 [SHOI2009]会场预约 题目分析: set 大法吼啊 我们考虑重新定义两个区间 \(A,B\) 的关系: =:\(A,B\)有交集 <:\(A\) 完全在 \(B\) 的左边 >:\(A\) 完全在 \(B\) 的右边 那么我们
题意 传送门 \(N \times M\)的矩形,格点是共\(W\)棵常青树或墓地。对于一块墓地,它的虔诚度为让它正上下左右各恰有\(k\)棵常青树的方法数量。求出整个矩形公墓的虔诚度总和。 对于 \(30\%\) 的数据,满足 \(1 ≤ N, M ≤ 10^3\)。 对于 \(60\%\) 的数据,满足 \(1 ≤ N, M ≤ 10^6\)
\(A\) \(Problem\) 给定长度为 \(n\) 的序列 \(A\),要求重复执行以下操作,直到 \(A\) 中的元素个数为 \(1\): 选出下标 \(i\),使得 \(A_i\) 是 \(A\) 中剩余的数中最大的;选出下标 \(j\),使得 \(A_j\) 是 \(A\) 中剩余的数中最小的,注意 \(i \neq j\);之后将 \(A_i\) 从序列中删除,若 \(A_
攻防世界 repeater 题解 查看程序保护情况,开启了PIE,没开NX,RELRO全开。 在ida64中打开分析程序,这道题程序比较简单。可以发现的信息如下: 字符数组s大小为0x20,但可以读入0x40的长度,起始于rbp-30h处(见红框) 变量v5可以控制循环、条件控制输出main函数地址,该变量位于rbp-20h字符数
A. Rectangular Queries 题意 给定一个最多包含 \(10\) 个不同数字的 \(n\times n\) 矩阵,依次回答 \(q\) 个询问,每个询问给定了一个子矩阵,问该子矩阵有多少不同数字。 题解 注意只有十个数字,预处理二维前缀和数组\(cnt[k][i][j]\)表示子矩阵 \((1,1) \to (i,j)\)中数字\(k\)的个数
攻防世界 new_easypwn 题解 程序分析 查看程序基本情况,如图,该程序是64位程序,开启了Canary、NX、PIE保护。 使用ida64打开分析程序,该程序是个电话录之类的,可以添加、删除、查看、修改通讯录。在查看函数这里发现存在字符串格式化漏洞,如图红框中标注所示。 其中图中地址unk_2020E0
*2600的死活卡住出不来,想啊,很想啊(指remake 21*21的方阵,每个位置有一个概率是1,求凑出来bingo的概率 这种题目先考虑容斥,那就是1-凑不出bingo的概率。 直接做是2^44的,我做牛魔酬宾。 如果要做,就必须意识到行和列是两个不一样的东西。 那试着枚举行,算凑不出bingo的概率 把行切开,然后2
题目 原题地址:老子的全排列呢 题目编号:NC15128 题目类型:DFS 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 1.题目大意 输出1到8的全排列 2.题目分析 \(\rm DFS\) 也可以做,但是发现 \(\rm STL\) 是真的好用: next_permutation(s.begin(), s.end()):让一个
高考完后随机跳题的复建运动。 看到区间覆盖操作考虑线段树。 30种颜色?用位运算存储节省空间。因为在线段树上传合并时只需要考虑这一段是否存在该颜色,(即\(0\)或\(1\))具体位置和长度都不用考虑。(以下简称为“颜料桶”) \(pushup\)操作:直接暴力30种颜色对比两个儿子,记录下颜色存在
攻防世界 pwn1 题解 下载附件,file命令识别文件为64位,checksec命令查看程序保护情况,如图,有Canary和NX保护。 在ida64中打开程序,程序的主要功能有两个: 存储用户输入的字符串内容 打印用户输入的字符串内容 特别的注意到,字符串数组大小为136(0x88),而read运行的最大输入大小为0x100
传送门 题目大意 有一个二分图,构造一种对边的染色方案,使得没有两个颜色相同的边共顶点。 假设对于给定二分图的答案是 \(C\),记 \(X\) 是大于等于 \(C\) 的最小的 \(2\) 的整次幂,你只需要给出一个方案,使得颜色数量不多于 \(X\)。 \(L, R\le 10^5, m\le 5\times 10^5\) 题解 设度数
luogu原题传送门 [NOIP2007 提高组] 矩阵取数游戏 题目描述 帅帅经常跟同学玩一个矩阵取数游戏:对于一个给定的 \(n \times m\) 的矩阵,矩阵中的每个元素 \(a_{i,j}\) 均为非负整数。游戏规则如下: 每次取数时须从每行各取走一个元素,共 \(n\) 个。经过 \(m\) 次后取完矩阵内所有元素
CF1713F 利用lucas定理,\(b_S\)表示下标\(T\)与\(S\)无交的\(a_T\)的异或,由于部分\(b_S\)未知,不能直接iFWT。回顾容斥:\([S=\emptyset]=\sum_{T\subseteq S}(-1)^|T|\),\([n=0]=\sum_{i=0}^{n}C(n,i)(-1)^i\),\([n=1]=\sum_{d|n}\mu(d)\),利用这种思想构造:令\(A=S\cap T\),\([A=\emptys