- 博客(35)
- 资源 (5)
- 收藏
- 关注
原创 leetcode-Nim Game
可以知道,石头总数n=4时,先手面对必败的情况。所以当n=5时,先手拿走1,让剩余石头总数为4;n=6时,先手拿走2,为7时拿走3;当n为8时,先手最多拿走3个,此时后手只要拿走1-3个让剩余石头数量为4即可必胜,因此n=8时先手必败。n=9时以此类推,可以看出当n为4的倍数的时候,先手必败,否则,先手只要保证拿的个数与后手相加为4(因为n不为4的倍数,n=4k+x,则x一定不为4),则可以保证必
2015-12-02 23:33:32 406
原创 HDU 5358 First One
思路:尺取法。根据数据范围可以知道⌊log2S(i,j)⌋的值可以取到[1,34],枚举每个i,用两个指针l,r将⌊logS(i,j)⌋的值相同的区间整段截取出来,再统计(i+j)的值即可得出结果。复杂度为O(34n)。2
2015-08-09 15:19:07 450
原创 hdu 5360 Hiking
思路:贪心。ans为现在已经邀请到的人数,则下一位应该邀请的人应该为符合条件的人(li#include#include#include#include#include#include#include#include#define N 1000005#define M 1000005#define LL long long#define mod 1000000007#de
2015-08-09 00:41:16 529
原创 hdu 5363
有一个神奇的公式叫做二项式展开公式:,所以c(n,0)+c(n,1)+c(n,2)+........+c(n,n)=(1+1)^n=2^n,二项式展开公式有个神奇的性质:奇数项之和等于偶数项之和,所以假设1~n中有a个奇数,b个偶数,那么答案的个数即为(2^a*(2^b)/2)-1=2^(n-1)-1。#include#include#include#include#include#
2015-08-08 16:43:18 482
转载 树上删边游戏(树上博弈)
树上删边游戏 1.游戏规则 从某一棵树上删除一条边,同时删去所有在删除边后不再与根相连的部分。双方轮流进行,无法再进行删除者判定为失败,也就是比你拿掉最后一部分你就赢了。一个游戏中有多棵树,我们把它们的根都挂在天花板上…或者说,放在地板上也行..这么做是为了方便后面的一些解释和处理。 在这篇文章中,我们讨论的将是公平游戏,也就是双方可以删除任意的边,我们称这个游戏为:Green
2015-07-27 13:25:38 1150
原创 HDU 5301 Buildings
简单题。。。#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#include#define N 10#define M 30#define LL long long#define mod 1000000007using namespace std;int n,
2015-07-25 13:57:48 382
原创 HDU 5305 Friends
思路:总的来说,就是按边dfs+剪枝,具体见代码注释。#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#include#define N 10#define M 30#define LL long long#define mod 1000000007using
2015-07-25 12:14:55 407
原创 HDU5289 Assignment
题目大意:问数组a中,区间[i,j]中最大值和最小值之差不超过k,问这样的区间有多少个。思路:预处理出区间[i,j]中的最大值最小值(这里用的是ST算法,也有用线段树的),然后枚举左端点l,二分出符合条件的右端点r,以l为左端点,j为右端点(l#define _CRT_SECURE_NO_DEPRECATE#include#include#include#include#incl
2015-07-22 16:40:47 1006
原创 HDU5288 OO’s Sequence
多校第一场就爆零了,蛤蛤蛤蛤蛤。。。。题目大意:给一个数组a,f(i,j)表示ai到aj之间存在(这样的数)的个数,(这样的数)就是它不可以整除这个区间内其他的数,求数组a的所有的区间[i,j](这样的数)的个数之和。思路:对ai,找到ai左边离它最近的和右边离它最近的可以被它整除的数,并用l[i],r[i]记录它们的位置,那么在包含ai的集合中,ai是(这样的数)的次数ans[i]=(i
2015-07-22 14:53:55 359
原创 codeforces 547A 548C
题目大意:有两个数h1,h2,每一次操作,h1=(x1*h1+y1)%m, h2=(x2*h2+y2),问多少次操作后,h1=a1,h2=a2,输出操作次数,不可能达到则输出-1.思路:h=(x*h+y)%m,h的种类数是有限的,即h的值是循环出现的,这样我们就可以直接模拟,具体操作见代码注释。#include#include#include#include#include#in
2015-05-27 15:30:27 856
原创 codeforces 548B
题目大意:给出一个n*m的矩阵,q个询问。每次询问改变(i,j)的状态(0改为1,1改为0),输出n行中最大连续为1的个数。思路:直接模拟。最开始没有注意到要“连续为1”,wa了好多次。#include#include#include#include#include#include#include#include#define mx 505#define y1 y1234
2015-05-27 13:24:59 614
转载 POJ 1635
原博地址:http://www.cnblogs.com/rainydays/archive/2011/06/15/2081779.html题意:给出两棵树的深度遍历序列,0表示远离根,1表示向根走。判断两树是否同构。分析:利用树的最小表示,定义S[t]表示以t为根的子树的括号序列S[t]={‘(‘,S[c1],S[c2],…,S[ck],’)’ (c1,c2,…,c
2015-05-19 17:07:55 412
转载 POJ 2411 状态压缩DP
原博地址:http://blog.csdn.net/xingyeyongheng/article/details/21692655分析:用1*2的砖去恰好铺满n*m的空间,对于第k行第j列,有3种情况将该点铺满1:由第k-1行第j列砖竖着铺将第k行第j列铺满2:由第k行第j列被横铺砖铺满3:第k行第j列砖竖着铺将该点铺满所以对于每一列的情况其实有两种(1,0)表示该点铺砖还是不
2015-05-19 13:55:07 436
原创 POJ 1260
题意:有c个种品质不同的珍珠,若要买某一品质的珍珠必须在你买的数量的基础上,多付10个这种珍珠的价钱,可以用高品质的珍珠代替低品质的。求要买到所有目标珍珠至少要花多少钱。数据保证按珍珠的价钱由低到高输入。思路:易得珍珠的替代必须是连续的,不能跳跃替代。dp[i]表示考虑到第i类珍珠时所需要的最小花费,s[i]表示前i种珍珠的个数。状态转移方程为:dp[i]=(a[i]+10)*p[
2015-05-19 10:55:38 425
原创 POJ 1080
题目大意是:给定两组DNA序列,要你求出它们的最大相似度。每个字母与其他字母或自身和空格对应都有一个打分,求在这两个字符串中插入空格,让这两个字符串的匹配分数最大思路:最长公共子序列变形#include#include#include#include#include#include#include#include#define y1 y12345#define mx
2015-05-18 15:03:47 411
原创 POJ 1050
题意:出一个矩阵(100×100)求一个子矩阵,使得子矩阵中各个元素的和最大。思路:一维数组最大连续字段和的变形,具体思路见代码注释。#include#include#include#include#include#include#include#include#define y1 y12345#define mx 110#define inf 0x3f3f3f3f#
2015-05-18 11:40:09 433
原创 POJ 1141
题意:求增加括号数最小的序列思路:见代码注释#include#include#include#include#include#include#include#include#define y1 y12345#define mx 110#define inf 0x3f3f3f3f#define LL long long#define ULL unsigned long
2015-05-18 10:18:20 434
原创 POJ 1015
题意:在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定。陪审团是由法官从公众中挑选的。先随机挑选n 个人作为陪审团的候选人,然后再从这n 个人中选m 人组成陪审团。选m 人的办法是:控方和辩方会根据对候选人的喜欢程度,给所有候选人打分,分值从0 到20。为了公平起见,法官选出陪审团的原则是:选出的m 个人,必须满足辩方总分D和控方总分P的差的绝对值|D-P|最小。如果有多种选择方案的 |D
2015-05-15 11:50:49 452
原创 POJ 2479
原题链接:http://poj.org/problem?id=2479题意:对整数串S,求其两个不相交的子串s1、s2,使得s1+s2的值最大思路:见代码注释#include#include#include#include#include#include#include#include#define y1 y12345#define mx 50005#defin
2015-05-14 19:11:00 390
转载 刷题刷题
POJ推荐50题 第一类 动态规划(至少6题,2479 和 2593 必做) 2479 和 2593 1015 1042(可贪心)1141 1050 1080 1221 1260 2411(稍难)1276 第二类 搜索(至少4题) 1011 1033 1129 2049 2056 2488 2492(稍难,也可并查集)第三类 贪心(至少2题) 10
2015-05-14 17:37:59 1667
转载 最长递增子序列问题
原博客:http://www.cppblog.com/mysileng/archive/2012/11/30/195841.html最长递增子序列问题:在一列数中寻找一些数,这些数满足:任意两个数a[i]和a[j],若i设dp[i]表示以i为结尾的最长递增子序列的长度,则状态转移方程为:dp[i] = max{dp[j]+1}, 1这样简单的复杂度为O(n^2),其
2015-05-11 14:22:25 511
原创 最大值最小化问题
题意:把一个包含n个正整数的序列划分成m个连续的子序列。设第i个序列的各数之和为S(i),求所有S(i)的最大值最小是多少?思路:设s[i]中最大值的最小值是x,则很容易想出,x能取得最大值为全序列之和sum,x能取的最小值为a[i]中的最大值max,即x的取值范围为[max,sum]。然后要做的事情就是在[max,sum]中找到x,根据习惯尿性,红果果的二分查找。#include#in
2015-05-06 15:29:51 1334 3
原创 UVaOJ 10003 Cutting Sticks
UVaOJ挂的我心塞。。。题目大意:有一根长度为l的木棍,要把它从给定的n个点锯断,每锯断一次所需的费用等于木棍的长度,问锯完给定的点多需的最小的花费。区间dp,dp[i][j]为锯i点到j点所需的最小花费,状态转移方程:dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]+c[j]-c[i]);只会写记忆化搜索,递推循环顺序傻傻搞不清楚,别人写的递推方法:h
2015-04-28 22:36:48 502 1
原创 UVaOJ 674 Coin Change
题目大意:给出5种面值的硬币1,5,10,25,50,问相加之和为n的组合个数。最开始是想到DAG模型,于是酱紫循环了for (int i = 1; i < mx; i++){ for (int j = 0; j < 5; j++){ if (i >= a[j]) dp[i] += dp[i - a[j]]; }}写完发现样例都过不了,才发现循环的姿势出问题了。#def
2015-04-28 19:30:28 451
原创 软院校赛F题
大水题,题目大意a!和b^c比大小,1 #define _CRT_SECURE_NO_DEPRECATE#include#include#include#include#include#include#include#include#include#define mx 200005#define LL long long #define mod 1000000009#
2015-04-28 18:30:52 416
原创 codeforces 538c
题目大意:一共n天,给出第m天爬到k米高,每天最多爬1m或者下降1m,求最高的可能性高度是多高水水的数学题,因为k=1,画出来就是一个等腰直角梯形,算出公式即可。另外,注意一下第一个记录距第一天,和最后一个记录距第n天也要考虑进去,最开始没考虑,wa了一发。#define _CRT_SECURE_NO_DEPRECATE#include#include#include#incl
2015-04-27 22:07:58 903
原创 codeforces 538B
简单的水题硬是给我弄复杂了。。。简单贪心解法在这里http://www.cnblogs.com/qscqesze/p/4458883.html先把所有01组合列出来,然后动规解决的OTZ#define _CRT_SECURE_NO_DEPRECATE#include#include#include#include#include#include#include#incl
2015-04-27 12:11:31 592
原创 codeforces 538A
出题人红果果的秀了一回英语“it is possible to cut out of the banner some substring in such a way”,“some substring”的意思是某个子串,“some substrings”才是一些子串OTZ。题目大意:给一个字符串,从中减去一个子串,是否能变成“CODEFORCES”,水题水水的过,要变成“CODEFORCES
2015-04-27 10:23:08 761
转载 【博弈论】阶梯博弈
原文地址:http://blog.csdn.net/kk303/article/details/6692506首先是对阶梯博弈的阐述...博弈在一列阶梯上进行...每个阶梯上放着自然数个点..两个人进行阶梯博弈...每一步则是将一个集体上的若干个点( >=1 )移到前面去..最后没有点可以移动的人输..如这就是一个阶梯博弈的初始状态 2 1 3 2 4 ...
2015-04-26 23:06:25 638
原创 【博弈论】Nim游戏
转自百度百科【定义】通常的Nim游戏的定义是这样的:有若干堆石子,每堆石子的数量都是有限的,合法的移动是“选择一堆石子并拿走若干颗(不能不拿)”,如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。这游戏看上去有点复杂,先从简单情况开始研究吧。如果轮到你的时候,只剩下一堆石子,那么此时的必胜策略肯定是把这堆石子全部拿完一颗也不给对手剩,然后对
2015-04-26 22:42:42 445
原创 hdu 1754
线段树 单点更新#include#include#include#include#include#include#include#define mx 200005#define LL long long#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;int ma[mx<<2];int
2015-04-23 16:45:05 340
原创 hdu 1166
线段树 单点更新#include#include#include#include#include#include#include#define mx 50005#define LL long long#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;int sum[mx<<2];i
2015-04-23 16:14:20 378
原创 Codeforces 535C Tavas and Karafs
大概是熬夜熬到脑子都不清醒了,废了九牛二虎之力才好不容易看懂题意,结果还是没做出来。题意:一个等差数列,一次可以把m个数减一,有t次机会,问能使sl,sl+1,...,sr都为0的最大r。思路:因为是一个递增的等差数列,直接二分答案。
2015-04-16 00:33:04 450
华南理工大学操作系统实验:实现一个unix命令解释程序
2015-12-15
华南理工大学操作系统实验:实现一个文件查找程序
2015-12-15
华南理工大学操作系统实验:读者写者问题
2015-12-15
华南理工大学操作系统实验:用线程实现睡觉的理发师问题
2015-12-15
华南理工大学操作系统实验:生产者消费者问题
2015-12-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人