自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (2)
  • 收藏
  • 关注

原创 POJ1077(8数码问题)

题目链接:http://poj.org/problem?id=1077 这个用BFS、双向BFS、Astar都能解决,这里先用双向BFS来做。 因为要输出路径,多以不能直接用STL中的queue容器,不然出队后就找不到了,所以就自己封装了一个队列,用数组模拟的,还增加了输出路径的功能,留下来当做模板来用。 这里让空格走四个方向,把状态按照题目给的方式排成一列,用康拓展开来记录状态,用两个队列

2016-08-24 14:49:04 457

原创 康拓展开和它的逆运算

康拓展开可以看做是一种hash函数,它可以把一个数列转化成一个数,这个数就是这个数列在它的全排列中处于第几位(按照字典序从小到大排列,编号从0开始)公式是 X=a[0]*(n-1)!+a[1]*(n-2)!+...+a[i]*(n-i-1)!+...+a[n-2]*1!+a[n-1]*0! 其中,a[i]为所给的数列中第 i (从0开始)个数在未出现的元素中是排在第几个(从0开始),如果存在重

2016-08-23 16:10:10 509

原创 POJ1915(Knight Moves,双向BFS)

题目链接:http://poj.org/problem?id=1915 用两个队列 Q和 P,Q用来储存正向搜索的节点,P用来储存逆向搜索的节点;在地图中进行染色,正向搜索到的节点染色为1,逆向搜索到的节点染色为2,当正向搜索到染色为2的节点时或者逆向搜索到染色为1的节点时表示两者相遇;还要标从起点(或终点)到当前位置所需要的步数,当相遇的时候起点到该点的距离加上重点到该点的距离就是起点到终点的

2016-08-22 13:56:07 1469

原创 POJ1256

题目链接:http://poj.org/problem?id=1256 排列问题,在头文件algorithm里有这么一个函数:next_permutation(),参数和sort()相同,就是求数组内元素的下一个排列,按照字典序的升序排列,也可以自定义比较函数cmp,与之相反的还有prev_permutation()。 #include #include #include #incl

2016-08-19 23:27:15 1040

原创 HDU1698

题目链接: 区间替换,区间求和,模板题。 #include using namespace std; typedef long long ll; ll sum[200020]; ll delta[200020]; ll cnt[200020]; int d, ql, qr; ll tmp; void PushUp(int x) { sum[x] = sum[x<<1] + sum

2016-08-19 23:09:00 347

原创 POJ1018(DP)

用数组a[i][j][0]表示第 i 个设备第 j 个公司提供的带宽,a[i][j][1]表示费用。 一开始用分组背包,f[i][j]表示前 i 个设备花费 j 费用所能得到的最大带宽,那么 f[i][j] = max{f[i-1][j-a[i][j][1]] + a[i][j][0]},但是超时,因为费用是累加的,这样费用的循环上界就是每台设备对应的最大费用的总和,就是这样会超时的。 后来把

2016-08-19 23:04:56 336

原创 POJ3667

题目链接:http://poj.org/problem?id=3667 题意:1 a:询问是不是有连续长度为a的空房间,有的话住进最左边 2 a b:将[a,a+b-1]的房间清空 思路:记录区间中最长的空房间 #include #include #define min(a,b) (a)<(b)?(a):(b) using namespace std; const int INF

2016-08-18 15:40:49 376

原创 SG函数的一个典型应用

【描述】2人玩的游戏,一个p*1的棋盘和红、绿、蓝三种棋子,棋子的大小分别是c*1、z*1和n*1,每种颜色的棋子个数无限。两人轮流摆放棋子,规则是: 棋子不得超出棋盘范围; 棋子不能有任何部分重叠; 如果哪个人没有棋子可放,即算输。 判断先手是否有必胜策略。 【输入】 第一行是正整数c、z和n,都不超过1000。 第二行是m,表示棋盘种类。接下来的m行,每行一个正整数p。m和p都不

2016-08-12 21:38:31 389

原创 HDU1850(博弈论,Being a Good Boy in Spring Festival)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1850 尼姆博弈,详见:http://blog.csdn.net/qust1508060414/article/details/52194676 有了尼姆博弈的知识,代码就简单多了。 一个关于亦或运算的知识:(a^b)^a == b,(a^b)^b == a。 #include using

2016-08-12 20:07:03 252

原创 HDU1846(博弈论,Brave Game)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1846 巴什博奕,可以用对抗搜索,也可以用数学方法来解决。 所谓对抗搜索,其实是一种记忆化搜索,下面给出对抗搜索的模板: bool dfs(当前状态) //判断当前状态是否是必胜状态 { if (当前状态已经搜索过) return 搜索结果; if (当前状态已经是末状态或者已经可以判

2016-08-12 19:55:26 242

