include

一起学 c++(二)

房东的猫 提交于 2020-03-30 17:22:30
我们继续之前的内容 #include "stdafx.h" #include <iostream> using namespace std ; int _tmain ( int argc , _TCHAR * argv []) { cout << "HelloWorld" << endl ; return 0; } C++ 程序是什么?其实就是预编译指令 + 代码 + 注释 1. 预编译指令 预编译指令以“ # ”开头,是发给编译器的命令,在编译代码之前就完成了。 我们这里有 2 个预编译指令 #include "stdafx.h" #include <iostream> 如果使用的是 ”” 来包含一个文件名,就说明编译器首先要在当前的项目里寻找这个文件,如果没有就去编译器的包含目录下寻找这个文件。 如果使用的是 <> 就说明该文件是在系统目录库的库文件。 2. 程序代码 首先我们第一句是: using namespace std ; 这里使用的是命名空间,具体是什么以后会跟大家说滴,呵呵,这里我简单说下,我们在使用后面的 cout 和 endl 都是属于 std 的命名空间里,我们使用前如果加了这一句就会很方便,不然我们写 HelloWorld 那句就要这么写了: std :: cout << "HelloWorld" << std :: endl ; 后面就是核心内容了

POJ 3050 Hopscotch

橙三吉。 提交于 2020-03-30 15:51:56
http://poj.org/problem?id=3050 深搜 + set去重 这道题的深搜很简单 每满六次后 insertin进set即可 最终果就是set.size() 1 #include <iostream> 2 #include <fstream> 3 #include <stdio.h> 4 #include <string> 5 #include <set> 6 7 using namespace std; 8 9 string srec; 10 char rec[8]; 11 int d[4][2] = { {-1,0}, {0, 1}, {1, 0}, {0, -1} }; 12 int grid[8][8]; 13 14 set<string> str_set; 15 16 bool check(int x, int y) 17 { 18 if (x < 0 || y < 0 || x >= 5 || y >= 5) return false; 19 return true; 20 } 21 22 void dfs(int x, int y, int n)//深搜的话 O(n^2*4^5*nlogn) --->>> 25*4^5*nlogn 数据小还好 用set消重 23 { 24 if (n == 6) 25 { 26 srec = rec; 27 str

C++ sort()排序函数用法

拟墨画扇 提交于 2020-03-30 12:31:14
本文转自https://blog.csdn.net/l198738655/article/details/79872738 sort(first_pointer,first_pointer+n,cmp) 该函数可以给数组,或者链表list、向量排序。 实现原理:sort并不是简单的快速排序,它对普通的快速排序进行了优化,此外,它还结合了插入排序和推排序。系统会根据你的数据形式和数据量自动选择合适的排序方法,这并不是说它每次排序只选择一种方法,它是在一次完整排序中不同的情况选用不同方法,比如给一个数据量较大的数组排序,开始采用快速排序,分段递归,分段之后每一段的数据量达到一个较小值后它就不继续往下递归,而是选择插入排序,如果递归的太深,他会选择推排序。 此函数有3个参数: 参数1:第一个参数是数组的首地址,一般写上数组名就可以,因为数组名是一个指针常量。 参数2:第二个参数相对较好理解,即首地址加上数组的长度n(代表尾地址的下一地址)。 参数3:默认可以不填,如果不填sort会默认按数组升序排序。也就是1,2,3,4排序。也可以自定义一个排序函数,改排序方式为降序什么的,也就是4,3,2,1这样。 使用此函数需先包含: #include <algorithm> 并且导出命名空间: using namespace std; 简单例子:对数组A的0~n-1元素进行升序排序,只要写sort

[CF]Round511

