- 博客(27)
- 收藏
- 关注
原创 有限状态自动机(一个简单例子面向对象实现)
即状态+动作==》下一个状态+动作并再其中处理该过程的函数中,改变状态和做出响应以上门禁闸机模型:闸机有两个状态:lock,unlock每个状态有两个动作:card(刷卡),pass(试图通过)进一步分析:lock+card:闸机状态==.unlocklock+pass:警告,不能通过unlock+card:感谢(已经刷卡,可以通过)unlock+pass:通过之后,闸机状态==》lock#include <iostream>using namespace std;ty.
2022-05-25 15:41:13 370
原创 c++左值,右值以及消亡值
1.左值和右值C++11中的定义:左值表达式表示的是一个对象的身份(在内存中的位置),而右值表达式表示的是对象的值(内容)。左值和右值都是针对表达式而言的,左值是持久的,右值是短暂的:左值在表达式结束后仍然存在,右值在表达式结束后会被销毁。区分左值和右值的方法:看能不能进行取地址操作,若能,则为左值,否则为右值。1.1右值:void fun(int &x) {//}int main() { fun(10); return 0;}编译的时候提示:error: in
2022-05-09 21:17:11 493
原创 简洁版的线程池
一个简洁版的线程池去除了minthreadnum,maxthreadnum进一步控制线程数目的功能只是实现维持一定数量线程,在有任务时唤醒去执行的简单逻辑。#include <iostream>#include <mutex>#include <queue>#include <thread>#include <condition_variable>#include <cassert>#include <windo
2022-05-06 12:12:13 266
原创 linux_mysql安装和c++代码
mysql安装mysql的使用一些修改密码的骚操作:不小心修改了sudo cat /etc/mysql/debian.cnf导致只能skip密码来修改密码启动mysql数据库sudo /etc/init.d/mysql start重启sudo /etc/init.d/mysql restart关闭sudo /etc/init.d/mysql stop1.修改数据库配置文件绕过密码登录sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf
2022-05-04 17:59:11 1401
原创 树状数组&线段树
树状数组:顾名思义,用数组来模拟树形结构。树状数组可以解决的问题:区间上的更新以及求和问题。以**o(logn)**获得任意(区间)前缀和树状数组可以解决的问题都可以用线段树解决,那么区别在于,树状数组的系数要少很多。优点:修改和查询的复杂度都是o(logN),而且比线段树系数要少很多,比传统数组要快,而且容易写。缺点:遇到复杂区间问题还是不能解决,功能有限。咱们的二叉树:用数组建立树,黑色为原来的数组,红色代表我们的树状数组。c为树状数组(红色),黑色为原来的数组A管辖长度为从i向前,管
2022-05-03 21:32:36 946
原创 c++socket套接字通信
单线程非io多路复用server.cpp#include <iostream>#include <unistd.h>#include <string.h>#include <arpa/inet.h>using namespace std;int main(){ int lfd = socket(AF_INET, SOCK_STREAM, 0); if (lfd == -1) { perror("sock
2022-03-17 17:41:16 1444
原创 关于线程和C++11的线程类
单核cpu需要对多线程访问共享资源加锁吗需要。时间片完,也会引起线程的调度,需要对共享资源加锁。线程参考线程创建#include <pthread.h>int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);参数:thread: 传出参数,是无符号长整形数,线程创建成功,会将线程
2022-03-16 21:32:19 1189
翻译 C++线程池
#pragma once#include<queue>#include<pthread.h>using namespace std;using callback =void(*)(void* arg);//task structtemplate<typename T>struct Task{Task(){ function =nullptr; arg=nullptr;}Task(callback f,void* arg){
2022-03-16 20:55:56 108
原创 蓄水池抽样和洗牌算法
#include <iostream>using namespace std;// int[] reservoir = new int[m];// // for (int i = 0; i < reservoir.length; i++)// {// reservoir[i] = dataStream[i];// }// for (int i = m; i < dataStream.length; i++)// {// // 随机获得一个[0
2022-03-15 12:38:23 126
原创 平衡二叉树的c++实现
插入节点:(为什么可以将其移动到另一方作为子树,考虑其左小于父节点以及右大于父节点的性质,即可理解可移动)二叉树删除节点:1.若删除节点为叶子节点==》直接删除2.欲删除节点只有一个子树,删除该head,把子树移到head位置3.欲删除节点有双子树,(右子树的最左节点为大于且最接近欲删除节点的值)找到该最接近节点node将其与欲删除节点交换,问题转换为{删除右子树中,值为node->key的节点(该节点为叶子节点或只有右子树的节点)<即转换为1,2情况>}AVLTree.
2022-03-14 17:54:41 1093
原创 C++项目:高并发内存池
内存池1. 池化池化是一种常用设计模式:程序运行过程中常用的资源频繁申请/释放,对于该共享资源使用时还要竞争加锁使用。如果放到一个池通过池来管理资源(在使用前先申请,由程序管理申请和释放,可提高资源利用率)。常用池化技术:1. 内存池不使用用内存池:通常情况下,程序员习惯直接使用new,delete,malloc,free等API申请和释放内存,在一个程序运行期间频繁申请释放不定长内存,使内存中出现很多内部碎片和外部碎片。无回收机制,导致内存泄漏(由于疏忽或错误造成程序未能释放已经不再使用的 内
2022-03-09 20:21:00 525
原创 二叉树的各种遍历
二叉树前序遍历中左右void preorder(vector<int>&ret,TreeNode*root){ if(root==NULL) return ; ret.push_back(root->val); preorder(ret,root->left); preorder(ret,root->right); } vector<int> preorderTraversa
2021-09-08 17:48:25 82
原创 01背包问题(动态规划)
题目描述PIPI有一台笔记本电脑,一台台式机电脑,两台电脑的性能相同,现在小明手里有N个等待运行的程序,每个程序运行所需的时间分别为n1,n2,n3,n4……,一台电脑同一时刻只能运行一个程序,一个程序只需要运行一次。两台电脑同时开始运行,请问小明该如何分配程序在这两台电脑上运行,使得最后结束运行的电脑的运行时间最短。 输入输入不超过30组数据,每组数据第一行为N,代表有N个等待运行的程序,...
2020-04-12 15:53:27 301
原创 栈和队列
1209: 模拟出入栈游戏题目描述PIPI现有a-z 26个小球模拟出入栈操作,小球按照a~z的顺序压入栈,在栈顶的元素可以随时被取出,在游戏开始前给出任意26个字母的一些排列,问是否能够由出栈顺序得到这个排列。输入输入包含多组测试用例。每组测试用例包含26个字母组成的一个序列。输出若出栈顺序合法,输出"yes",否则输出"no".样例输入abcdefghijklmnopqrst...
2020-04-12 10:10:14 517
原创 记忆化dfs(爱吃奶酪的肥老鼠)
题目描述PIPI家里来了一只肥老鼠!!!它的活动区域在一个n*n的方格矩阵中,其中每个方格上都一些奶酪,肥老鼠很懒,当它在一个方格吃完奶酪的时候,他最多往上下左右其中一个方向直走k步去找下一块奶酪。肥老鼠也很饿,当它在一个方格吃完奶酪之后,他的下一个目标方格的奶酪必须比当前的奶酪大。现在肥老鼠从(0,0)出发,请问: 肥老鼠最多能吃到多少奶酪?输入输入包含多组测试用例。对于每组测试用例,...
2020-03-30 23:05:26 444
原创 问题 B: PIPI发工资(拓扑排序遍历)
题目描述PIPI开了一个工厂,工厂里面有许许多多的员工。每次要发工资的时候PIPI就开始思考了,如何才能给员工发最少的工资呢?发工资的原则是这样的: 每个员工的工资都是一个整数,其中基本工资是888元,但是如果 A 是 B的上司,那么A的工资就要比B高。现在给出员工的数量和员工之间的关系,PIPI想问下胖虎他最少要发多少钱??输入输入包含多组测试用例。对于每一组测试用例,第一行包含两个...
2020-03-30 14:43:56 454
原创 尺取法
尺取法poj 3061下图取自网上博客#include <stdio.h>int main(){int t;int N;long long S,sum;int arr[100010],i,left,right,minlen;scanf("%d",&t);while(t--){ scanf("%d %I64d",&N,&S); ...
2020-03-27 11:15:43 136
原创 pipioj:取数游戏
问题 E: 取数游戏题目描述PIPI和POPO在玩一个取数游戏。给定两个长度为N的整数数组A1, A2, … AN和B1, B2, … BN。他们轮流选择一个非空数组,取出该数组的第一个整数,加到自己的分数中。直到2N个整数都被取走为止,分数高的选手获胜。现在PIPI是先手,他知道POPO一定会采取最优策略。PIPI想知道自己最多能得多少分。输入第一行一个整数N。第二行包含N个整数A...
2020-03-27 11:12:05 676
原创 1046: 数组分拆
题目描述PIPI得到了一个数组作为他的新年礼物,他非常喜欢这个数组!在仔细研究了几天之后,PIPI成功的将这个数组拆成了若干段,并且每段的和都不为0!现在PIPI希望知道,这样的拆分方法一共有多少种?两种拆分方法被视作不同,当且仅当数组断开的所有位置组成的集合不同。输入多组数据。每组输入的第一行为一个正整数N,表示这个数组的长度第二行为N个整数A1~AN,描述PIPI收到的这个数组...
2020-03-25 21:09:35 334
原创 前缀和 1041: 最大子矩阵
前缀和 1041: 最大子矩阵给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大。输入输入数据的第一行为一个正整数T,表示有T组测试数据。每一组测试数据的第一行为四个正整数m,n,x,y(0<m,n<1000 AND 0<x<=m AND 0<y<=n),表示给定的矩形有m行n列。接下来这个矩阵,有m行,每行有n个不大于100...
2020-03-22 15:41:06 370
原创 pipioj 1039 重复子序列问题
题目描述1039PIPI有两个字符串A和B,请你求出字符串A最少重复几次才能使得B是A的子序列。我们称X是Y的子序列当且仅当可以从Y中删除若干个字符得到X。例如对于A=“abb”, B=“bbaa”,则A重复3次之后得到"abbabbabb",此时B="bbaa"是"abbabbabb"的子序列。注意,原始串A即算作重复一次。输入多组数据。第一行包含一个字符串A。第二行包含一个字...
2020-03-22 13:13:56 796
原创 全排列的三种实现
题目描述生成由1至n个数的全排列。输入输入包含多组样例,每组样例输入一个整数n(1≤n≤9)。输出按照字典序反序输出,每个数值之间用空格隔开。每个排列单独占一行。我做的该题,要求逆字典序就改了一下大于小于号字典序#include <stdio.h>#include <stdlib.h>int num[10];int cmpfunc (const vo...
2020-03-20 00:48:05 374
原创 dfs bfs
http://www.pipioj.online/problem.php?id=1033题目描述PiPi喜欢把别人的名字拆开来,比如“螺”就可以拆成“虫田糸”,PiPi的语文学的不是很好,于是她决定使用编程的方式来解决这个问题。给出一个01矩阵,1占据的部分即为需要拆的字,如果两个1分享一条边,那么它们连通。连通具有传递性,即如果a、b连通,b、c连通,则a、c连通。连通的一系列1被看做可...
2020-03-15 13:06:40 247
原创 规律题 防水堤坝
1013: 防水堤坝时间限制: 1 Sec 内存限制: 128 MB提交: 635 解决: 146[提交] [状态] [讨论版] [命题人:外部导入]题目描述在太平洋的一个小岛上,岛民想要建立一个环岛的堤坝,我们可以将小岛简化为一个二维平面,你需要使用K条边(这些边要么是水平或者垂直长度为1的边,要么是45度倾斜的长度为sqrt(2)的边)围成一个多边形,多边形的顶点必须位于整点,然...
2020-03-06 20:55:59 464
原创 动态规划
动态规划动态规划分化为具有重复问题的子问题分冶将问题划分为互不相交的子问题最长上升子序列第一种#include <stdio.h>#include <string.h>int main(){int n,i,j;int num[1001];int dp[1001];int maxlen;while(scanf("%d",&n)!=EOF){ ...
2020-03-02 21:53:32 152
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人