自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 2.两数相加

题目链接问题描述 模拟两个数相加就好了,因为题目中给定的链表的顺序本来就是反序,所以可以直接遍历求值。/** * Definition for singly-linked list. * type ListNode struct { * Val int * Next *ListNode * } */func addTwoNumbers(l1 *ListN...

2018-05-21 20:19:11 377

原创 文章关键词前后插入指定字符串

最近项目上有一个在文章关键词前后插入html标签的需求,我用php写了一下。<!DOCTYPE html><html><head> <title>php</title></head><body><?php function asiccToUtfArrar($Str)

2018-03-24 09:01:53 476

原创 对c++编程方式的一点思考-读muduo有感。

现在脑子有点乱,一时间不知道怎么准备语言,就先把代码放到这,以后再补上。#include <bits/stdc++.h>#include <functional>using namespace std;using namespace std::placeholders;class Foo{ typedef function<int ()> LenCall; typedef

2017-12-09 16:11:08 448

原创 golang调用c++dll 获取mac地址,用户名,内存大小

功能:c++实现获取主机的的内存大小,系统用户名,mac地址和硬盘序列号,然后封装成dll给go调用,并提供go调用的接口。github运行截图:c++部分:go语言获取mac地址这些不太方便,于是就思考可不可以调用c++封装的dll。这个demo用cgo来实现go对c++代码的调用。其中c++所爆露的接口都是void的,所需信息全部由指针做形参来获得,用为不知道怎么用go获取c++返回的std::

2017-11-09 16:16:31 2356

原创 bzoj 2115 [Wc2011] Xor

传送门题意:考虑一个边权为负整数的无向联通图,节点编号为1到N,试求出一条从1号节点到N号节点的路径,使得路径上经过的边的权值的XOR和最大。 路径可以重复经过某些点或边,当一条边在路径上出现了多次时,其权值在计算XOR和时也要被计算相应多的次数。分析:这道题可以重复经过某些边,但是来回走是没有意义的, 因为会被异或抵消掉。我的做法是先任意找出一条从1到n的路经,把这条路径上的xor值作为初始

2017-10-30 17:29:28 255

原创 LibreOj 6004 圆桌聚餐

传送门分析一道网络流的经典题,难点在于如何建图和如何输出。1.建图建立超级源点和超级汇点,源点连接单位,流量为单位的人数。餐桌连接源点,流量为餐桌可以容纳的人数。因为对每一个餐桌来说每一个公司只能做一个人,所以连接公司和餐桌,流量为一。2.判定有方案存在对图跑一遍最大流,如果到达汇点的流量等于所有公司的人数和,就说明所有人都找到了自己的座位,就是有方案存在的。3.输出方案我本来是在搜索增广路的时候对

2017-10-25 12:59:47 336

原创 LibreOj 6000 搭配飞行员

传送门分析:一道简单的网络流模板题,也可以用匈牙利算法写。代码:#include <bits/stdc++.h>using namespace std;const int maxn = 1e5;struct Edge{ int v , to; int next;} edge[maxn];int head[maxn] , cnt , n , m , from , to;void

2017-10-25 12:58:46 257

原创 51nod 1007 正整数分组

传送门分析:定义dp[i] == true 表示集合中的一些数可以组成i,则对于dp[i]只要dp[i-a[j]]有一个为真它就是真的。代码:#include <bits/stdc++.h>using namespace std;const int maxn = 1e3;int a[maxn];bool dp[11000];int main(){ int n , sum = 0;

2017-10-18 19:59:39 513

原创 Wannafly挑战赛1_MMSet2

传送门分析:只需要求出集合内距离最长的连线,取一个点,改点恰巧到集合内最长连线的两点的距离len相等(没有就相差一),容易得知这个点就是我们要找的点,答案就是(len+1)/2(len+1)/2。实现:lca典型题,求一遍lca就好了,但这道题比较考代码能力(我错了好多次233)。#include <bits/stdc++.h>using namespace std;const int maxn

2017-10-16 17:41:46 285

原创 主席树详解

主席树是一种线段树的变形,可以解决区间第k大的问题。下面我谈谈自己的理解,尽可能的讲清楚些。 假设现在有序列 a[5] = {1 , 4 , 5 , 3 , 2},有q个询问{l , r , k}问你[l , r]区间第k小的值是多少?容易想到对被询问区间排个序,然后输出第k个数。这种方法最直观,但也是最费时的(时间复杂度爆炸),不可取。另一种是先建立一个空树,再将[l , r]区间的

2017-09-02 16:07:38 1515

原创 hdu 6103 Kirinriki

链接题意:给你一个整数n和字符串str,现在让你在str中找出两个连续的字串计算两个字串的距离。距离 ,求满足在dis不超过n的状态下,n的最大值。分析:用dp[i][j]数组记录字串i-j的dis, 前半部分是A串,后半部分是B串,然后枚举n,二分查找。代码:#include <bits/stdc++.h>using namespace std;const int maxn = 5*1e3+1

2017-08-11 15:52:12 310

原创 hdu 6060 RXD and dividing

链接题意:有一颗n个节点的树,现在将节点2-n分成k组,定义每组的的权值为该组内所有点加编号为1的节点相互连接所经过的边的权值的和,求k组点集最大的和。分析:使用贪心的思想,我们思考每条边对最终答案的贡献。既然要结果最大,那么每条边就尽可能的多被走到。 如上图,现在考虑A-C这条边所做的贡献,很容易想到,在计算一个分组的权值时,如果C点或C的子节点有一个是属于该分组的 , 那么在计算该分组的权值

2017-08-02 15:38:12 550

原创 hdu 6058 Kanade's sum

链接题意: 给定一个区间,枚举该区间所有子区间。加上每个子区间第k大的值。分析:比赛的时候想到枚举每个数的两边第k个大于该数的区间,但是没有感谢,感觉会超时。不过比赛快结束的时候学长用这种思想写出来了,自己真的是一个垃圾。赛后写了一下,结果超时,还是编码水平太差啊~ , 后来想到了另一种枚举的方法才过了。ac代码:#include <bits/stdc++.h>using namespace

2017-08-02 10:36:07 488 2

原创 UVA 12124

链接 题意:组装电脑 , 每个组件都要一个。 并在价格允许的情况下使得最差质量的质量尽量高。 分析: 贪心+二分写一下就好了 , 这道题是熟悉STL的好题!#include <bits/stdc++.h>#define sc scanf#define pr printfusing namespace std;struct note{ long long price; l

2017-07-23 14:38:09 303

原创 玲珑杯”ACM比赛 Round #15 D

链接 直接尺取就好了#include <bits/stdc++.h>#define sc scanf#define pr printfconst int N = 900010;using namespace std;char str[N]; int s[N];int main(){ int n , k ,i , j; sc("%d %d",&n , &k);

2017-06-02 00:44:27 317

原创 “玲珑杯”ACM比赛 Round #15 A

链接分析:确定了第一个翻转的位置后 , 其它位置就全部确定了。所以对于第一个位置 inx = [1,k+1]。 贪心判断就好了。#include <bits/stdc++.h>#define sc scanf#define pr printfconst int N = 110000;using namespace std;int n , k;long long arr[N];long

2017-06-02 00:39:41 245

原创 玲珑oj 1129

链接 一道经典的线段树的题 , 注意下 query 的处理就好了 , 用到了 lazy , 算是自己复习了一遍线段树。#include <bits/stdc++.h>#define sc scanf#define pr printfconst int N = 100010;using namespace std;long long tree[N<<2],lazy[N<<2];void p

2017-05-30 22:10:22 387

原创 poj 1068

poj 1068。题意:定义一个只包含括号的字符串S(括号匹配的)有两种表示方法。 1. P : p[i] 表示S第 i 个右括号前面左括号的个数。 2. W:w[i] 表示S第 i 个右括号组成的合法表达式中 , 包含了多少括号。我的解法: 用数组记录i-1 , 与 i 的差值 , 也就是第 i-1 个右括号和 第 i 个右括号之间左括号的个数 , 记做 left_num,相应的还有个 r

2017-05-29 12:40:59 550

原创 codeforces 808D

D. Array Division time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output Vasya has an array a consisting of positive integer numbers. Vasya wants

2017-05-17 20:56:04 851

原创 2017年华东师范大学网络赛 G

G. 铁路修复计划 Time limit per test: 2.0 seconds Time limit all tests: 15.0 seconds Memory limit: 256 megabytes Accept / Submit: 146 / 1219在 A 国有很多城际铁路。这些铁路都连接两个城市(城市从 1 到 n 编号),可以双向通行,使得任意两个城市之间都由铁路网联系起

2017-05-13 17:47:24 389

原创 2017年华东师范大学网络赛 F

F. 丽娃河的狼人传说 Time limit per test: 1.0 seconds Time limit all tests: 1.0 seconds Memory limit: 256 megabytes Accept / Submit: 224 / 1759丽娃河是华师大著名的风景线。但由于学校财政紧缺,丽娃河边的路灯年久失修,一到晚上就会出现走在河边要打着手电的情况,不仅非常不方

2017-05-13 17:33:44 321

原创 2017年华东师范大学网络赛 E

E. 黑心啤酒厂 Time limit per test: 1.0 seconds Time limit all tests: 1.0 seconds Memory limit: 256 megabytes Accept / Submit: 1184 / 4093黑心啤酒厂为了让大家买啤酒,会把一瓶酒设计成恰好能倒七杯。由于聚会时经常会有大家一起干杯这样的事情,干杯之前又要给每个人都倒满,所

2017-05-13 17:24:07 545

原创 2017年华东师范大学网络赛 C

袋鼠妈妈找孩子 Time limit per test: 1.5 seconds Time limit all tests: 10.0 seconds Memory limit: 256 megabytes袋鼠妈妈找不到她的孩子了。她的孩子被怪兽抓走了。袋鼠妈妈现在在地图的左上角,她的孩子在地图第 x 行第 y 列的位置。怪兽想和袋鼠妈妈玩一个游戏:他不想让袋鼠妈妈过快地找到她的孩子。袋鼠妈妈

2017-05-13 17:19:55 334

原创 2017年华东师范大学网络赛 A

A. 拼音魔法 Time limit per test: 1.0 seconds Time limit all tests: 1.0 seconds Memory limit: 256 megabytes Accept / Submit: 341 / 2134魔法学校小学一年级有一种题。就是给一个字的拼音,给一个声调,让你正确地注音。但魔法老师给了巨量的题,你不用魔法根本不可能做完。所以现在

2017-05-13 17:11:09 508

原创 zzuli 1923: 表达式求值

链接 思路 :分两步处理。 1. 对原字符处理 , 去掉讲 Smax(x,y)转化成 ((x) , (y))。int Smax_func(int num) 函数进行这个操作。 2. 用逆波兰表达式 , 先将处理后的中缀表达式转化成后缀表达式 , 再一套带走。(注意我认为 “,” 字符的优先级和 “*”“/ ”一样)。#include <iostream>#include <algorit

2017-05-03 21:38:51 319

原创 poj 2506 Tiling

一道简单的递推题 , 主要用到了大数相加。#include <iostream>#include <algorithm>#include <cstdio>#include <cstdlib>#include <cstring>#include <math.h>#define pr printf#define sc scanfstruct bigint{ unsigned i

2017-04-27 16:19:59 196

原创 H 维克兹的进制转换

思路: 从二进制考虑。 首先我们要知道长度为 len 的二进制数除以二后长度变为len-1 , 它会将最后一位给pass掉。 那么我们考虑到长度为len 的二进制是否可以由长度为len-1的转化得到呢?这么想是没有错的! 。共有两种情况。我们先约定要得到数 N , 其二进制长度 len(N) = n。 1. N 为奇数时,二进制最后一位为一。那么对于len(m) = n-1的数m来说 , 只能在

2017-04-18 10:53:48 523

原创 求数n和n!的因子和

对于每个 n>=2, 都可以拆分成 n=2a+3b+5c+7d+...n = 2^a + 3^b + 5^c + 7^d + ... 有了上面的拆分式,我们就容易得到 n 的因子和公式 sum=(a+1)∗(b+1)∗(c+1)∗...sum = (a+1)*(b+1)*(c+1)*... 有了n 的因子和公式,就不难得出n!的因子和公式 sum=∑i=1n(a+1)∗∑i=1n(b+

2017-04-05 13:21:36 547

原创 仔细认识c++ 中pointers和references。

指针和引用看起来很不一样(pointers使用"* "和"->"操作符, references使用 "."),但用起来总觉得很相似。下面就仔细抠一下它俩之间的相同和不同之处,以及各自的使用场合。首先必须认知一点,引用没有 null references。 一个引用必须代表一个对象。所以如果你使用一个变量指向(代表)另一个对象。但是它也有可能不指向任何对象,这时候要用指针。如果你的设计并不允许这个变

2017-03-31 11:13:09 674

原创 pat 天梯团体赛练习-l2-019 悄悄关注

这道题本身没有什么难度,主要是熟悉下stl的用法。原来map#include <iostream>#include <algorithm>#include <set>#include <map>#include <string>#include <stdio.h>#include <stdlib.h>#include <string.h>using namespace std;co

2017-03-26 17:03:56 494

原创 hdu 1237 升级版代码

前言:一直像做个计算器,但是表达式求值算法不会写。昨天数据结构老师刚好讲到表达式求值就下决心将这个代码敲出来。我干大言不惭的说这个是 hdu 1237升级版是因为这个代码支持括号嵌套。 思路: 主要分两步。将中缀表达式转换为后缀表达式,大家可以参考这个博客:http://blog.csdn.net/sgbfblog/article/details/8001651求解中缀表达式#include

2017-03-15 17:37:03 270

原创 poj 2965

链接:http://poj.org/problem?id=2965 思路:利用总共的状态只有六万多的特点,我们可以用dfs暴力枚举。不过这里我们换用另一种方法。注意到碰到+号时,将该点的所在行和所在列的每一个点翻转。这样改点翻了七次,该行该列所在点反转了四次,其余是两次。 只有该+点变化了。利用这个性质我们对每一个+进行该操作。再对反转的点进行分析,反转为偶数的就不需要考虑了。剩下的就是答案。(注

2017-03-10 18:54:34 266

原创 c语言HTTP服务器,超级简易版。

算是对linux多线程的复习把,尝试这用socket写了一个简单的HTTP服务器,当访问它的时候它会给你发送一个HTML文件,这个HTML文件需要自己写。 代码:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <arpa/inet.h>#include <sys/socket.h>#include <pth

2017-03-04 16:19:47 4860

原创 linux下的c++ 多线程封装

最近为了学习linux 下的多线程,自己用c++封装了一个简易的局域网多线程聊天服务器,期间遇到了一些坑写到这里与大家共勉! 主要功能: 封装了一个名叫pthread_serv的类对每一个客户端的响应建立一个进程进行信息转发。 遇到的问题: 在使用linux提供的线程创建函数int pthread_create(pthread_t *tidp,const pthread_attr_t *attr

2017-03-04 00:53:19 884

原创 hdu 1238

链接:http://acm.hdu.edu.cn/showproblem.php?pid=1238 很简单的一道字符串操作,我第一次用string 写题,就贴上来留到以后看。#include <iostream>#include <algorithm>#include <string>#include <cstdio>#include <cstring>#include <cstdlib

2017-03-02 14:33:23 301

原创 kmp模板

void makenext(const char *p , int *next){ int i=1,k=0; int m = strlen(p); next[0] = 0; for(i=1,k=0; i<m; i++) { while(k>0 && p[i]!=p[k]) k = next[k-1];

2017-03-01 22:42:41 234

原创 epoll回声服务器

epoll是在linux系统中,一种高效率的I/O复用技术. 在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posi

2017-02-24 21:29:41 434

原创 poj 1185

链接:http://poj.org/problem?id=1185 分析:一道经典的状压dp,坑点是如果开dp[100][1<<10][1<<10]会爆内存,其实根本不用开这么打的空间。只需将所有可能的状态找到就行了,用这个代码: int num = 0; for(int i=0; i<(1<<10); i++) if(judge_one(i)) n

2017-02-14 21:50:50 245

原创 hoj 2662

链接:http://acm.hit.edu.cn/hoj/problem/view?id=2662 题意: 有一个n*m的棋盘(n、m≤80,n*m≤80)要在棋盘上放k(k≤20)个棋子,使得任意两个棋子不相邻(每个棋子最多和周围4个棋子相邻)。求合法的方案总数。 分析: 经典的状压dp。 设状态dp[n][num][k]: 第n行时,已经放了num个棋子,并且第n行的状态是k。 可得状态转

2017-02-12 20:03:00 448

原创 poj 3254

链接:http://poj.org/problem?id=3254 分析:一道经典的状压dp,核心是将排列方式看做01串,用十进制表示 代码:/*2017-2-11 15:51 author:lian*/#include <iostream>#include <algorithm>#include <cstdlib>#include <cstdio>#include <cstrin

2017-02-11 15:56:02 273

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除