房东的猫 提交于 2020-03-30 12:12:23
这场比赛我及时的参加了,但是打的时候状态实在是太烂了,只做出来了Div2的AB题。 A Little C loves 3 I 直接构造就行。 B Cover Points 应该很容易就看出来这个等腰三角形的腰是坐标轴,然后就用 \(y=b-x\) 的一次函数往上套就行了。 C Enlarge GCD 这个题比赛的时候我交了4次,没有一次想到要先除gcd的。实际上在赛场上我已经接近正解了,就是枚举素因子,然后把最多的那个留着,其他的删掉就好了啊。 好吧,说起来简单,真正要把代码写到AC还是要看std的(摔 话说std的码都好短啊。 Code: #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <vector> const int N = 15000000+10; const int M = 3e5 + 10; int pri[N], notp[N], sz; int n, d[N], a[M]; void get_pri() { notp[1] = 1; for (int i = 2; i < N; ++i) { if (!notp[i]) notp[i] = pri[++sz] = i; for (int j = 1; j <= sz; ++j) { int k =

线段树 : 区间更新 poj 3468 示例

霸气de小男生 提交于 2020-03-30 10:34:37
#include <iostream> #include <string> #include <cstring> #include <cstdlib> #include <cstdio> #include <cmath> #include <vector> #include <stack> #include <deque> #include <queue> #include <bitset> #include <list> #include <map> #include <set> #include <iterator> #include <algorithm> #include <functional> #include <utility> #include <sstream> #include <climits> #include <cassert> #define BUG puts("here!!!"); #define MID(x) (x) >> 1 #define L(x) (x) << 1 #define R(x) ((x) << 1 | 1) using namespace std; const int N = 100005; struct Node { int a, b; long long sum; long long kind; }t[4*N]; int n,

HDU 1427 速算24点【数值型DFS】

允我心安 提交于 2020-03-30 09:30:02
速算24点 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 2562 Accepted Submission(s): 606 Problem Description 速算24点相信绝大多数人都玩过。就是随机给你四张牌,包括A(1),2,3,4,5,6,7,8,9,10,J(11),Q(12),K(13)。要求只用'+','-','*','/'运算符以及括号改变运算顺序,使得最终运算结果为24(每个数必须且仅能用一次)。游戏很简单,但遇到无解的情况往往让人很郁闷。你的任务就是针对每一组随机产生的四张牌,判断是否有解。我们另外规定,整个计算过程中都不能出现小数。 Input 每组输入数据占一行,给定四张牌。 Output 每一组输入数据对应一行输出。如果有解则输出"Yes",无解则输出"No"。 Sample Input A 2 3 6 3 3 8 8 Sample Output Yes No 【分析】: 简单的DFS,dfs(sum,next,p)表示当前已经算出的值是sum,括号中算出的值是next,当前使用的卡片下标为p,实际上是把括号外和括号内的两部分值分成sum和next来处理了。

RMQ算法模板

◇◆丶佛笑我妖孽 提交于 2020-03-30 08:21:36
2、 RMQ算法(转载) 对于该问题,最容易想到的解决方案是遍历,复杂度是O(n)。但当数据量非常大且查询很频繁时,该算法也许会存在问题。 本节介绍了一种比较高效的在线算法(ST算法)解决这个问题。所谓在线算法,是指用户每输入一个查询便马上处理一个查询。该算法一般用较长的时间做预处理,待信息充足以后便可以用较少的时间回答每个查询。ST(Sparse Table)算法是一个非常有名的在线处理RMQ问题的算法,它可以在O(nlogn)时间内进行预处理,然后在O(1)时间内回答每个查询。 首先是预处理,用动态规划(DP)解决。设A[i]是要求区间最值的数列,F[i, j]表示从第i个数起连续2^j个数中的最大值。例如数列3 2 4 5 6 8 1 2 9 7,F[1,0]表示第1个数起,长度为2^0=1的最大值,其实就是3这个数。 F[1,2]=5,F[1,3]=8,F[2,0]=2,F[2,1]=4……从这里可以看出F[i,0]其实就等于A[i]。这样,DP的状态、初值都已经有了,剩下的就是状态转移方程。我们把F[i,j]平均分成两段(因为f[i,j]一定是偶数个数字),从i到i+2^(j-1)-1为一段,i+2^(j-1)到i+2^j-1为一段(长度都为2^(j-1))。用上例说明,当i=1,j=3时就是3,2,4,5 和 6,8,1,2这两段。F[i,j

stdafx相关介绍

只谈情不闲聊 提交于 2020-03-29 12:12:25
使用过Visual Studio,VC++的朋友对stdafx.h这个文件一定非常熟悉。我们新建工程的时候他就自动出现了,并且在每个.cpp文件的最前面都有一个#include "stdafx.h"。这个文件一定有他的作用,然而我们也经常会因为他遇到各式各样的问题,所以这里给大家介绍一下这个文件的作用和意义。 简介: stdafx,全称StandardApplication Framework Extensions,标准引用框架扩展。 其实就是头文件预编译,我们知道C++文件进行编译时,需要先进行预编译,包括宏定义替换,条件编译以及#include文件包含。 这里就是将一个工程中可能会经常使用的一些MFC头文件(Windows.h,afxwin.h等)预先编译,这样在以后的编译时就可以略过这部分,在预编译的基础上进行编译,从而加快编译速度。 工作原理: stdafx.h中没有函数库,只是定义了一些环境参数,包含一些头文件,使得编译出来的程序能在32位的操作系统环境下运行。 Windows和MFC的include文件都非常大,即使有一个快速的处理程序, 编译程序 也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。 为避免这种浪费,AppWizard(应用向导,就是我们新建工程前的一些配置窗口

stdafx.h 的作用

点点圈 提交于 2020-03-29 12:06:26
stdafx.h VC工程里面经常见到stdafx.h这个头文件,以前也没有特别注意,但是这个文件用不好经常会出错。 stdafx的英文全称为:Standard Application Framework Extensions(标准应用程序框架的扩展)。 所谓 头文件预编译 ,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。 简介 预编译头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。 编译器通过stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的 编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。 因此, 所有的MFC实现文件第一条语句都是:#include "stdafx.h" 。在它前面的所有代码将被忽略,所以其他的头文件应该在这一行后面被包含。否则,你将会得到“No such file or directory

MFC学习(六)计算器

岁酱吖の 提交于 2020-03-29 11:24:26
1 stdafx.h    所谓头文件 预编译 ,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。 预编译 头文件通过编译stdafx.cpp生成,以工程名命名,由于预编译的头文件的后缀是“pch”,所以编译结果文件是projectname.pch。 编译器 通过一个头文件stdafx.h来使用预编译头文件。stdafx.h这个头文件名是可以在project的编译设置里指定的。编译器认为,所有在指令#include "stdafx.h"前的代码都是预编译的,它跳过#include "stdafx. h"指令,使用projectname.pch编译这条指令之后的所有代码。    因此,所有的MFC实现文件第一条语句都是:#include "stdafx.h"。在它前面的所有代码将被忽略,所以其他的头文件应该在这一行后面被包含。否则,你将会得到“No such file or directory”这样让你百思不得其解的错误提示。    Windows和MFC的include文件都非常大,即使有一个快速的处理程序, 编译程序 也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个