Oiclass P1235 题解 简单的一维动规 按照老师的要求 1. 划分阶段 非常容易的可以看出这道题目的阶段就是各个位置,即 \(i,\ j\) 。在这种划分下,每一种阶段的最优解可以由上一个阶段得到,且不会被右面的阶段所改变,故无后效性。综上,该题可以用 DP 求解 2. 确定状态和状态变量: 由 (1) 得:该题无后效性,故可用 递推的DP 进行求解,对于状态 \(i,\ j\) 的最优解,用 \(f_{i,j}\) 表 2023-01-03 题解 > OiClass
Oiclass P1213 题解 很明显,这道题是二分答案 那么,需要二分的是什么?有脑子都知道是,间距。那么求的究竟是最大值最小还是最小值最大呢?我们看到题目,我们需要求的是 “那么相邻两块土地之间的间隔的最大值” 也就是最小值最大。好的,那么框架有了,如下: 1234567891011bool check(int x);// l 是田之间的距离while (r - l > 1) { int mid = 2023-01-02 题解 > OiClass
Oiclass P3309 题解 这道是模拟题 思路如下 先输入 \(n\) 和 字符串 遍历字符串,如果没有出现过且\(当前排队人数<n\) ,将其标记,并将当前排队人数 \(+1\),如果\(当前排队人数 ≥n\) ,不标记,同时将答案 \(+1\) 如果已经出现过了,将当前人数 \(-1\) 同时将其标位为出现 实现 实现起来很简单,首先定义一个整数 \(n\) 、一个字符串 \(str\) 、一个布尔数组 \(p 2023-01-01 题解 > OiClass
Oiclass P2107 题解 这道题的思路非常奇怪(至少我觉得是这样) 你需要把它当做一道找规律题 \(\Huge{进入正题}\) 先看题目: 小 S 想计算一个自然数 n \((n < 2000)\) 的所有回文分解的个数 \(\% 1000000007\) 的值。 我们来看一下 \(1\to10\) 的所有整数的回文分解个数。简单在草稿纸上枚举可以发现,分别是: \[ 1,2,2,4,4,6,6,10,10,14 \ 2022-12-25 题解 > OiClass
Oiclass P1202 题解 这道题一看就是连通块 因为求连通块 DFS 最简单,所以我用 BFS 简单思路: 首先把外围的 0 给清除掉,然后统计数组里面还有多少个 0。 那么难点来了,究竟怎样能一次把外围所有的 0 给清除呢?记不记得我们在输入的时候一般都会从 [1][1] 开始输入,那么是不是从 [1][1] 到 [n][n] 都有值?没错,有脑子都知道有值,那么这个矩阵的四周是不是空出了一圈是没有值的,就像这样: 12 2022-12-05 题解 > OiClass
Oiclass Q&A P1106 题目: 代码: 1234567891011121314151617181920212223242526272829#include "iostream"#include "cstring"using namespace std;int n, cnt, t;int main(){ cin >> n; int a[n + 1] 2022-08-11 #OiClass #Q&A
OiClass.com Q&A P1194 这次提问的人是自己 P1194 阿克曼函数超时怎么破? 代码: 1234567891011121314151617181920212223#include "iostream"using namespace std;int x, y, ans;int ack(int m, int n){ if (m == 0){ return n += 2022-08-09 #OiClass #Q&A
Oiclass Q&A P1626 OiClass.com Q&A P1626 问题: 提问: 帮我解决的人是我爸 1234567891011121314151617181920#include <bits/stdc++.h>#define space ' 'using namespace std;int main(){ int n; int a[33333]; 2022-08-04 #OiClass #Q&A
Oiclass Q&A P2569 OiClass Q&A P2569 问题: oiclassq&ap1problem.png 很显然这是一道很简单的问题(大水题),让我们来看看提问: 哪位兄台能告诉我哪里错了吗,输入输出符合要求的: 1234567891011121314#include<iostream>#include<math.h> using namespace std;int 2022-08-04 #OiClass #Q&A