自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 extern关键字的用法 && namespace

口诀: extern表示声明,可以多次//main.cpp#include <iostream>#include "A.h"namespace mmspam { extern A a; void f() { std::cout<<a.x<<std::endl; }}void f2() { std...

2018-12-21 17:50:42 1290

原创 线程安全 阻塞队列

#include <iostream>#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <wait.h>#include <pthread.h>#include <queue>#include <mu

2018-09-02 14:20:39 211

转载 进程间通信框架tars

rpc 框架要解决的问题1. 实现服务的分布式,名字路由服务,以及服务心跳监控,动态扩容,流量统计,调用鉴权。2. 开发者无需关注通信的细节,接口调用就像本地函数调用。3. 编程语言无关化。 ...

2018-08-30 09:38:19 869 1

原创 插入排序 模板

#include<bits/stdc++.h>using namespace std;vector<int> x{10,3,5,6,20,45,1,9};vector<string> w{"a","x","z","s","o","b","y"};template < typename RandomAccessIterator ,typename compare>void InsertSo

2018-01-26 14:52:37 197

原创 《剑指offer》上的一道原题,求1+2+……+n,要求不能使用乘除法,for、while、if、else、switch、case等关键字以及条件判断语句

《剑指offer》上的一道原题,求1+2+……+n,要求不能使用乘除法,for、while、if、else、switch、case等关键字以及条件判断语句.#include<bits/stdc++.h>using namespace std;typedef long long ll;int main(){// if(fopen("D:\\acm.txt","r")!=NULL){/

2017-08-27 22:36:06 342

原创 HDU 6038 Function

算法: 并查集找定义域的环,值域的环。 对于定义域内的大小为x的环 枚举值域里 大小为y 的环 x%y==0 具体在代码。#include <bits/stdc++.h>using namespace std;typedef long long ll;#define q (int)const ll mod = 1e9 + 7;int a[q 1e6], b[q 1e6];struct

2017-07-25 22:48:45 313

原创 配置C++17开发环境的codeblock&&eclipse

本人QQ970026607 有问题可联系参考博客: http://blog.csdn.net/u013595419/article/details/45538605 http://blog.csdn.net/kiritow/article/details/53311570 http://blog.csdn.net/Just_Do_IT_Ye/article/details/47615153Wi

2017-07-21 19:31:16 1479

原创 uvalive 7834 状态压缩dp

题目描述: 一个人打怪,一共有不超过8瓶药,人有两种属性,一个是力量,一个是血液中毒的浓度,初始力量为100,毒浓度为0,药能增加力量,但不能超过100,药也能加大毒的浓度,不能大于等于100,怪的属性都是一样的,打死一只怪物你需要力量减去一个定值,毒的浓度也会减去一个定值,但是你的力量不能减低至0,毒浓度也不能降低至负数,打死一只怪之后你可以喝不超过一瓶药,假设怪数量无限,求能打死多少只怪。设f

2017-07-12 22:05:19 265

原创 2017 计蒜之道 复赛 腾讯消消乐

