WSL和JetBrain IDE的一些坑
CLion配合WSL中的OpenCV时会找不到头文件在CMakeLists.txt中的add_executable(xxx)后面加上
find_package( OpenCV REQUIRED )include_directories(${OpenCV_INCLUDE_DIRS})target_link_libraries( xxx ${OpenCV_LIBS} )
即可
洛谷string长度不正确
我这废物今天做P1320时,提交上去全部WA,放到洛谷的IDE里跑了下后发现长度比预期要多了1输出ASCII码,发现最后一位多了一位13,正常情况下,getline会读取到\n停止,但是此时结束符号变为了\r\n因此导致错误解决代码很简单如下
s.erase(std::remove(s.begin(), s.end(), '\r' ), s.end());s.erase(std::remove(s.begin(), s.end(), '\n' ), s.end());
当然也可以直接丢弃最后一个字符
一些板子&个人备忘
一些自己有时候会用的板子
两线段相交判断代码
struct Line { double x1; double y1; double x2; double y2;};bool intersection(const Line &l1, const Line &l2) { // 快速排斥实验 if ((l1.x1 > l1.x2 ? l1.x1 : l1.x2) < (l2.x1 < l2.x2 ? l2.x1 : l2.x2) || (l1.y1 > l1.y2 ? l1.y1 : l1.y2) < (l2.y1 < l2.y2 ? l2.y1 : l2.y2) || (l2.x1 > l2.x2 ? l2.x1 : l2.x2) < (l1.x1 < l1.x2 ? l1.x1 : l1.x2) || (l2.y1 > l2.y2 ? l2.y1 : l2.y2) < (l1.y1 < l1.y ...
std::sort排序导致内存错误
实例代码如下
struct Hero { std::string Name; int Moe; int Strength; int Mind;};bool compareMoe(const Hero &hero1, const Hero &hero2) { if (hero1.Moe == hero2.Moe) { return !hero1.Name.compare(hero2.Name); } return hero1.Moe > hero2.Moe;}int main() { // 一片输入 std::sort(heros.begin(), heros.end(), compareMoe); // 一堆输出}
看起来似乎没什么问题,但是运行起来会core dump,原因如下参照CPP Reference一个sort函数需要满足以下性质
反自反性: 也即compare(x, x)必须是false
非对称性 ...
卍字不到头
描述万字纹”卍”是中国古代传统纹样之一,是古代一种符咒,用做护身符或宗教标志,常被认为是太阳或火的象征。”卍”字在梵文中意为“吉祥之所集”,佛教认为它是释迦牟尼胸部所现的瑞相,有吉祥、万福和万寿之意。用”卍”字四端向外延伸,又可演化成各种锦纹,这种连锁花纹常用来寓意绵长不断和万福万寿不断头之意,也叫”万寿锦”。
国家博物馆正在筹备一个关于万字纹的展览,想请你做一个万字纹的背景图,要求如下:
给定 $N$ 个万字纹,万字纹由中心坐标 $(x,y)$ 和样式 $(p,q)$ 的形式给出。万字纹为中心对称图形,可看作由第二象限中的图案绕中心 $(x,y)$ 分别旋转$90^\circ,180^\circ,270^\circ$拼得,如下图所示:
背景图的中心点为原点 $(0,0)$长、宽分别为含万字纹纹样格子横、纵坐标绝对值极值的两倍(参考样例2)。没有纹样的格子用大写字母 $B$ 表示,有单层纹样的格子用 $S$ 表示,有多层纹样的格子用 $M$ 表示。
输入第一行一个整数 $N,N\le10^4$
随后的 $N$ 行,每行四个正整数 $x,y,p,q, |x|,|y|\le10^5,1\ ...
NPU第三届探索解密趣味密码比赛WriteUp
这是我第一次打CTF,所以也没啥成绩,各位权当一乐
签到按照提示得到flag{Welcome!}
百家姓百家姓解密http://www.atoolbox.net/Tool.php?Id=1050
小猪别跑培根密码解密
BASE233根据源码中
static const string base233_chars = "0B7UDomA2ZtJaOFdje43G9zRX1HTnfkhwqElc{WuLPI}bsypCY5SKrQN8gMiVvx6";
base233_chars也是64个字符,同时向下看
char_array_4[0] = (char_array_3[0] & 0xfc) >> 2;char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4);char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ( ...
在cin后cin.get不生效问题解析
来源: https://stackoverflow.com/questions/45201034/why-does-the-program-skip-cin-get-after-a-cin
在cin >> n;后,输入缓存区中其实还有一个\n因此在下一行cin.get(str,n);的时候,第一个读取到的就是\n因此会直接结束,解决方法是在cin后cin.get前,加上一行
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
NOJ1009 2的N次方
循环的地方需要稍微注意下
#include <bits/stdc++.h>int main() { int N; std::cin >> N; int result[400], length = 1; memset(result, 0, sizeof(result)); result[0] = 1; for (int i = 1; i <= N; ++i) { // 进位不能放在循环中计算,小黄鸭一下就懂了.....我自己傻逼了半天 int doPlusOne = 0; for (int j = 0; j < length; ++j) { result[j] = result[j] * 2 + doPlusOne; doPlusOne = result[j] / 10; result[j] = result[j] % 10; if (doPlusOne != ...
NOJ1008 第几天
比较简单,主要是需要稍微算一下,原本想用时间戳偷懒的后来发现不如直接算….
#include <bits/stdc++.h>const int dayPerMonth[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int main() { while (true) { int year, month, day; std::cin >> year; if (year != -1) { std::cin >> month >> day; int leapYear = 0, sum = 0; // 闰年总数计算 for (int i = 2000; i < year; ++i) { if ((i % 4 == 0 && i % 10 ...
NOJ1005 多项式加法
看了一圈答案没有用STD Map解的,自己写踩了不少坑,尤其是当系数等于1….属实是没想到了
中间很多代码重复的,懒得再解耦了
#include <bits/stdc++.h>int main() { std::map<long long, long long> final; for (int i = 0; i < 2; ++i) { std::string result = ""; while (true) { long long a, b; std::cin >> a >> b; // 判断是否结束 if (a == 0 && b == -1) { break; } if (a == 0) { contin ...









