OJ刷题
EarnForLive
这个作者很懒,什么都没留下…
展开
-
CLion刷题方法
1、安装插件2、编写程序,并使用插件功能。右键Add executable。。。。。。3.在Project根目录右键Reload CMake Project4、在如下图所示的框中选择新程序的编译结果。原创 2020-12-12 18:15:28 · 1699 阅读 · 7 评论 -
mac vscode c++ 执行前自动重新编译
mac vscode c++ 执行前自动重新编译原创 2020-11-17 17:10:12 · 338 阅读 · 0 评论 -
mac配置c/c++debug环境
使用Cmake官方文档原创 2020-07-29 21:21:40 · 172 阅读 · 0 评论 -
VS Code下调试C/C++代码的配置
在VS Code下使用mingw库编译调试算法题无故出错后,尝试使用TDM_GCC替代mingw成功。参考教程在使用过程中请注意:调试时至少添加一个断点,否则程序会一闪而过。一般不要在程序主程序中使用getchar()或system("pause")来达到上述目的。重要的tasks.json文件备案:{ "version": "2.0.0", "command": "g++", "args": ["-g","${file}","-o","${fileBasenameNo原创 2020-05-09 19:46:42 · 663 阅读 · 0 评论 -
VS Code 不能调试c/c++的情况
调试文件的绝对路径中不能有汉字。改成英文打上断点就可以了,不打断点直接显示结果,不显示调试过程。原创 2020-05-02 23:58:42 · 1535 阅读 · 0 评论 -
智能读取一行的数字
#include<bits/stdc++.h>using namespace std;int main(){ priority_queue<int,vector<int>,less<int> > q; int a,n; scanf("%d",&a); q.push(a); //过滤空格的方法 while(getchar...原创 2020-04-21 00:35:46 · 200 阅读 · 0 评论 -
用两个队列实现一个栈
C++面向对象编程#include<bits/stdc++.h>using namespace std;template<typename T>class CStack{//定义类型public://方法 CStack(){}; ~CStack(){}; void push(const T& node); void pop(...原创 2020-04-19 18:19:31 · 113 阅读 · 0 评论 -
深度好文:让程序在崩溃时体面的退出
让程序在崩溃时体面的退出原创 2020-04-12 23:50:50 · 153 阅读 · 0 评论 -
字典树与AC自动机
字典树教程字典树 建树 查找AC自动机是在字典树的基础上加入了fail指针,使其实现类似于KMP算法中类似next数组的功能。AC自动机 简单AC自动机 详细在这里插入代码片在这里插入代码片...原创 2020-03-31 00:43:29 · 183 阅读 · 0 评论 -
数独问题 解数独
数独是一个非常有名的游戏。整个是一个9X9的大宫格,其中又被划分成9个3X3的小宫格。要求在每个小格中放入1-9中的某个数字。要求是:每行、每列、每个小宫格中数字不能重复。 现要求用计算机求解数独。输入描述:输入9行,每行为空格隔开的9个数字,为0的地方就是需要填充的数字。输出描述:输出九行,每行九个空格隔开的数字,为解出的答案。示例1输入0 9 0 0 0 0 0 6 0...原创 2020-03-25 01:15:06 · 779 阅读 · 0 评论 -
顺子问题
问题链接class Solution {public: bool IsContinuous( vector<int> numbers ) { int jilu[14]; memset(jilu,0,sizeof(jilu)); int mini=20,maxi=-1; if(numbers.size()<5) return f...原创 2020-01-12 22:20:22 · 122 阅读 · 0 评论 -
简化思维,避免模拟
解法:逆向思维,抓住本质,原理在代码注释里。#include<bits/stdc++.h>using namespace std;int a[500005];int main(){ long n; memset(a,0,sizeof(a)); scanf("%d\n",&n); for(long i=1;i<=n;i++) scanf("%d",&a...原创 2020-01-10 21:20:15 · 110 阅读 · 0 评论 -
外廓线问题
#include<bits/stdc++.h>using namespace std;struct node{ int x; int y;}nn[500005];bool cmp(node a,node b){ if(a.y==b.y) return a.x<b.x; else return a.y>b.y;}int main(){ int ...原创 2020-01-10 19:51:00 · 197 阅读 · 0 评论 -
合法括号序列判断——利用栈的特性
题目链接class Parenthesis {public: bool chkParenthesis(string A, int n) { // write code here stack<char> st; for(int i=0;i<A.length();i++){ if(A[i]!='(' ...原创 2020-01-09 21:38:49 · 135 阅读 · 0 评论 -
鸡鸭分类问题——抽象出数学模型
问题链接解法:抽象出数学模型,用统筹的思想解决问题。#include<bits/stdc++.h>using namespace std;int main(){ string str; int num; while(cin>>str){ int sum1=0,jian1=0,jian2=0,num=0; for(int i=0;i<str.l...原创 2020-01-09 20:44:09 · 419 阅读 · 0 评论 -
迷宫问题的步数——组合数学(组合问题)
题目链接解法:这个题看似是搜索或者动态规划等问题,但仔细一想如果只能向两个方向单向走的话,那么任何一种走法的总步数都是一样的,并且向某个方向走的步数也是一样的,那么这个问题就变成了一个组合问题,即总共走n+m步,从这n+m步中选出n步向某个方向走,共有几种排列方法。#include<bits/stdc++.h>using namespace std;int main(){...原创 2020-01-09 19:03:16 · 629 阅读 · 0 评论 -
翻转字符串
题目链接虽然说是翻转,但不是就地翻转,而是头部字符依次转到尾部。解法:两个相同的字符串前后一拼接,那要被检测的字符串(若是翻转而来)就一定在拼接后的字符串中了,然后查找即可。class ReverseEqual {public: bool checkReverseEqual(string s1, string s2) { s1=s1+s1; if(s1...原创 2020-01-09 18:28:54 · 148 阅读 · 2 评论 -
字符串——参数解析
牛客网——参数解析#include<bits/stdc++.h>using namespace std;int main(){ string st; string shuchu[100]; getline(cin,st);//读取整行字符串 int i=0,num=0; bool yn=0; int qian,hou; qian=0; /* for(int ...原创 2020-01-09 12:53:28 · 881 阅读 · 0 评论 -
反转链表——自定义位置反转
#include<bits/stdc++.h>using namespace std;struct ListNode{ int val; ListNode* next;};int main(){ ListNode* head; ListNode* st; head=new ListNode; head->val=-1;//头结点设为-1(可以认为为空)...原创 2020-01-07 21:50:32 · 162 阅读 · 0 评论 -
反转链表
生成一个链表,然后将链表反转。迭代法**C++//迭代法#include<bits/stdc++.h>using namespace std;struct ListNode { int val; ListNode* next;};struct ListNode* reverseList(struct ListNode* head) { //把地址传进来 str...原创 2020-01-07 20:20:48 · 96 阅读 · 0 评论 -
约瑟夫环问题
问题介绍:约瑟夫环问题的起源来自犹太历史学家约瑟夫和他的朋友以及39其余的犹太人,总共41人为了躲避敌人,藏在一个山洞中,9个犹太人决定宁愿死也不被敌人抓到,于是决定自杀,所有人排成一个圈,由第一个人开始报数,每当数到3,就自杀。这个游戏接着从自杀的位置开始,还是从1数到3。依次类推,约瑟夫将朋友和自己安排在了16和31的位置,最后顺利逃过了自杀这一劫,因为最后就剩他一个人了。解题思路:j...原创 2020-01-06 10:54:50 · 362 阅读 · 0 评论 -
避免使用结构体的处理技巧
原题https://www.luogu.org/problemnew/show/P1223题解原创 2019-02-14 16:02:01 · 231 阅读 · 0 评论 -
贪心
原题https://www.luogu.org/problemnew/show/P1094题解方法一:双向移动方法二:桶排+标记方法二优化:#include<bits/stdc++.h>using namespace std;int main(){ int w,x,n,p[201],ans=0,mm; cin>>w>>n; for(in...原创 2019-02-14 20:26:53 · 102 阅读 · 0 评论 -
贪心——选择不相交区间问题(线段覆盖)
原题https://www.luogu.org/problemnew/show/P1803题解题目的大意是给出比赛的开始和结束的时间,求解最多能参加多少场比赛。因为所有的比赛时间点在同一个时间轴上,所以结束时间越早的比赛就是必须参加的,那么我们可以通过结束时间点进行从大到小的排序。由于一个时间点只能参加一个比赛,那么就需要剔除时间上有交叉的比赛(剔除比赛时间较长的一个)。可以使用一个pos记录...原创 2019-02-14 21:42:08 · 669 阅读 · 0 评论 -
带数学推导的贪心(高精度乘除法应用)
原题https://www.luogu.org/problemnew/show/P1080题解这个国王太会玩了!!【题意分析】首先,由于一个大臣所获得的金币数只取决于他右手的金币数,所以前面的大臣顺序并不影响后面大臣的金币数,但会影响自己手中的金币数。然后便想到了贪心。但发现这样子并不能得出最优解。然后经过一番推导,便可以得知一个大臣的左右手乘积越大,就越要放到队伍后面。然后就开始了玄妙...原创 2019-02-14 23:45:14 · 189 阅读 · 0 评论 -
利用位运算降低复杂度为log2N
原题https://www.luogu.org/problemnew/show/P1909解答只买一种包装的,所以只要算出每种包装需要花的钱就可以了。我第一个想到的办法是模拟累加直到买到需要的数量虽然作为水题,并不需要什么优化,但是在此我还是介绍一种实用的优化:位运算使用位运算来进行大幅度累加,是倍增的思想i&lt;&lt;1 等同于 i*2代码如下:#include&lt;c...原创 2019-02-07 23:51:52 · 675 阅读 · 0 评论 -
位运算的一个例子
原题https://www.luogu.org/problemnew/show/P1008题解状压朴素也就是用二进制代替布尔数组, 然后朴素地给出代码。#include using namespace std;int main(){for (int i=192;i&lt;=329;i++){//枚举A最多329int p=i,j=i&lt;&lt;1,k=i3,t=0;whi...原创 2019-02-06 13:11:36 · 175 阅读 · 0 评论 -
巧妙思想(利用数组进行标记和组合)
原题https://www.luogu.org/problemnew/show/P1149题解#include#include&amp;lt;math.h&amp;gt;using namespace std;int x[20],n,k;//依照题目所设bool isprime(int n){//判断是否质数int s=sqrt(double(n));for(int i=2;i&amp;lt;=s;i++)...原创 2019-02-07 23:52:10 · 203 阅读 · 0 评论 -
递归递推的两个启蒙题(1)
选数https://www.luogu.org/problemnew/show/P1036解析:选数过程使用递归题解#include#include&amp;amp;lt;math.h&amp;amp;gt;using namespace std;int x[20],n,k;//依照题目所设bool isprime(int n){//判断是否质数int s=sqrt(double(n));for(int i=2;...原创 2019-02-07 23:50:15 · 130 阅读 · 0 评论 -
递归递推的两个启蒙题(2)
原题https://www.luogu.org/problemnew/show/P1028解析:可以用递归也可以用递推题解https://www.luogu.org/problemnew/solution/P1028原创 2019-02-07 23:49:50 · 95 阅读 · 0 评论 -
输入输出优化
输入输出优化在输入输出几十万,几百万的数据时会有几百ms的优势。一般来说我们读入都用的scanf和cin,实在必要的时候可以用getchar读入优化。然后众所周知,cin比scanf慢,getchar最快。https://blog.csdn.net/liyizhixl/article/details/54412459输入优化:char buffer[maxn],*S,*T; inlin...原创 2019-02-21 17:31:26 · 279 阅读 · 0 评论 -
高精度加减乘除及进制转换及压位
加法原题 https://www.luogu.org/problemnew/show/P1601题解#include&amp;amp;lt;bits/stdc++.h&amp;amp;gt;using namespace std;char a1[1000],b1[1000];int a[1000],b[1000],c[1000];int main(){ memset(c,0,sizeof(c));//初始化 ...原创 2019-02-16 01:53:08 · 326 阅读 · 0 评论 -
OJ术语及常见的问题
https://blog.csdn.net/JNingWei/article/details/78425824原创 2019-02-16 01:53:50 · 525 阅读 · 0 评论 -
利用递归实现DFS
原题https://www.luogu.org/problemnew/show/P2089题解#include#includeusing namespace std;int n,ans1,ans2[10001][11],sum,a[11];void trys(int t,int m){if(t>10)//递归返回条件{if(m==n){ans1++;for(int ...原创 2019-02-09 00:53:02 · 374 阅读 · 0 评论 -
利用数学知识来优化计算——哥德巴赫猜想问题
原题https://www.luogu.org/problemnew/show/P1579普通解答https://www.luogu.org/problemnew/solution/P1579优化解答转载 2019-02-09 01:17:41 · 167 阅读 · 0 评论 -
打表计数法
原题https://www.luogu.org/problemnew/show/P1328题解https://www.luogu.org/problemnew/solution/P1328#include <bits/stdc++.h>using namespace std;const int MAXN = 200 + 10;int n, na, nb, a[MAXN], b...原创 2019-02-09 20:00:57 · 146 阅读 · 0 评论 -
priority_queue优先队列(可在Dijkstra中进行堆优化)
优先队列的原理是堆,运用的是堆排序,每次只能取出堆顶元素使用方式:https://www.cnblogs.com/flyoung2008/articles/2136485.html原创 2019-02-19 20:44:01 · 442 阅读 · 0 评论 -
模拟类题型的思维过程优化——模拟是模拟抽象实质而不是模拟具体过程
原题https://www.luogu.org/problemnew/show/P1540题解https://www.luogu.org/problemnew/solution/P1540本题不必使用队列来模拟具体的先进先出内存换出策略本题程序可由图一优化到图二...原创 2019-02-09 23:35:34 · 122 阅读 · 0 评论 -
在结构体中利用重载运算符进行快速比较、计算
https://blog.csdn.net/qq_37920580/article/details/75069522https://blog.csdn.net/sunny1996/article/details/51242184https://blog.csdn.net/sunny1996/article/details/51242184转载 2019-02-22 01:38:38 · 442 阅读 · 0 评论 -
简单的动态规划思想
原题https://www.luogu.org/problemnew/show/P1031题解这道题完全不需要贪心。引理:1、纸牌一定可以分到一样多。(题目条件)2、相邻两堆牌间最多只会移动纸牌一次。(最优方案)每次移动可以看作相邻两堆中左边一堆i往右边一堆i+1移动x张1)x>0 左往右移动1次2)x<0 右往左移动1次3)x=0 不移动。当且仅当此时牌堆1-i总牌...原创 2019-02-10 16:39:29 · 151 阅读 · 0 评论
分享