首页
关于
我
Search
1
洛谷 B2122 单词翻转 的wa问题
173 阅读
2
关于博客
119 阅读
3
在本地进行gpu训练的一些准备(不废话)
102 阅读
4
关于我想搭建服务器这件事
84 阅读
5
如果你读完题目不能第一时间想到异或,就应该好好学一下位运算了,这是个学习位运算的好时机.jpg
81 阅读
主页
技术博客
乱想
摄影
音乐
登录
Search
标签搜索
cpp
深度学习
cuda
C++
羔羊治小孩儿
累计撰写
10
篇文章
累计收到
161
条评论
首页
栏目
主页
技术博客
乱想
摄影
音乐
页面
关于
我
搜索到
10
篇与
的结果
2024-09-03
如果你读完题目不能第一时间想到异或,就应该好好学一下位运算了,这是个学习位运算的好时机.jpg
从这一题: 寻找字符的不同 得到一个方法:将两个字符串拼接成一个字符串,则问题转换成求字符串中出现奇数次的字符。而这个和之前一个题目类似: 直接看题解吧只出现一次的数字(题解) 位运算这个东西之前本科确实没怎么学过,是一个很常见的技巧,速度很快
2024年09月03日
81 阅读
23 评论
0 点赞
2024-09-01
无痛转c++刷题 之 auto
没细看,今天写一个代码的时候,为了减少时间复杂度,把一个vector中的nums.begin()从循环里拉出来,赋值给a,每次循环的时候可以省去求nums.begin()的时间.结果发现问题,我不知道这个数据类型是什么.不是int 不是 int* 不是vector.后来去查了,是 vector<int>::iterator 类型.我在查找的时候,发现有的代码这样写:auto a = nums.begin();后来才大致了解,这个auto是编译器猜我的数据类型,比较傻瓜.走投无路时可以试试目前了解不多,后续可以探索一些有什么其他特性,和缺点.
2024年09月01日
57 阅读
0 评论
0 点赞
2024-09-01
无痛转c++刷题 之 vector 容器
ps:没有自动保存,电脑蓝之后又丢失了 c刷题入门因为我通常使用python刷题,所以再去用c的时候会有一些地方很难受vector:参考:https://blog.csdn.net/wkq0825/article/details/82255984// 初始化 vector<int> a(10); //也可以不给出长度,或者(10,1)给定初值 // 增 a.push_back(5); //在a的最后一个向量后插入一个元素,其值为5 a.insert(a.begin()+1,5); //在a的第2个元素的位置插入数值5,如a为1,2,3,4,插入元素后为1,5,2,3,4 // 删 a.clear(); //清空a a.pop_back(); //删除a向量的最后一个元素 a.erase(a.begin()+1,a.begin()+3); //删除a中第1个(从第0个算起)到第2个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+3(不包括它) // 改 // 查 a.back(); //返回a的最后一个元素 a.front(); //返回a的第一个元素 a[i]; // 特别地 a.size(); //返回a中元素的个数; a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,其值随机,a.resize(10,2);是初值为2 a.empty(); //判断a是否为空,空则返回ture,不空则返回false a.swap(b); //b为向量,将a中的元素和b中的元素进行整体性交换 vector<int> a(b); //复制b到一个新的a vector<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素 a.assign(b.begin(), b.begin()+3); //b为向量,将b的0~2个元素构成的向量赋给a vector<int> a(b,b+7); //同理? a.assign(4,2); //使a只含4个元素,且每个元素为2 //#include<algorithm> 1)sort(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素进行从小到大排列 (2)reverse(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素倒置,但不排列,如a中元素为1,3,2,4,倒置后为4,2,3,1 (3)copy(a.begin(),a.end(),b.begin()+1); //把a中的从a.begin()(包括它)到a.end()(不包括它)的元素复制到b中,从b.begin()+1的位置(包括它)开始复制,覆盖掉原有元素 (4)find(a.begin(),a.end(),10); //在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置
2024年09月01日
45 阅读
0 评论
0 点赞
2024-08-24
洛谷 P1980 [NOIP2013 普及组] 计数问题
原题链接 是我退化了吗,我记得大一的时候还是大二的时候做过这个,好像还是一道蓝桥杯的题(也有可能是一次模拟周赛的题)当时,记得用CPP超时,还是一道填空,然后我不得不用一些“脑筋急转弯”的思路去计算,计数是有规律的。今天感觉有点难想,于是想先写个暴力解解压,结果...AC了然后我不甘心,还是想看看这题如何更快解出#include <iostream> #include <algorithm> #include <string> #include <vector> using namespace std; // 暴力 int num_x(int num, int x) { int ans = 0; string tt = to_string(num); int length = tt.size(); vector<char> arr(tt.begin(), tt.end()); for (int i = 0; i < length; i++) { if (arr[i] - '0' == x) ans++; } return ans; } int main() { int in_a; int x; cin >> in_a >> x; int ans = 0; for (int i = 1; i <= in_a; i++) { ans += num_x(i, x); } cout << ans << endl; return 0; } 暴力nlogn算法logn不难发现,即使不用计算机,答案也很容易求出,如:n=728,x=7可以按照这样的思路:个位7:73个 7,17,...,727十位7:70个 70~79,170~179,...,670~679百位7:29个 700~728答案是172后续再补上 cy
2024年08月24日
67 阅读
0 评论
0 点赞
2024-08-24
洛谷 B2122 单词翻转 的wa问题
B2122 单词翻转题目描述小明同学写单词的时候喜欢反着写,比如 hello 他会写成 olleh。给出小明同学写的一个句子,请你将所有的单词复原。## 输入格式共一行,一个字符串表示句子,单词之间以空格分隔。输出格式每个单词一行。输入输出样例输入 #1olleh dlrow输出 #1hello world说明/提示句子长度不超过100,仅包含小写字母和空格,不存在多余的空格。这里题目要求,要读取一行的信息,包含空格,传统的cin遇到空格就结束了而这里读取的内容时,结束没有任何标志,就是几个空格隔开的字符串组合而成的大字符串所以考虑使用了 getline() 函数,可以读取这一行的信息,遇到回车才会结束。(坏也坏在这)报错信息:Wrong Answer.wrong answer On line 1 column 1, read (ASCII 13), expected s{card-default label="报错" width="80%"}{/card-default}我的代码:#include <iostream> #include <vector> #include <string> using namespace std; int main() { string in_a; getline(cin, in_a); // 读取整行,包括空格 vector<char> arr1(in_a.begin(), in_a.end());// 字符串所有字符切成字符型不定长数组 string ans[101]; // 存放所有单词 int num_ans = 0; for (int i = arr1.size() - 1; i >= 0; i--) { // 反转所有单词,存到ans中 // *** 这里把arr1.size() - 1 改成 arr1.size() - 2 就可以了 if (arr1[i] != ' ') ans[num_ans] = ans[num_ans] + arr1[i]; else { num_ans++; } } for (int i = num_ans; i >= 0; i--) { // 逆置输出ans cout << ans[i] << endl; } return 0; } 其实,正常的Windows 系统中 \r\n 被默认为换行,在洛谷的Linux 测评机中, \n 被默认为换行,这就导致测评机使得 \r 被吃进一次性读取的带有空格的字符串中。所以最后报错会有 字符13,我查了阿斯克码表,排行第13的正是\r。而且一定是在getline得到的最后一个字符。考虑干掉他就行。然后去看了大佬的解法。#include<bits/stdc++.h> using namespace std; string s; int main(){ while(cin>>s){ reverse(s.begin(),s.end()); cout<<s<<endl; } return 0; }十分的精巧,cin读到信息了才进入循环,否则退出,完美解决空格和回车的问题,空格时结束,但可以进入下一次循环,如果是回车,下一次循环也不满足,也就进不来。
2024年08月24日
173 阅读
22 评论
0 点赞
1
2