摘要:
原题链接 题解 手写栈存放已经匹配过的位置和每个位置匹配的进度,每次匹配成功就回溯,相当于删除子串 code #include<bits/stdc++.h> #define ll long long using namespace std; int con[1000006],pre[1000006] 阅读全文
posted @ 2024-07-21 23:36
纯粹的
阅读(14)
评论(0)
推荐(0)
摘要:
原题链接 题解 经典的状压dp code #include<bits/stdc++.h> #define ll long long #define lowbit(x) ((x)&(-x)) using namespace std; int sit[105]; int dp[505][505][4]; 阅读全文
posted @ 2024-07-21 21:23
纯粹的
阅读(11)
评论(0)
推荐(0)
摘要:
原题链接 题解 如果 k+1 是质数,且 n+1 内没有 k+1 的倍数,那么只需要一天 否则 只需要两天 如果 k+1 不是质数,第一天产生的质数会在第二天布满所有数 如果 k+1 是质数,那么 k+1 ~ 2k+2 之间一定有一个质数,也能布满所有数 实施 首先要判断 k 是不是质数 \(O(\ 阅读全文
posted @ 2024-07-21 18:08
纯粹的
阅读(15)
评论(0)
推荐(0)
摘要:
原题链接 题解 由于 \(a\oplus b \leq a+b\) ,所以全部异或起来 code #include<bits/stdc++.h> #define ll long long using namespace std; void solve() { int n; cin>>n; int a 阅读全文
posted @ 2024-07-21 17:22
纯粹的
阅读(13)
评论(0)
推荐(0)
摘要:
原题链接 题解 正难则反 不可能发生越狱的清空: 从左到右,第一个人有m种选择,第二个人为了和前面一个人不一样,有 m-1 种选择。。。 code #include<bits/stdc++.h> #define ll long long using namespace std; const ll m 阅读全文
posted @ 2024-07-21 17:06
纯粹的
阅读(22)
评论(0)
推荐(0)
摘要:
原题链接 题解 尽量直观地理解单调队列的作用 首先,对于合法的一段,有如下性质 A 满足: 当前的最高温度大于等于前面的最大的最低温度 该性质对于段内每一个数都满足,所以对于第 \(i\) 天,我们可以找其前面的第一天 \(j\) 的最低温度大于 \(i\) 的最高温度,同时还要满足 \((j,i] 阅读全文
posted @ 2024-07-21 16:59
纯粹的
阅读(41)
评论(0)
推荐(0)
摘要:
原题链接 题解 每次move,两人之间的距离要么-2,要么不变,所以如果两人的距离是奇数肯定抓不到 如果两人是偶数,则想要使两人之间的距离不变,必须要往与猎人所在位置相反的方向跑,由于会撞墙,所以经过若干次move之后,两人距离-2是必然发生的,无限次move后,距离一定会为0 code #incl 阅读全文
posted @ 2024-07-21 13:54
纯粹的
阅读(13)
评论(0)
推荐(0)
摘要:
原题链接 题解 我们知道奇数无法整除偶数,所以可以构造一个全是奇数的序列 code #include<bits/stdc++.h> #define ll long long using namespace std; void solve() { int n; cin>>n; for(int i=1; 阅读全文
posted @ 2024-07-21 13:22
纯粹的
阅读(12)
评论(0)
推荐(0)
摘要:
原题链接 code #include<bits/stdc++.h> #define ll long long using namespace std; void solve() { int n; cin>>n; vector<int> p(n+4); for(int i=1;i<=n;i++) ci 阅读全文
posted @ 2024-07-21 13:05
纯粹的
阅读(20)
评论(0)
推荐(0)
摘要:
原题链接 题解 在bob操作之后,alice可以选一个与bob一样的数补充,因此,最后的s为初始s加初始alice添加的元素,所以alice第一次要添加mex初始s code #include<bits/stdc++.h> #define ll long long using namespace s 阅读全文
posted @ 2024-07-21 12:32
纯粹的
阅读(10)
评论(0)
推荐(0)
摘要:
原题链接 题解 1.猜想最少需要n个黑格子(一字排开) 反证:如果需要少于n个黑格子,则至少有一行空缺,至少有一列空缺,空行和空列交叉的地方可以证明不成立 猜想要么每一列放一个,要么每一行放一个 反证:如果一行放两个,则一定有一行空缺,且由于不确保没有列不空缺,所以会有空行空列交叉点 3.根据上述总 阅读全文
posted @ 2024-07-21 12:18
纯粹的
阅读(20)
评论(0)
推荐(0)
摘要:
原题链接 题解 要让abc不同,我们可以先固定ab取两个较小值,然后看看最大的 c 有没有重复 code #include<bits/stdc++.h> #define ll long long using namespace std; void solve() { int n; cin>>n; i 阅读全文
posted @ 2024-07-21 11:41
纯粹的
阅读(12)
评论(0)
推荐(0)
摘要:
原题链接 题意 每次只能对 \(2^k\) 个数减一,可以减任意次,但是 \(2^k\) 以内的数相对大小不变 减前 \(2^0\) 个数可以让第一个小于第二个 2 可以让前第二个小于第三个 4 可以让第四个小于第五个 即 \(2^k \leq 2^{k+1}\) 始终能做到 所以要保证非二次方的 阅读全文
posted @ 2024-07-21 10:26
纯粹的
阅读(12)
评论(0)
推荐(0)
摘要:
原题链接 题解 假如 1 成立,23 不成立,代表对于 所有相等 的 \(a_i\) ,存在 \(b_i=1,b_i=2\) ,但是不存在 \(b_i=3\) 所以找出两个不同的、出现次数大于1的数,然后这两组分别附上 12,23,其他数赋值1,因为不会产生任何情况123 实施 首先找出两个数,然后 阅读全文
posted @ 2024-07-21 09:41
纯粹的
阅读(18)
评论(0)
推荐(0)
摘要:
原题链接 题解 1.如果初始乘起来小于等于0,由于操作无法使该乘积更小,所以不用再修改 2.否则代表初始值大于零,随便找一个地方改成 0 3.注意由于 a 很大,所以要用统计的方式来判断乘积的性质 code #include<bits/stdc++.h> #define ll long long u 阅读全文
posted @ 2024-07-21 09:30
纯粹的
阅读(20)
评论(0)
推荐(0)

浙公网安备 33010602011771号