C++
098274983
这个作者很懒,什么都没留下…
展开
-
常见WA错误总结(待更)
好久没刷题了……虽然最近也就写了几个题。又是疯狂WA。真的快疯了,手里积压的WA大概有几十个题了。以后有空慢慢debug。以下大部分都是程序设计实习课的时候犯的了,现在犯的少多了。但是抵挡不住太菜了疯狂WA啊……以后应该会更新这篇文章。警戒自己,造福后人(如果有人看到的话)以下为主体部分常见WA错误:1.算法使用错误。好像这个的错误慢慢变多了……经常想当然,没经过证明就开始用自己想的算...原创 2020-03-26 13:05:07 · 3048 阅读 · 2 评论 -
关于二分查找
因为二分查找部分写挂而WA已经很多次了。while (l < r){ int mid = (l + r) / 2; if (condition) r = mid; else l = mid + 1;}cout << mid << endl;这样写会WA而int ans;while (l <= r){ int mid = (l + r)...原创 2020-02-10 15:05:04 · 112 阅读 · 0 评论 -
哈希表:正方形
摘一下题目:正方形总时间限制: 3500ms 内存限制: 65536kB描述给定直角坐标系中的若干整点,请寻找可以由这些点组成的正方形,并统计它们的个数。输入包括多组数据,每组数据的第一行是整点的个数n(1<=n<=1000),其后n行每行由两个整数组成,表示一个点的x、y坐标。输入保证一组数据中不会出现相同的点,且坐标的绝对值小于等于20000。输入以一组n=0的数据结尾...原创 2019-12-10 19:01:59 · 1914 阅读 · 0 评论 -
置换选择排序
一条咸鱼……瘫。置换选择排序,记得考虑顺串长度大于堆大小的情况。大概不能边听音乐边写代码……虽然现在还在听……原创 2019-12-01 21:36:03 · 655 阅读 · 0 评论 -
trie图:Computer Viruses in Planet Pandora
今天de了一天bug嗯,什么也没干,一大堆ddl等着我但是我还是义无反顾地扑向oj。trie图其实就是kmp算法的一个针对多子串的优化模式。本来是要每个子串找,但是把它整合成了一棵树,就省去了遍历子串的o(m)时间,而prev实际上是next数组的一个优化,trie树对应brute算法,trie图就对应kmp算法。在说这道题之前说一下那个躲不开的病毒,最后tle了,应该剪枝,把是否有效设置成全...原创 2019-10-20 21:22:49 · 137 阅读 · 0 评论 -
线段树:Difficult Lost Cows
这题居然一遍就AC了,当然我问了别人才得到的思路……线段树本质上是一个二分操作,把区间分成左右两个部分,用来存储这个区间的某些信息,比如部分和、最大值什么的。构造一棵二叉树。emmm,据说树状数组能做的题线段树也能做,早知道刚刚那个最长上升序列就不纠结那么久了(虽然我已经忘了怎么做了,把代码贴这吧)题目描述N (2 <= N <= 100,000) cows have uni...原创 2019-10-20 16:56:55 · 292 阅读 · 0 评论 -
树状数组:不好做的最长上升子序列
一个月前的题目了,数算实习以来就没独立AC过题目(原创 2019-10-20 16:37:42 · 555 阅读 · 0 评论 -
并查集:A bug's life
一个多月前的题目了。数算实习的作业有三个题,食物链,冰阔落和这一道。冰阔落是模板题就不写了,食物链拼死拼活过不了。这个题参考了标程之后知道怎么回事了就写写。题目:描述BackgroundProfessor Hopper is researching the sexual behavior of a rare species of bugs. He assumes that they fe...原创 2019-10-20 14:01:15 · 197 阅读 · 0 评论 -
在调用函数中使用new和malloc等函数(或关键字)为指针分配空间
如果你直接把指针作为参数传递,那么在函数结束的时候这一部分空间会被回收(这时候把指针当成整数看待)。正确的办法是使用**,也就是指向指针的指针,*ptr = malloc(sizeof(node)),ptr是指向指针的指针。这样才能成功在函数返回的时候分配成功空间。这里把指针也理解成普通变量(都是对它们本身进行操作,而不是对指针指向的对象进行操作)就可以了。...原创 2019-10-18 12:07:40 · 522 阅读 · 0 评论 -
一篇不怎么算解题报告的解题报告:动态规划:课程大作业
我是不是应该感谢这道题让我学会了对拍?对拍就是利用输入输出重定向弄到文件里面,具体代码就是这两行: freopen("hwin.txt", "r", stdin); freopen("hwoutstd.txt", "w", stdout);字典序真的天坑……不过那个错误真的弱智到爆炸……题目:描述小明是北京大学信息科学技术学院三年级本科生。他喜欢参加各式各样的校园社团。这个学期就要...原创 2019-05-26 00:32:50 · 526 阅读 · 1 评论 -
关于static局部变量
以两段代码为例#include <iostream>using namespace std;class Number {public: int num; Number(int n): num(n) {} Number(Number & _this){ num = _this.num; //cout << _thi...原创 2019-05-17 13:42:13 · 337 阅读 · 1 评论 -
关于cin(可能以后会修补)
纪念一下。如果要输出int或者double类型的变量,cin居然会自动在字符类型前面停住,颇有些scanf的风范。比如以下代码:#include <iostream>using namespace std;int main() { double x; cin >> x; cout << x; return 0;}输入12.0abcdefg,输...原创 2019-05-17 21:22:42 · 99 阅读 · 0 评论 -
深度优先搜索的几道题目
感觉还是比动规简单一些的……但是最近脑子有点糊。首先是要注意邻接表是有两种的,在稀疏图中,最好用vector存每个顶点的边的信息,而不是稠密图中的G[x][y]。第二是步数最少的路径……存path然后把path拷贝到bestpath……要不然会乱。我犯了很多次傻然后后面debug。这个错误很蠢但是我一开始也没想清楚。下面是一些具体问题。百练2815 城堡问题基本上可以算一个连通图的模板题...原创 2019-06-05 16:40:27 · 810 阅读 · 0 评论 -
我又来提醒自己了啊啊啊啊啊啊啊啊啊啊啊
这个错误不止一次犯了。刚又debug了一小时好的手动微笑。这题目是拯救行动,也就是鸣人和佐助的简单版本。我用的郭神的方法二死都过不了,死都找不出哪错了。OK最后发现是int legal(int x, int y) { if (x < 0 || x >= M || y < 0 || y >= N) return 0; if (visited[x][y]) retur...原创 2019-06-05 20:09:25 · 125 阅读 · 0 评论 -
关于广搜
其实简单广搜的话本质上就是套路。但是要注意什么呢,就是判重的时候,跟动规是一样的道理,就是用k维数组表示k个参数的状态,你不能3个参数的状态用二维的数组来判重那就不行了。比如:百练4115:鸣人和佐助我一开始做了拯救行动那个题,是用郭神的方法做的,即再弄一个killed的布尔变量(实际上就是把直接t+2的步骤分成了两步),但是我只用了visited[maxn][maxn]数组也过了,于是自作聪...原创 2019-06-05 21:04:14 · 98 阅读 · 0 评论 -
还是广搜……wsl
有限制条件的广搜,判重的数组(或其他东西)一定,要,是K维的啊啊啊啊啊啊……也就是,这个状态由多少个参数决定,判重数组就要是多少维的。包括预处理的时候,待查找的数组也要是多少维的。这个好像之前有博客里写过……背思修大概背傻了。例题:What a ridiculous election?描述In country Light Tower, a presidential election is...原创 2019-06-14 13:39:13 · 185 阅读 · 0 评论 -
解题报告……?神奇的数列
发现最近一段时间发生了一些事情加上准备其他科的期末考试导致两个礼拜基本没有编程,算法能力直线下降……开始担心后天的考试了,大概率凉凉。好的,正文。描述一个正整数数列,可以将它切割成若干个数据段,每个数据段由值相同的相邻元素构成。该数列的神奇之处在于,每次切除一个数据段后,该数据段前后的元素自动连接在一起成为邻居。例如从数列“2 8 9 7 7 6 9 4”中切除数据段“7 7 ”后,余下的...原创 2019-06-19 16:44:14 · 1431 阅读 · 0 评论 -
深度优先搜索:忍者道具
这题用动规想了巨久……结果看了郭神的答案发现是深搜。也是,题面太像一个背包问题了,而我一开始还用了贪心……也是智障天下第一。不过贪心肯定是不行的,但是动规我又想不出怎么做。描述忍者道具有很多种,苦无,飞镖,震爆弹。L君热衷于收集忍者道具,现在他有N个道具,每个道具的重量分别是C1、C2…CN。现在他想把这N个道具装到载重量为W的工具包里,请问他最少需要多少个工具包?输入第一行包含两个用空格...原创 2019-06-20 08:47:11 · 1076 阅读 · 0 评论 -
好久没写代码了,水平退回解放前
注意,cin.getline会吞入结尾的\n!!!慎用。其他的待补充。原创 2019-07-12 09:48:58 · 421 阅读 · 0 评论 -
我求求你好好重载struct的小于号吧
每个变量都要比较啊……吐血……一开始还以为是输入出了问题,不能装逼图简洁啊……原创 2019-07-19 21:31:14 · 105 阅读 · 0 评论 -
有关树状数组的数组编码
一个二维树状数组的问题。POJ1195 mobile phone我的二维数组是按照题给的一样0,0开始编码,其他的都相同(源代码如下),把题目中x,y=0的情况映射成x,y=-1的情况,直接返回0,结果永远TLE。然后我把它全部改成从1,1开始编码就AC了。不知道为什么。我自认毫无问题。`总之下次养成从1,1开始编码的好习惯吧(在碰到求和数组的问题上)#include <iostre...原创 2019-09-22 08:47:43 · 108 阅读 · 0 评论 -
有关位运算
在搜索的时候被位运算坑死。原来优先级是:<<和>>是要低于+、-的(vs2017),反正,以后都加括号啦还有在unsigned long long的时候记得要强制类型转换,否则要算负数就死了还要在常数后面加ull以及对各种变量进行适时的强制类型转换(虽然TMD现在还没ac那道题)...原创 2019-03-10 16:50:37 · 83 阅读 · 0 评论 -
枚举 特殊密码锁
这题一直通过率100%,ssfd……而本渣还是因为智障而WA了……题目描述有一种特殊的二进制密码锁,由n个相连的按钮组成(n<30),按钮有凹/凸两种状态,用手按按钮会改变其状态。然而让人头疼的是,当你按一个按钮时,跟它相邻的两个按钮状态也会反转。当然,如果你按的是最左或者最右边的按钮,该按钮只会影响到跟它相邻的一个按钮。当前密码锁状态已知,需要解决的问题是,你至少需要按多少次按钮...原创 2019-05-11 13:42:32 · 191 阅读 · 0 评论 -
枚举 拨钟问题
终于程设学到算法了。人生第一篇解题报告~虽然这题比较简单。但是还是WA了许多次。题目:描述有9个时钟,排成一个3*3的矩阵。现在需要用最少的移动,将9个时钟的指针都拨到12点的位置。共允许有9种不同的移动。如下表所示,每个移动会将若干个时钟的指针沿顺时针方向拨动90度。移动 影响的时钟1 ABDE2 ABC3 BCEF4 ...原创 2019-05-11 13:36:30 · 354 阅读 · 0 评论 -
关于C++中产生随机数
记得,当程序高度依赖随机数实现算法的时候(比如蒙特卡洛搜索,模拟退火),要产生以毫秒为单位的随机数种子,要不然完全在浪费生命……关于如何产生随机数种子:#include <time.h>...int seed=time(NULL);srand(seed);int m=rand()%RAND_MAX;关于如何产生以毫秒为单位的随机数种子:#include <tim...原创 2019-03-13 14:32:07 · 248 阅读 · 2 评论 -
有关二维数组类
有关二维数组类需要用指向指针的指针,要不然[]操作符重载没办法操作在new分配内存的时候,语法如下:`int **p=new int*[4];for(int i=0;i<4;i++){ p[i]=new int[3];}以上代码模拟一个4*3的二维数组另外sizeof方面,在memset或memcpy的时候,一定要维数和int类型相乘,和二维数组不一样的是,这里的内...原创 2019-03-08 08:48:03 · 694 阅读 · 0 评论 -
有关含指针的类的runtime error问题
有关含指针的类的runtime error问题上课的东西给忘了。一般来说含有指针的类要注意以下几个方面:要自己写无参构造函数除非是Dev要自己写复制构造函数,注意的问题和赋值符号的=问题相同,不要随意!切记切记。要把=号重载,即不仅要根据需要把const char*给对象类型赋值的=号重载,还要把对象之间赋值的=号也重载一道程序填空题耗费了几个小时,现摘如下:#include <...原创 2019-03-08 08:43:00 · 312 阅读 · 0 评论 -
关于内存访问错误的一点小问题
注意在宽度优先搜索中,如果用数组来记录合法状态的话,判断状态合法性的语句要放在数组之前,比如A&&B,必须A是判断合法性的语句,否则会发生数组越界或访问不可访问内存。...原创 2019-03-11 13:25:17 · 301 阅读 · 0 评论 -
写一个600行的小作业debug时候的一点感想,算是为大作业做点儿准备吧
首先,确认数组真的有下标了……虽然这很弱智但是真被它害惨了其次,最重要的一点,一个对象的size和指向这个对象的指针的size是不一样的!这个在vs2017当中被忽略了,然后在Dev中体现了出来,在qsort函数那里出了问题还有,在构造对象的时候,所有的指针,都,要,初,始,化!另外,对于多组数据输入,记得全局变量的重新!初!始!化!!!这个应该放第一条,写每个魔兽的时候都**出现了这个错误...原创 2019-05-05 10:42:29 · 165 阅读 · 0 评论 -
有关C++中的局部变量
返回的时候,如果局部变量是一个指针,返回的是局部变量的地址是会出错的。因为返回的时候,这个局部变量已经消亡了,返回地址会是一片未知地址,造成麻烦。解决办法:在函数中的局部变量前面加上static,成为静态变量。具体例子:#include <iostream> #include <cstring> #include <cstdlib> #includ...原创 2019-03-09 16:21:18 · 414 阅读 · 0 评论 -
关于C++的继承与派生
好吧没有听讲还是不行……题目是string继承的MyString类,应该很多地方都有了,居然编译迟迟过不了……我卡在了那个=的重载上:MyString &operator=(string a) { int len = a.length(); for (int i = 0; i < len; i++) { this->operator[](i) = a[i];...原创 2019-03-14 10:29:39 · 190 阅读 · 0 评论 -
C++中运算符重载中的一些内存问题
描述程序填空,输出指定结果输入无输出abcd-efgh-abcd-abcd-abcd-efgh-efgh-cabcd-ijAl-ijAl-mnopqrst-abcd-abcd-qrst-abcd- uvw xyzaboutbigmetakeabcdqrst-abcd-题目描述如图。这是题目的两块代码:#include &lt;cstdlib&gt;...原创 2019-03-14 08:55:28 · 212 阅读 · 0 评论 -
关于scanf输入个人碰到的一些小问题
1.如何输入带空格等的字符串:在%后不需要加s,直接[^\n]等。**char name[30];scanf("%[^,]",name);2.对于为什么上述语句之后还要输入其他整数却无法输入的问题。在dev中,如果写如下语句:class Student{ private: char name[30]; int age; int id; public: void in...原创 2019-02-24 14:05:43 · 207 阅读 · 0 评论 -
有关C++中while(cin>>x)的实现
涨姿势了,原来bool运算符也能重载。这里重载>>运算符只是更新一个状态,当状态为false的时候返回。然后编译器总是提示bool类型和对象类型不兼容,也就是同一个函数中不能既返回对象又返回布尔类型。这样就要bool运算符重载,把对象强制转换成bool类型。这是我的理解,欢迎批评指正。...原创 2019-03-23 16:33:47 · 716 阅读 · 0 评论 -
关于上次的魔兽3和这次的文件输入输出
最后两个bug,一个是武器排序,只排了totalweapon的数目,应该排10,也就是整个武器库大小,因为在排序函数中考虑了空指针的情形。另外,把delete删掉就能过的原因是,有多个指针指向了同一块内存分配的空间,即,new出来的空间后面又被赋给了其他指针,这样通过其他指针删掉new出来的空间就有问题。记住delete只能删掉自己new出来的空间,如果删掉了其他空间就会出问题。这次的读取bm...原创 2019-05-05 10:42:23 · 131 阅读 · 0 评论 -
递归 谢尔宾斯基三角形
好吧,WA了总共接近两个小时,发现是数组开太小了,但是2的10次方不应该是1024吗???一开始傻逼没想到用数组存,直接打印想了巨久。naive。#include <iostream>#include <cmath>#include <cstring>using namespace std;char triangle[2048][2048];voi...原创 2019-05-19 08:02:15 · 1796 阅读 · 0 评论 -
关于函数模板和函数指针的一道题
虽然我现在还没AC此题……2018程设期中考试的A07输入第一行是整数n,表示有n组数据每组数据有2行第一行是10个整数第二行是4个不带空格的字符串,它们之间用空格分隔输出先输出10个整数里面的第3个到第7个的平方和再输出10个整数里从第3个到第7个,按照字符串的方式,顺序连接的结果再输出4个字符串里,第1个到第4个串中,所有字符的ASCII码加和得到的整数再输出4个字符串...原创 2019-05-05 11:35:55 · 171 阅读 · 0 评论 -
热血格斗场和冷血格斗场
好的吧,过去很久的题目了,现在补一发。跟格斗场有仇。每个都提交了十几次。先摘一下题目。5:热血格斗场描述为了迎接08年的奥运会,让大家更加了解各种格斗运动,facer新开了一家热血格斗场。格斗场实行会员制,但是新来的会员不需要交入会费,而只要同一名老会员打一场表演赛,证明自己的实力。我们假设格斗的实力可以用一个正整数表示,成为实力值。另外,每个人都有一个唯一的id,也是一个正整数。为了...原创 2019-05-05 10:41:22 · 492 阅读 · 0 评论 -
关于bitset的实现
这算不算我的第一篇解题报告?虽然不是算法题。原题:程序填空,实现一个类似于STL中bitset的MyBitset,输出指定结果。#include <iostream>#include <cstring>using namespace std;template <int bitNum>struct MyBitset { char a[bitNum/...原创 2019-04-21 11:27:50 · 1504 阅读 · 0 评论 -
关于函数对象
以题目来说明吧。#include <iostream>#include <cmath>#include <algorithm>#include <string>using namespace std;template <class T1,class T2>struct Closer {};int Distance1(...原创 2019-03-28 10:33:20 · 98 阅读 · 0 评论