自定义博客皮肤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)
  • 资源 (1)
  • 收藏
  • 关注

原创 最小生成树(prime算法、kruskal算法) 和 最短路径算法(floyd、dijkstra)

带权图分为有向和无向,无向图的最短路径又叫做最小生成树,有prime算法和kruskal算法;有向图的最短路径算法有dijkstra算法和floyd算法。  生成树的概念:联通图G的一个子图如果是一棵包含G的所有顶点的树,则该子图称为G的生成树 生成树是联通图的极小连通子图。所谓极小是指:若在树中任意增加一条边,则 将出现一个回路;若去掉一条边,将会使之编程非连通图。生成树各边的权 值总和称为

2015-08-22 14:36:07 583

原创 poj解题报告——3537

题意有个2人玩的游戏在一个规模为1*n的棋盘上进行,每次一个人选择一个地方画上'X',一旦某个人画上X后出现了连续3个X,那么这个人就赢了。给n(3≤n≤=2000)问谁会赢。题解考虑到如果画上一个X,就会有临近区域不能画X,也就是下一个人能画X的区域就变了,那么问题可以转换为谁不能画X谁就输了。接着考虑每次画X的转移情况,最简单的就是画最左边的1~3个格子,这时剩下还有n-3~n

2015-08-20 10:10:48 445

原创 poj解题报告——3533

题意:每个点上有灯,每次选择 (x1,y1,z1), (x1,y1,z2), (x1,y2,z1), (x1,y2,z2), (x2,y1,z1), (x2,y1,z2), (x2,y2,z1), (x2,y2,z2)(1 ≤ x1 ≤ x2 ≤ 1000, 1 ≤y1 ≤ y2 ≤ 1000, 1 ≤z1 ≤ z2 ≤ 1000 )点进行等状态的转换,但要求(x2,y2,z2)必须是有开着的状态

2015-08-19 11:53:14 662

原创 poj解题报告——3710

题目大意:有N 个局部联通的图。Harry 和Sally 轮流从图中删边,删去一条边后,不与根节点相连的部分将被移走。Sally 为先手。图是通过从基础树中加一些边得到的。所有形成的环保证不共用边,且只与基础树有一个公共点。谁无路可走谁输。输入多组数据每组数据第一行m和k表示m个节点,k条边,1为根节点接下来k行描述边输出对于每组数据输出谁必胜#

2015-08-18 11:13:20 503

原创 poj解题报告——3480

先手胜当且仅当(1)所有堆石子数都为1且游戏的SG值为0 ,(2)存在某堆石子数大于1且游戏的SG值不为0   证明:(1)若所有堆石子数都为1且SG值为0,则共有偶数堆石子,故先手胜。(2)i)只有一堆石子数大于1时,我们总可以对该堆石子操作,使操作后石子堆数为奇数且所有堆得石子数均为1ii)有超过一堆石子数大于1时,先手将SG值变为0即可,且总还存在某堆石子数大于1

2015-08-17 10:35:58 376

原创 poj解题报告——2068

题目是说有2*n个人坐在一起,分为2组交叉坐,共有s个石头,每次挨着取石头,石头不能超过当前人取最大的限制,若谁取到最后一个石头,那么就算失败。现在问我方是否能胜利,胜利输出1,失败输出0。dp[i][j]表示为第i个人剩下j个石头的胜负情况。#include#include#includeusing namespace std;const int maxn=8200;int

2015-08-16 11:34:54 432

原创 poj解题报告——1704

题意是在n个格子中放m个球,每次轮流只能移动一个球,球不能超过前面一个球,刚刚开始写这题,由于他的sg值是变化的,每个球随着前面的球的位置改变,sg值在变,一直思考无果,后来看看别人的题解,才明白这题的sg值怎么求。分析如下,最终状态必然所有的的球排满前m个小格,若将它恢复原来的样子,必须先把最后两个间隔恢复,接着两个都要后移,发现在移动的过程中,一对球的相对位置没有改变,因为移动前一个球多少

2015-08-15 10:45:16 411

原创 poj解题报告——2960

经典的Nim游戏题目中已经给出了——每一堆选取的数量没有限制。S-Nim游戏仅仅是限制了每一次从每一堆中选取的个数,依旧用sg函数计算即可。经典的Nim游戏中sg(x) = x,所以结果就是每一堆的状态直接xor即可,S-Nim游戏先计算每一堆的sg函数值,然后判断方法依旧是用xor。#include#include#include#define N 100+10int k

2015-08-14 18:55:08 414

原创 poj解题报告——2425

题意:给一个有向无环图,给M枚棋子,每个人可以移动一个棋子,棋子可以重叠。直到无法移动者Lose算法:按照Topo顺序,依次计算每个点的SG值,然后做合并,注意,先dfs后合并,判断重复#include#include#include#includeusing namespace std;const int NN=1001;int mp[NN][NN];int x[NN],n

2015-08-13 12:03:32 435

原创 poj解题报告——2484

题意:这题有个提示,从中间取,则算断开的两节,比如12345,先手取3,则另一个只能从12,45里取,不能取24;因此只要第一次取不完,另一个人从中间取,就输掉了。#includeusing namespace std;int main(){ int n; while(scanf("%d",&n)&&n) { if(n>2) printf("Bob\n"); el

2015-08-12 11:52:26 360

原创 poj解题报告——2505