官网题解 用f(mask,step) 表示考虑当前mask 集合内的数用 step 步删除完的方案数,每次转移则可以简单地用 O(n^2) 来进行枚举删掉的一段区间进行转移。 就是 记忆化搜索/dp递归会超时。还是能for循环就for循环。判断dp[S][step]+=dp[tmpS][step-1]能否转移的小小优化。 可以枚举所有i~j预处理所有状态能不能消除,转移的时候O(1)判断(在代码中

2017-06-11 21:05:36 393

原创 814C An impassioned circulation of affection

思路: 链表模拟。 比如样例 koyomi 对26个字母 都创建一条链表,比如字母’o’ 2->3->-1(前向星逆)对于每个询问 mi(活力值) ci(字母) 有滑动窗口模拟(队列) 对于链表下一跳,当前活力值够就跳。进队,更新。。不够,就队头往后缩。 恢复活力值,继续判断能否往后跳…….直到链表的尽头。#include <cstdio>#include <bitset>#include <

2017-06-07 23:09:54 240

原创 2017计蒜客第六场 微软大楼设计方案(困难)

思路: 排序+rmq+二分 按x排序,对每个关键部门 二分可以延伸的位置 (二分的时候判定条件要缩一下,因为h最大值为20,可以设判定为d -40 ),然后继续往右延伸到(大概d+40)就可以退出了, #include <iostream>#include<stdio.h>#include<algorithm>using namespace std;typedef long long

2017-06-04 21:27:50 360

原创 01背包 poj3211 STL助攻

bug一开始头昏脑胀把dp[0]的值赋值为1#include<stdio.h>#include<algorithm>#include<string.h>#include<vector>#include<cmath>#include<iostream>#include<map>#include<string>using namespace std;typedef long long

2017-01-08 17:56:48 259

原创 分组背包 poj 1837

此题的最大bug 就是时间复杂度计算错误 20*20? 、、、、、25*15*20*20此题的特点是每组“有且仅有一个” 组与组之间的转移 dp[k+1][j+v[k][i]] += dp[k][j] 这个保证了 每组有。 for(组别){ for(重量){ for(组内每件物品){ 这样的枚举顺序保证了 每组仅有一个 重量的逆

2017-01-08 17:04:36 275

原创 分组背包hdu 3033 至少选一个

感谢某神的提供的数据。 关键还是自己不够细心, b==0? 这题的状态转移细节很多 首先1.如何保证每组物品都至少选一个——> dp[][]置空,dp[1][0]置0. 从第k组,转移到第k+1组的时候,去掉o1背包常见的那种不选的继承状态->(dp[k+1][j]=dp[k][j])最主要的状态方程如下 dp[k+1][j]=max(dp[k+1][j],max(dp[k][j-w[i]]+

2017-01-08 14:16:57 416

原创 分组背包 hdu 1712

枚举的时候 用一组的物品去刷新一个重量,有种每组物品只选一次的感觉 dp[k+1][j]=max{dp[k+1][j],dp[k][j],dp[k][j-i]+A[k][i]};#include<stdio.h>#include<algorithm>#include<string.h>#include<vector>#include<cmath>#include<iostream>usi

2017-01-08 12:24:54 209

翻译 poj 1947 树形dp

别人的思路for(int j=n-1;j>=0;j--){ for(int k=1;k<=n-j;k++){ dp[rt][j+k]=min(dp[rt][j+k],dp[rt][j]+dp[son][k]-1); } }因为j 是递减的, 更新后的 dp[rt][j+k],没有机会成为 dp[rt][

2017-01-07 16:41:37 233

翻译 poj 2152树形dp

最大的bug就是这里 for(int jj=1;jj<=num[rt];jj++){ tem[jj]=dp[rt][jj]; } for(int j=1;j<=num[rt];j++){ for(int k=0;k<=j;k++){ //dp[i][j]=max(dp[i][j],dp[i][j-

2017-01-07 11:43:31 220

原创 hdu 3221 矩阵幂乘 + 超大a*b%c

熟悉挑战上的矩阵幂乘法找了最久的bug 就是这段代码, 不能直接% 就是 有种M周期后不是 0的东东 for(int n1=0;n1<A.size();n1++){ for(int m2=0;m2<B[0].size();m2++){ for(int m1=0;m1<A[0].size();m1++){ C[n1]

2017-01-06 23:01:08 294

原创 HDu 5855

实在是巧妙巧妙  如何   最大化    利润=(   (收入1+收入2+收入3.....)-(支出1+支出2+支出3.....)  )满足所有向边 (u,v)(支出u,收入v ) ;sum - 最小割一种贪心原则,赚了就赚了,不然就抵消,因为是总收益 - 最小割(最大流),假如要建造 x 工厂需要 y元,由于巧妙的图,假如亏本,是跑不出,只能跑出那个相对的收益,。。减去后相当于不建某

2016-08-17 17:09:45 291

原创 HDU 5025 Saving Tang Monk

没有利用题目所造成的key的特殊性质,结果–比赛的时候和蛇一起状态压缩超内存。 int dp[][][][] -> setdp[][] 试图这样做,减少空间的浪费 结果超时. 用优先队列的搜索到达结果后可直接:return s.t;否则应该: res=min(res,s.t );优先列队下可以有这个剪枝if(s.t<vis[s.x][s.y ][s.s1 ][s.s2 ]){

2016-08-08 22:41:53 243

转载 poj 2137 Cowties

includeincludeincludeincludeincludeusing namespace std; typedef long long ll; const int maxn=100100; const double INF=100000000; double dp[110][50];double dist(double x1,double y1,double x2,double

2016-07-18 21:12:03 194

转载 1113 Wall

#include<stdio.h>#include<string.h>#include<algorithm>#include<vector>#include<cmath>using namespace std;typedef long long ll;const int maxn=100100;const double PI=acos(-1.0) ; int n; doubl

2016-07-18 21:10:04 167

转载 poj 2288Islands and Bridges

#include<stdio.h>#include<string.h>#include<algorithm>#include<vector>#include<cmath>#include<iostream>using namespace std;typedef long long ll;const int maxn=100100;typedef long long ll;int w

2016-07-18 21:08:51 224

转载 Codeforce 691D. Swaps in Permutation

贴下别人的代码,这道题很经典,一开始的想法是先求出连通性,用(flody) 发现n为十万 ,然后想暴力来一遍(有就换) 发现不行,因为一个大的数有时需要先换到后面一点的位置,再借这个位置换到比之前更前的位置。 看了代码,普遍是用dfs的做的,根据我的拙见,应该是用dfs遍历每一个联通块,对于每一个联通块,内部任意两个值都是可交换的,所以只要对其进行排序,把大的值,放到靠前的位置上就可以了;#in

2016-07-14 09:16:02 355

转载 HDU 5135I - Little Zu Chongzhi's Triangles

http://acm.hdu.edu.cn/showproblem.php?pid=5135 题目大意: 给n(n<13) 条边,你可以任意组合成多三角形,求面积和最大。 关键是想到它是状态压缩dp ,枚举C (12,3) 枚举不完,n<13可以完全在(int)二进制的压缩范围内。接下来就是dp 三要素了 初始: 这题简单, 面积为零 转移: dp[s&v] = max(dp[s&v],dp

2016-07-14 09:07:08 180

转载 UVa 11992 Fast Matrix Operations

这道题要求同时实现快速_求区间最小值,最大值,区间和,区间成段修改,区间成段增减的线段树。 我把刘汝佳的风格和not only but successful 线段树结合在一起搭了一个模板,原理还没理解 。。 刘汝佳的query查询方式+ not only sucess的build 建树。#include<stdio.h>#include<algorithm>#include<string.h>

2016-07-12 22:55:48 171

转载 Toj 3990. I guess the gift is a bag! II

题目连接: http://acm.tju.edu.cn/toj/showp3990.html解法:直接要我们求欧拉函数; 这里用了狂斌的模板。 求快速求单个欧拉函数。#include<stdio.h>#include<algorithm>#include<string.h>using namespace std;typedef long long ll;int main(){ //

2016-07-11 12:30:18 193

原创 Toj 3984. I guess the gift is an ipad!

链接 : http://acm.tju.edu.cn/toj/showp3984.html 有问题联系:QQ 970026607 题目大意: 贪吃蛇的游戏,吃了就变长,判断会不会随着时间的移动(操作),撞到墙,或者自己。我的解法是用了一个 vector 保存之前的状态,len 表示蛇的长度,嗯,就我来代码来说,只要判断 vector[i-len+2…..i-2]之间状态就可以判断是否会撞到自

2016-07-11 12:22:21 242

转载 欢迎使用CSDN-markdown编辑器

题目链接 POj 1860 : http://poj.org/problem?id=1860 货币交换,最短路的巧妙应用 。 #include<stdio.h>#include<algorithm>#include<vector>#include<queue>#include<string.h>using namespace std;const int maxn=100+5;co

2016-07-08 16:11:10 181

原创 USACO 3.4American Heritage 中序,前序构建二叉树

USACO 3.4American Heritage http://www.nocow.cn/index.php/Translate:USACO/heritage 思路就是: 画个简单二叉树,写出它的前序和中序。。然后把自己当成电脑,把模拟过程,转化为一行行递归的代码#include <cstdio>#include<iostream>#include<string>#include<s

2016-06-20 20:28:53 223

转载 NEUOJ 720 头哥的烦恼

题目意思:头哥,众所周知,作为acm队的主力选手,最近遇到了一些烦恼,那就是CET-4临近了,但是他还有很多单词没记住.现在头哥有n个单词没记住,(所有的单词长度加起来不超过5e5),他需要区分其中的m对单词,因为两个单词前面有一部分是一样的,所以他只需要记住后面不相等的部分,所以头哥想要知道每对单词最长相等的前缀长度。思路就是,建个字典树在,所为的最长公共前缀,可以这样求,即是,两个字符串的最近公

2016-06-19 01:02:42 296

转载 ZOJ 3605 Find the Marble

转载自 http://blog.sina.com.cn/s/blog_5123df350100zp0s.html 照着题解写一次,就当自己懂了。 zoj 和virtual oj 都挂了。好像。。n个罐子,有一个石头放在第s号罐子里,然后交换这些罐子m次,只能记住k次,每次交换被忘掉的概率相同,那个猜的人(按概率最大的猜)最可能猜哪号罐子里有石头。用dp[i][j][k]表示交换了i次,忘掉

2016-06-18 17:06:42 274

转载 ZOJ 3604 Tunnel Network

题目大意: 给定编号1-n的点,和给定编号1-S 的联通图,刚开始1号联通图只有 1个顶点,就是编号为1的顶点,2号联通图也只有1个顶点,编号为2的顶点,同理 3,4,5知道s; 剩下的顶点还有 s+1,s+2,s+3,….到n; 这些点你可以随机分配,以连边的方式加入到S个联通图里, 现在问。。。最后由N个点构成的森林。。种类,方案数有多少?先看看purfer 数列这个概念吧。 http:

2016-06-18 15:10:17 702

转载 Gym 100947E Qwerty78 Trip

连接: http://codeforces.com/gym/100947/problem/E 题目大意:给一个 n *m 的矩阵 问从左上角,走到右下角有多少条路径, 在这个矩阵中,有一个点Q(x,y)是陷阱,意味着,路径不能经过这个点。方案数= 总的方案数 减去 经过陷阱的路径的方案数;总的方案数 C(n+m-2,n-1) ….意思就是从左上到右下,你需要经过走n-m-2 步,选择任意其中

2016-06-18 13:28:15 488

转载 XTU 1185

XTU 1185题目描述Bob今天碰到一个问题,他想知道x3+y3 = c 是否存在正整数解?输入第一行是一个整数K(K≤20000),表示样例的个数。 以后每行一个整数c(2≤c≤109)  先两层for循环预处理c 的值领,然后二分查找。

2016-06-16 23:19:13 282

原创 POJ 2823 Sliding Window

注意: 用G++ 提交会超时,用c++ 5000ms 勉强过 具体的优化方式,明天再写,高数考试。 单调队列裸体不说了,百度。#include<cstdio>#include<cstring>#include<iostream>#include<queue>using namespace std;const int maxn=1e6+100;int que[maxn*2];int

2016-05-31 22:45:40 249

原创 HDU 4568 Hunter

题目大意: 自己选择位置进入迷宫,选最好的路径访问所有的宝藏,然后走出迷宫。要求最短”时间“ 首先,这是一个迷宫问题。但是普通的dfs,bfs 并不能求出访问所有宝藏的时间总和。 所以,可以再抽象一下,求出宝藏两两间的距离当成边,宝藏当成顶点,然后构图。最短路? 不,最短路不能求和。 尝试dp ,那种dp ? (1<=k<=13 )状态压缩? 想想以前做过的经典题——TSP 旅行商问题。

2016-05-31 20:15:22 375

空空如也

空空如也

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

TA关注的人

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