原创 HDU1527(博弈论,取石子游戏)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1527 威佐夫博弈: 设k为任意正整数,有以下两个函数: 1、m(k) = k * (1 + sqrt(5)) / 2; 2、n(k) = m(k) + k; 点(m(k), n(k))和点(n(k), m(k))都是P点(必败点),其余都是N点(必胜点)。 详见:http://bl

2016-08-12 19:33:41 353

原创 博弈总结

Bash's Game(巴什博弈) 【描述】只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取1个,最多取m个,最后取光者得胜。 【策略】如果 n = (m + 1) * r + s ,(r为任意自然数,s≤m),即n%(m+1) != 0,则先取者肯定获胜。因为,如果n=(m+1)r + s,(r为任意自然数,s≤m),那么先取者要拿走s个物品,如果后取者拿走k(≤m)个,那么先取

2016-08-12 19:32:42 487

原创 尺取法

新学的东西,用水题来练练手。 下面是套路: int l = 1, r = 1; while (退出条件) { while(不满足条件) { r++; } if (满足条件) { 更新结果; } l++; } 水题: 【1】http://poj.org/problem?id=3320 这道意思是一本书有n页,每一页上有一个知识点标号a[i]可能重复,要求选择

2016-08-09 18:10:26 421

原创 HDU3652(数位DP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3652 看了数位DP的记忆化搜索的模板,拿这个题来练手。 先贴上数位dfs的模板: 首先要说的是又这么一个定理(其实我也不知道有没有这么一个定理,不过是正确的):假如一个3位的10进制的数x,它的各位数从高位到低位分别为x1、x2、x3,那么 x % k = ((x1 % k * 10 +

2016-08-08 19:43:51 294

原创 HDU2089(数位DP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 区间 [n, m] 中满足条件的个数等于[0, m]的个数减去[0, n-1]的个数。 怎么计算区间[0,n]中满足条件的个数呢? 预处理出数组 f[i][j],表示长度为 i 并且以 j 开头(可以有前导0)的不含数字 4 和 62 的数字的个数,其实可以说是区间[0, 10^i-1]中

2016-08-06 21:12:48 363

原创 ural1057(数位DP)

题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1057 在《浅谈数位统计类问题》中的例1有详细题解,这里对题解中一些不怎么容易理解的地方加一些注释。 对于二进制的情况: 这课假想的完全二叉树自上而下对应二进制数字的从高位到低位。 “右转时遇到的”是指从根节点进入右子树时序统计根节点的左子树上相应的路径的个数。 函数 int

2016-08-06 14:32:33 668

原创 POJ2411(状态压缩DP)

题目链接:http://poj.org/problem?id=2411 搜索到众多题解,有的过于简单看不懂,有的冗杂看着烦,经过挑选 这篇 还是蛮不错的。 题解中 s 和 ss 兼容是指:能不能通过一种方式,把第 i-1 行空余的方格填满的同时让第 i 行达到状态 s 。 代码是抄的题解的,具体的注释还是看题解吧 #include #include using namespace std;

2016-08-05 17:40:31 405

原创 Message事实更新UI

因为UI只能在主线程里更新,那在子线程中怎么事实更新呢? 一个简便的方法就是用Message的消息传递机制。 需要注意的是,Message导入的包一定要是android.os.Message,而不能是另外两个: import android.app.Activity; import android.os.Bundle; import android.os.Handle

2016-08-03 12:44:42 307

原创 HttpGet

首先要有架包:戳这儿下载 其次要有访问网络的权限:<uses-permission android:name="android.permission.INTERNET" /> 代码: try{ HttpClient httpClient = new DefaultHttpClient(); String url = "http://v.juhe.cn/weather/

2016-08-03 10:57:34 385

原创 POJ3254(状态压缩DP)

题目链接:http://poj.org/problem?id=3254 与POJ1185类似,不过这里每一行的状态只收前一行影响,所以用 f[i][t] 表示第 i 行状态为 stk[t] 时的总方案数,那么根据加法原理,f[i][t] = f[[i][t] + f[i-1][j],j 表示第 i-1 行所有合法的切与状态 stk[t] 不相邻的状态,记得取模。 还有就是对每一行的状态判断是否

2016-08-03 10:21:22 415

原创 HDU3001(状态压缩TSP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 与TSP问题有所不同,这里每个点可以走两次。TSP问题每个点只能走一次用二进制来状态压缩,这里可以走两次,就用三进制来状态压缩。 需要注意的问题是,可能会有重边,所以在输入的时候注意对重边取min。其实,对于图的问题,只要没有说保证没有重边,还是考虑一下重边的处理吧。 状态:dp[S][i

2016-08-02 10:09:28 327

TensorFlow简单应用实例

TensorFlow的一个简单应用实例,基于Python2.7和TensorFlow1.3.0。随机产生32组生产出的零件的体积和重量,训练5000轮,每500轮输出一次损失函数。输出结果在文件的下面。

2018-07-23

HttpGet_jar包

HttpGet_jar包

2016-08-04

空空如也

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

TA关注的人

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