假设输入的数是N,如果"我方"想赢,则必然"我方"在赢之前,必须 "我方"达到这样一个数:N/18<=(M1)<N/9. 然而,对方是不会让"我方"达到M1的情况的,所以对方给出的M2这个数,至少 应符合这样的条件:(M2)*2<N/9并且(M2)*9>=N/18.对方是不会甘心 让这个数在他手中出现的,所以"我方"给出的(M3)必须让对手无论怎样都能达到M2 这样的要求,所以(M3)*9<N/(

2015-08-11 11:26:18 398

原创 poj解题报告——2975

题意:求出所给的游戏状态有多少种方法能够赢。其实就是算最后有多少种满足t^a[i]#includeusing namespace std;int a[1002];int main(){ int n,i; while(scanf("%d",&n)&&n) { int t=0; for(i=1;i<=n;i++) { scanf("%d",&a[i]);

2015-08-10 14:14:27 366

原创 poj解题报告——1970

题意:求这局五子棋谁赢了。并写出第一个坐标筛选法模拟,d[4][2]={{0,1},{1,0},{1,1},{-1,1}}为方向矢量#include#includeusing namespace std;int d[4][2]={{0,1},{1,0},{1,1},{-1,1}};bool valid(int x , int y){ return (x>=0&&x=0&&y<1

2015-08-08 14:42:54 671

原创 poj解题报告——2419

题意:每个人都听到有树倒下,如果两个人听到的倒下的树都一样,则他们是一个想法,否则就不是一个想法。求一共有多少种不同的想法。分析:暴力模拟了,开一个二维数组[i][j],i表示人的编号,j表示该人听到的数编号。初始想法数为人数,暴力对比,如果两人所有j相同,则想法数n--;全都循环过输出。ps:因为是随意输入几个数据,截止输入用Alt+65535+Enter即可#include#

2015-08-07 10:15:32 554

原创 poj解题报告——2348

题意:给定两个数,两个人轮流操作,先把其中一个数变为0的人赢。这种操作是用把大数变为大数减小数的若干倍的差(不能小于0)。问谁能赢。分析:谁先抢到关键态,谁就能赢。关键态就是大数是小数的二倍多。一个人一旦抢到了关键态,就可以直接操控下面一连串的非关键态的次序,非关键态相当于每个人进行的都是a%b,所以是交替进行a%b和b%a。也就是说这个究竟自己是a%b还是b%a在非关键态中,自己是无法决定的

2015-08-06 10:07:54 884

原创 poj解题报告——2234

题意:有n堆石子,每人每次可以从一堆中拿走任意多个,两人轮流操作,谁无子可取谁输。输入n堆石子各自的数量,输出先手是否能赢。分析:NP问题,必胜态N(next player wins),必败态P(previous player wins)如果某状态的直接后继中有必败态那么它一定是必胜态,否则为必败态。SG函数。设函数f(x)。先把所有的最终局面(最终局面均为必败P局面)f(x)赋值为0

2015-08-05 09:14:11 392

原创 poj解题报告——1740

还是一道博弈论的题目题意:对于n堆石子,每堆若干个,两人轮流操作,每次操作分两步,第一步从某堆中去掉至少一个,第二步(可省略)把该堆剩余石子的一部分分给其它的某些堆。最后谁无子可取即输。分析:首先考虑两堆相等的情况,一定是谁取谁输,因为对方永远可以做对称的操作。对于四堆,1、2堆相等,3、4堆相等的情况,一定也是先手输,后手也只需要做对称的操作(在先手取石子的对称堆中取相同多的石子,并

2015-08-04 10:48:26 474

原创 poj解题报告——1067

本题是一道威佐夫博奕。下面借用别人整理的3种博弈。(一)巴什博弈(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。很容易想到当n%(m+1)(二)威佐夫博弈(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。如果甲面对(0,0)

2015-08-04 10:36:54 496

原创 poj解题报告——1082

题意:从某年某月某天开始两个人轮流开始将日期推进,推进方法有两种,1.推进到第二天 2.推进到下个月的这一天。谁到达2001.11.4谁赢,谁超过了谁输。分析:np问题,设月号加日号等于d,对于第二种推进方式,会改变d的奇偶性。(因为月的奇偶变了,日的奇偶没变,和的奇偶就变了)。对于第一种推进方式,如果推进后还在同一个月份,那么会改变d的奇偶性。(因为月的奇偶没变,日的变了,和的奇偶就变了)。

2015-08-03 13:00:27 437

原创 poj解题报告——1023

十进制转化为二进制变形。已知十进制非负整数n,假设二进制数字k位,转化为二进制为如下规则:1)若n为奇数,则最低位为必为1,(n-1)/2得到前k-1位十进制数字2)若n为偶数,则最低为必定为0,n/2得到前k-1位十进制数字重复循环,直至n为0为止,即可得到二进制表达式。现在规定二进制的权值发生了改变,改变规则为限定k位二进制数字,用字符‘p’表示该位与原二进制权值相同,即为

2015-08-01 13:55:50 477

原创 poj解题报告——1183

1/a = (1/b + 1/c)/(1 - 1/(b*c)) 1/a = (b+c) / (b*c-1)                                                 b*c-1 = a*b + a*c                                                 c = (a*b+1) / (b-a);(可知:b>

2015-08-01 13:15:59 427

cffi-1.4.1.tar.gz资源Linux版本

cffi-1.4.1.tar.gz资源Linux版本,主要方便各位开发人员的下载

2018-07-06

空空如也

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

TA关注的人

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