C++基础 对象的管理——单个对象的管理
1. 为什么要有构造函数和析构函数
面向对象的思想是从生活中来,手机、车出厂时,是一样的。
这些对象都是被初始化后才上市的,初始化是对象普遍存在的一个状态。
普通方案:
对每个类提供一个 init 函数,对象创...[2018/10/16]
2018-10-15 21:07:38 c language
2018-10-15 21:07:38 c language
C语言编译器,神奇的魔法师
在类 UNIX 系统(Linux、Mac OS 等)下,可执行程序没有特定的后缀,系统根据文件的头部信息来判断是否是可执行程序。
可执行程序的内部是一系列计算机指令和数据的集合,它们都是二进制形式...[2018/10/16]
C++语法小技巧
前言
写的很乱,各种内容都有。仅仅是为了记录一下
而且内容极其不严谨(没错,只有实践,没有理论)!请各位谨慎驾驶!
强制内联
#define Inline __inline__ __attribute__((always_inline))
本地测试结果:
开O2之后inline和Inli...[2018/10/16]
c/c++ 网络编程 UDP 改变网卡的硬件地址
网络编程 UDP 改变网卡的硬件地址
在程序里动态改变网卡的硬件地址
1,取得网卡的硬件地址
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sy types.h...[2018/10/16]
c/c++ 网络编程 UDP 改变网关和网卡名字
网络编程 UDP 改变网关和网卡名字
在程序里动态改变网关和网卡名字
1,改变网卡名字
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sy types.h>...[2018/10/16]
c/c++ 网络编程 UDP up/down 网卡
网络编程 UDP up/down 网卡
在程序里动态改变网卡的状态。注意:程序运行需要root权限。
程序运行的方法:
sudo ./a.out
1,关闭网卡
#include <stdio.h>
#include <string.h>
#include <u...[2018/10/16]
c/c++ 网络编程 UDP 设定MTU
网络编程 UDP 设定MTU
MTU(Maximun Transmi on Unit):一次送信的最大size。
在程序里动态改变MTU。注意:程序运行需要root权限。
程序运行的方法:
sudo ./a.out
1,取得MTU
#include <stdio.h>
#inc...[2018/10/16]
c/c++ 网络编程 使用getaddrinfo的单纯UDP 通信
网络编程 使用getaddrinfo的单纯UDP
1,UDP发送端
2,UDP接收端
UDP发送端:
#include <stdio.h>
#include <unistd.h>
#include <sy types.h>
#include <sy ...[2018/10/15]
POJ1659 Frogs' Neighborhood(Havel–Hakimi定理)
题意
题目链接
\(T\)组数据,给出\(n\)个点的度数,问是否可以构造出一个简单图
Sol
Havel–Hakimi定理:
给定一串有限多个非负整数组成的序列,是否存在一个简单图使得其度数列恰为这个序列。
令\(S=(d_1,d_2,\dots,d_n)\)为有限多个非负整数组成的...[2018/10/15]
HDU 5215 Cycle(dfs判环)
题意
题目链接
\(T\)组数据,给出\(n\)个点\(m\)条边的有向图,问是否存在一个奇环/偶环
Sol
奇环比较好判断吧,直接判是否是二分图就行了。。
偶环看起来很显然就是如果dfs到一个和他颜色不相同的点,说明出现偶环。
但事实上有一种情况没考虑到。
像这样
显然1 2 4...[2018/10/15]
C++基础 const
1. C中的const
C中const变量只是只读变量,有自己存储空间。可能被存放在 栈、堆、数据段,所以可以修改。
2. C++中const
可能分配空间,也可能不分配空间。
当 const 为全局时,并且需要在其他文件中使用,或当使用 &...[2018/10/15]
C++ 基础 引用
1.引用的本质
int b = 10;
int &a = b;
等效于:
int * const a = &b;
由于 a 是 const声明,所以一旦定义无法修改,所以要在定义时就要赋初值。
&nb...[2018/10/15]
C++基础 inline 默认参数 函数占位参数 函数重载
1. inline内联函数
内联函数用于替换宏,
实例:
其中宏和 ++ 连用有副作用。
#include "iostream"
using namespace std;
#define MYFUNC(a, b) ((a) < (b) ? (a) : (b))
inline ...[2018/10/15]
[hdu5215][Cycle]
hdu5215
思路
首先可以通过二分图染色找到奇环和一部分偶环。这个比较简单
但是还有一种偶环容易忽略。
如图(别问我为啥没节点4)
第一次可以找到1-2-3-1)这个奇环,第二次可以找到(3-5-6-3)这个奇环。但是(1-2-3-5-6-3-1)这个偶数环就被忽略了。
再一种情况
如图,我...[2018/10/15]
2018-10-13 21:30:51 conversion of number systems
2018-10-13 21:30:51 c language
二进制、八进制和十六进制:
1) 整数部分
十进制整数转换为 N 进制整数采用“除 N 取余,逆序排列”法。
十进制数字 36926 转换成八进制?
110076
2) 小数部分
十进制小数转换成 N 进制...[2018/10/15]
c++面向对象程序设计总结(类的使用)c++面向对象程序设计总结(类的使用)
本篇算是学习c++有关类的知识的一些易错点吧..... 并不是特别详细,以后会更新吧.... 几点并不关于类的东西 1.函数模板,用虚拟类型来实现模板的功能 #include<iostream>using namespace std;
template ...[2018/10/15]
cf888G. Xor-MST(Boruvka最小生成树 Trie树)cf888G. Xor-MST(Boruvka最小生成树 Trie树)
题意
题目链接
给出\(n\)点,每个点有一个点权\(a[i]\),相邻两点之间的边权为\(a[i] \oplus a[j]\),求最小生成树的值
Sol
非常interesting的一道题,我做过两种这类题目,一种是直接打表找规律,另一种就像这种用Boruvka算法加一些骚操作来搞。
首先...[2018/10/15]
2018-10-15 00:41:45 c language
2018-10-15 00:41:45 c language
C语言输入法的选择
全角和半角的区别主要在于除汉字以外的其它字符,比如标点符号、英文字母、阿拉伯数字等,全角字符和半角字符所占用的位置的大小不同。在计算机屏幕上,一...[2018/10/15]
c/c++ 网络编程 UDP 主机网络信息取得
网络编程 UDP 主机网络信息取得
1,if_nametoindex 通过网卡名字取得网卡编号
2,if_indextoname 通过网卡编号取得网卡名字
#include <stdio.h>
#include <string.h>
#include <net/i...[2018/10/15]
c/c++ 网络编程 UDP 用if_nameindex和ioctl取得主机网络信息
网络编程 UDP 用if_nameindex和ioctl取得主机网络信息
getifaddrs函数取得的东西太多了,如果只想取得网卡名字和网卡编号可以用下面的2个函数。
1,if_nameindex 取得网卡名字和网卡编号
#include <stdio.h>
#include &...[2018/10/15]
cf1064E. Dwarves, Hats and Extrasensory Abilities(二分 交互)
题意
题目链接
\(n\)次操作,每次你给出一个点的坐标,系统会返回该点的颜色(黑 / 白),程序最后输出一条直线把所有黑点和白点分隔开
Sol
一个很直观的想法:首先询问\((dx, 0)\),然后每次询问二分中点,根据与第一次询问得到的字符串的关系不断调整二分范围
但是这样会被卡,我修改...[2018/10/15]
HihoCoder#1279 : Rikka with Sequence(dp 枚举子集 二进制 神仙题)HihoCoder#1279 : Rikka with Sequence(dp 枚举子集 二进制 神仙题)
题意
题目链接
Sol
不愧是dls出的比赛啊,265个交了题的人只有8个有分Orz
做完这题,,感觉自己的位运算dp姿势升华了。。。
首先最裸的dp应该比较好想,设\(f[i][j][k]\)表示前\(i\)个数选出来的数异或和为\(j\),按位与和为\(k\)的方案数
转移的时候讨论一...[2018/10/12]
Visual C++中error spawning cl.exe错误的两种解决方法.
可能很多人在安装VC 6.0后有过点击“Compile”或者“Build”后被出现的 “Compiling... ,Error spawning cl.exe”错误提示给郁闷过。很多人的 选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的, “CL.exe”是VC使用真正的编译器...[2018/10/12]
Topcoder SRM 563 Div1 500 SpellCards
题意
[题目链接]这怎么发链接啊。。。。。
有\(n\)张符卡排成一个队列,每张符卡有两个属性,等级\(li\)和伤害\(di\)。
你可以做任意次操作,每次操作为以下二者之一:
把队首的符卡移动到队尾。
使用队首的符卡,对敌人造成\(d_i\)点伤害,并丢弃队首的\(l_i\)张符卡(包括...[2018/10/12]
TopcoderSRM679 Div1 250 FiringEmployees(树形dp)TopcoderSRM679 Div1 250 FiringEmployees(树形dp)
题意
[题目链接]这怎么发链接啊。。。。。
有一个 \(n\) 个点的树,每个点有点权(点权可能为负) ,求包含点\(1\)的最
大权连通子图(的权值和) 。
\(n \leqslant 2500\)
Sol
刚开始还以为是个树形依赖背包呢。。结果发现后面给的两个vector根本就没用
直接...[2018/10/12]
c/c++ 网络编程 单纯http客户端,服务器端
网络编程 单纯http客户端,服务器端
1,http客户端
2,http服务器端
http客户端:
#include <stdio.h>
#include <sy types.h>
#include <sy ocket.h>
#include <ne...[2018/10/12]
Topcoder SRM 698 Div1 250 RepeatString(dp)
题意
[题目链接]这怎么发链接啊。。。。。
Sol
枚举一个断点,然后类似于LIS一样dp一波
这个边界条件有点迷啊。。fst了两遍。。。
#include<bit tdc++.h>
using namespace std;
const int MAXN = 1e5 + 1...[2018/10/12]
c/c++ 网络编程 UDP 发送端 bind 作用
网络编程 UDP 发送端 bind 作用
upd 发送端 调用bind函数的效果:把socket特定到一个指定的端口,如果不调用bind,内核会随机分配一个端口。
upd 发送端 调用bind函数的目的:假如有2个发送端,接收端需要识别是从哪个发送端过来的,就可以分别在发送端调用bind函数,...[2018/10/12]
网络编程 单纯UDP通信
网络编程 单纯UDP通信
1,UDP发送端
2,UDP接收端
UDP发送端:
#include <stdio.h>
#include <unistd.h>
#include <sy types.h>
#include <sy ocket.h>
...[2018/10/12]
HDU5972Regular Number(ShiftAnd算法 bitset)
题意
题目链接
第一行的\(n\)表示模式串长度为\(n\)
接下来\(n\)行,每行开头有一个整数\(num\)表示匹配串中该位置的字符可以在\(num\)个桅子花出现,接下来输入这\(num\)个位置
最后一行一个模式串
Sol
"It contains a set of t...[2018/10/11]
BZOJ4503: 两个串(bitset字符串匹配)
题意
题目链接
Sol
Orz xudyh
F个毛T啊。。直接bitset一波就赢了啊。。。(虽然复杂度很假)
就是记录匹配串中每个元素出现的位置,将第\(i\)个位置的bitset右移\(i\)位后与起来
最后找1出现的位置就行了
复杂度:\(O(\frac{n^2}{32})\)
...[2018/10/11]
cf914F. Substrings in a String(bitset 字符串匹配)
题意
题目链接
Sol
Orz jry
和上一个题一个思路吧,直接bitset乱搞,不同的是这次有了修改操作
因为每次修改只会改两个位置,直接暴力改就好了
#include<bit tdc++.h>
using namespace std;
const int MAXN = 1...[2018/10/11]
HihoCoder#1513 : 小Hi的烦恼(五维数点 bitset 分块)
题意
题目链接
Sol
五位数点问题,写个cdq分治套cdq分治套cdq分治套cdq分析就完了 可以用bitset搞
对于每一科开\(n\)个bitset,其中\(b[i]\)表示的排名为\(1 - i\)的人是哪些
查询的时候把每科的bitset &起来就行了
复杂度\(k\fr...[2018/10/11]
QT 自定义模态对话框
新建一个MsgBox类
msgbox.h 代码
#ifndef MSGBOX_H
#define MSGBOX_H
#include <QDialog>
#include <QPushButton>
#include <QLabel>
#include ...[2018/10/11]
HihoCoder#1509 : 异或排序(二进制)
题意
题目链接
Sol
挺简单的吧。考虑两个元素什么时候不满足条件
设\(a_i\)与\(a_i + 1\)最高的不同位分别为0 1,显然\(S\)的这一位必须为\(0\),否则这一位必须为\(1\)
剩下的就没有限制条件了
时间复杂度:\(nlogn\)??????!!!!!!
#in...[2018/10/11]
C点滴成海----函数声明、函数定义、函数原型C点滴成海----函数声明、函数定义、函数原型
一、函数声明
1、格式
函数体去掉函数定义中的内容再加上分号,如下所示:
返回值类型 函数名( 类型 形参, 类型 形参… );
返回值类型 函数名( 类型, 类型…);
2、特点
函数声明只是对编译系统说明定义的函数的返回值的类型:
不包含函数体(或形参)
函数声明是一个说明语句,必...[2018/10/11]
洛谷P3177 [HAOI2015]树上染色(树上背包)洛谷P3177 [HAOI2015]树上染色(树上背包)
题意
题目链接
Sol
比较套路吧,设\(f[i][j]\)表示以\(i\)为根的子树中选了\(j\)个黑点对答案的贡献
然后考虑每条边的贡献,边的两边的答案都是可以算出来的
转移的时候背包一下。
#include<bit tdc++.h>
#define Pair pair&...[2018/10/11]
Recursive sequence(HDU5950 矩阵快速幂)
题目:
Farmer John likes to play mathematics games with his N cows. Recently, they are attracted by recursive sequences. In each turn, the cows would s...[2018/10/11]
c/c++ gdb 调试带参数的程序
直接gdb pgname 参数1
这种方式,参数1是不会带到gdb里的
1,首先启动程序
gdb pgname
2,设置程序的参数
set args 参数1
[2018/10/11]
BZOJ1722: [Usaco2006 Mar] Milk Team Select 产奶比赛(树形dp)
题意
题目链接
Sol
挺显然的树形背包吧。。
\(f[i][j]\)表示\(i\)这棵子树中答案为\(j\)的最大价值,转移的时候背包一下。。
第一次写树形背包,犯了两个错误
枚举根节点的贡献时需要倒着枚举
转移时需要注意\(k = 0\)的情况,不要出现重复转移
#includ...[2018/10/10]
c/c++ 网络编程 bind函数c/c++ 网络编程 bind函数
网络编程 bind函数
bind的作用是确定端口号。
正常处理都是先bind,然后listen
如果不bind,直接listen,会是什么结果?
内核会自动随机分配一个端口号
例子:
#include <iostream>
#include <sy types.h>
#i...[2018/10/10]
BZOJ1044: [HAOI2008]木棍分割(dp 单调队列)BZOJ1044: [HAOI2008]木棍分割(dp 单调队列)
题意
题目链接
Sol
比较套路的一个题。
第一问二分答案check一下
第二问设\(f[i][j]\)表示前\(i\)个数,切了\(j\)段的方案数,单调队列优化一下。
转移的时候只需要保证当前段的长度小于最大限度即可。
#include<bit tdc++.h>
usin...[2018/10/10]
cf633F. The Chocolate Spree(树形dp)
题意
题目链接
\(n\)个节点的树,点有点权,找出互不相交的两条链,使得权值和最大
Sol
这辈子也不会写树形dp的
也就是有几种情况,可以讨论一下。。
下文的“最大值”指的是“路径上权值和的最大值”
设\(f[i][0]\)表示以\(i\)为根的子树中选出两条不相交的链的最大值
\...[2018/10/10]
BZOJ4709: [Jsoi2011]柠檬(决策单调性)
题意
题目链接
Sol
结论:每次选择的区间一定满足首位元素相同。。
仔细想想其实挺显然的,如果不相同可以删掉多着的元素,对答案的贡献是相同的
那么设\(f[i]\)表示到第\(i\)个位置的最大价值,\(s[i]\)表示到\(i\)位置,\(a[i]\)的出现次数,转移方程为
\[f[i...[2018/10/10]
cf868F. Yet Another Minimization Problem(决策单调性 分治dp)
题意
题目链接
给定一个长度为\(n\)的序列。你需要将它分为\(m\)段,每一段的代价为这一段内相同的数的对数,最小化代价总和。
\(n<=10^5,m<=20\)
Sol
看完题解之后的感受:
首先列出裸的dp方程,\(f[i][j]\)表示前\(i\)个位置,切了\(...[2018/10/10]
[hdu6148][Valley Numer][hdu6148][Valley Numer]
hdu6148
思路
一个数位dp模板题,注意判断前导0。用一个bz来记录当前是应该增还是可增可减。然后排除不满足条件的情况并进行dp即可。
代码
#include<cstdio>
#include<iostream>
#include<cstring>
usi...[2018/10/10]
BZOJ1563: [NOI2009]诗人小G(决策单调性 前缀和 dp)
题意
题目链接
Sol
很显然的一个dp方程
\(f_i = min(f_j + (sum_i - sum_j - 1 - L)^P)\)
其中\(sum_i = \sum_{j = 1}^i len_j + 1\)
这个东西显然是有决策单调性的。
单调队列优化一下
我好像已经做过三个...[2018/10/10]
c/c++ 网络编程 getaddrinfo 函数
网络编程 getaddrinfo 函数
解析网址,返回IP地址。
例子:
#include <iostream>
#include <string.h>
#include <sy types.h>
#include <sy ocket.h>
#in...[2018/10/10]
c/c++ 网络编程 文件传输
网络编程 文件传输
1,文件发送端
2,文件接收端
文件发送端:
#include <iostream>
#include <string.h>
#include <sy types.h>
#include <sy ocket.h>
#incl...[2018/10/10]
agc001E - BBQ Hard(dp 组合数)
题意
题目链接
Sol
非常妙的一道题目。
首先,我们可以把\(C_{a_i + b_i + a_j + b_j}^{a_i + a_j}\)看做从\((-a_i, -b_i)\)走到\((a_j, b_j)\)的方案数
然后全都放的一起dp,\(f[i][j]\)表示从\((i, j)...[2018/10/9]