README
Just Troubleshooting 踩坑指北,问题与解决 唔,今天是2022年10月6号,我建立了这篇文章,很神奇的事情,其实。 语言有些混乱,凑活着看或者就不看了吧。 最近整了点活,从虚拟机配置Ubuntu到部署一些Node项目,算是又学了一遍基础,记忆力太差了。。然而,终于是发现会遇到超级多的问题,这些坑啊,先辈踩过了,可能花费了大量的时间,却可能没有留下一点记录,太可惜了。。。先从自己开始记录吧。希望以后可以整一个专门记录踩坑的网站。。。
线性表
高维数组按行展开。 12a[100][200][300]a[x][y][z] = *(a + x*(200*300) + y*300 + z ) 工程写法,词法练习,语法分析非for列表
线段树
线段树原理思想 懒操作 建树操作
AcWing 271. 杨老师的照相排列
AcWing 271. 杨老师的照相排列前言相关分析时间复杂度由均值不等式,最坏情况下共有 (Nk)k(Nk)k 状态,计算每个状态需要 O(k)O(k) 的计算量,因此总时间复杂度是 O(k(Nk)k)O(k(Nk)k)。https://www.acwing.com/solution/content/4954/ 代码123456789101112131415161718192021222324252627282930313233343536373839404142434445#include <iostream>#include <algorithm>#include <cstring>using namespace std;const int N = 31;int k = 1;long long dp[N][N][N][N][N];int main(){ while (cin >> k, k) { int n[6] = {0}; for (int i...
洛谷-P1590 失踪的7
link 废话不多说,直接思路+题解。。。 思路具体思路是计算出每一个数对总方案数的贡献方法数,然后求和就好了。比如n=4321:1 的贡献值:很明显是1,只能有1这一种可能性。2 的贡献值:注意在十位,所以贡献值应该是 $2∗9^1$3 的贡献值:在百位,应该是 $3∗9^2$4 的贡献值:在千位,应该是 $49^3$所以某一个数的设位数为b,值为a贡献值就是 $a9^{b-1}$然而,如何去证明呢?很简单,因为7不可用,每一位自然有9个选择那么根据乘法原理,一位数随机排列为9种,两位数为81种,n位数就是 $9n9^n$9n 种,也就是 说,0-99999....9就可以用乘法原理来算,如果去掉0这种情况,再加上100000......0这 种情况,一加一减抵消了,总数没有变。就变成了1-100000......0的总数为 $a*9^b$种。 至此,我们就证明完了贡献值公式是正确的,但是,为什么总数是这些贡献值加起来呢?我们用位置原理 就能证明。还是之前那个例子,n=4321,计算出了4的贡献值,相当于我们已经算完了1......4000了,剩下无论如何千位数也不会...
排错日志
排错会花费很大的时间代价。通常会让我。。。 错误多种多样,多次犯下未初始化或初始化错误的错误。比如2021.10.1日再写P1080 [NOIP2012 提高组] 国王游戏 的时候,对于乘积的初始化错误,一开始是判断出初始化错误的,但没有相信自己。初始化错误的表现在某些特殊样例面前可以通过,如在刚刚提到的题目中,如果国王左手上的数字为1,则输出正确。对于固定输入,错误输出可能不固定(未出始化)。解决仔细研读题目,看看变量之间的相关性,相关变量运算时是否有遗漏,看输入数据,看看输出错误的数据,和输出正确数据间的不同,输出正确的输入有什么特殊性
String模板
写在开头:学习 用这是一些总结的方法不喜勿喷。。。 string 系列 转字符12345678910string Transfer_character(int n){ //将n转为字符 string a; while (n) { a.append(1, (char)(n % 10 + 48)); n /= 10; } return a;} 注意:转换过后是倒序! 例: n = 14458 则 a = 85441 去零 1234567void Remove_0(string *a){ //去'0' while (a->at(a->length() - 1) == '0' && a->size() > 1) { a->erase(a->length() - 1, 1); }} 转数字 (也是逆序) 1234567891011int trann(string str) //将s...
高精度模板
[TOC] 高精度系列倒存处理1234567891011121314151617181920212223242526272829303132333435363738394041 string A, B; cin >> A >> B; int len = max(A.length(), B.length()); for (int i = A.length() - 1, j = 1; i >= 0; ++j, --i) ar[j] = A[i] - '0'; for (int i = B.length() - 1, j = 1; i >= 0; ++j, --i) br[j] = B[i] - '0';``` A+B```cpp#include <iostream>#include <algorithm>#include <string>using namespace std;#define Maxlen 520in...