ssoj
kaqiur
从零到一
展开
-
电视游戏问题(捆绑DP)
农夫约翰的奶牛们游戏成瘾!本来FJ是想要按照陶教授的做法拿她们去电击戒瘾的,可是后来他发现奶牛们玩游戏之后比原先产更多的奶。很明显,这是因为满足的牛会产更多的奶。但是,奶牛们在哪个才是最好的游戏平台这个问题上产生了巨大的分歧。一只奶牛想要买一台Xbox 360来跑《光晕3》;另外一只奶牛想要一台任天堂Wii来跑《任天堂明星大乱斗X》;第三只奶牛想要在PlayStation 3上面玩《潜龙谍原创 2016-11-15 21:26:36 · 986 阅读 · 0 评论 -
ssoj1018地下组织
【题意】他要让一些人有联络方式, 使得每个人都可以直接戒者间接的联系其他人。当然, 为了让地下组织保持隐蔽, 建立的联络方式越少越好。 Nc现在有m对可以选择建立的联络方式。 对于每对选择, 都有一个特定的花费。 建立好一个完善的联络方式的总花费, 是选择的每对关系的花费的最大公约数。 当然,建立好一个完善联络方式的方法也还是不唯一。 现在nc想知道, 对于所有的可能的方法, 都会有一个总花费。原创 2015-10-28 13:04:40 · 510 阅读 · 0 评论 -
ssoj2458IOIOI卡片占卜(最短路)
【题意】给一个由五部分组成的序列(a个I +b个O+c个I+d个O+e个I),又给出n个操作x,y,每次费用为y-x+1,问最少花费多少可以将序列变成全I。无解输出-1。【思路】%%%yp,转化成最短路问题,从I O的交界跑到另一个交界,最短路将O变成I的花费,有三种跑法,取最小。【代码】#include #include #include #include #include原创 2015-10-27 17:18:41 · 597 阅读 · 0 评论 -
ssoj2456装饰大楼
【题意】有n个大楼,给你n-1个数a[i]表示位置i之前(包括位置i)有多少栋递增的高楼。问完整序列可能有多少种,也可能无解。【思路】竟然神游着把a[i]想成高度,推翻了想出来的正解……分三种情况:1、无解:a[i]>max+2或是多个a[i]==max+2;(max∈(a[1]……a[i-1])),无解;2、中间断开:有一个a[i]==max+2;(max∈(a[1]……a[i-1])),用原创 2015-10-27 16:10:44 · 938 阅读 · 0 评论 -
ssoj1017集合栈(stack+set)
【题目】计算机的操作对象是一个以集合为元素的栈,一开始这个栈是空的。在每一步操作之后,栈顶集合中所含元素的个数是需要你输出的东西。计算机的操作指令有PUSH,DUP,UNION,INTERSECT,ADD。•PUSH操作将一个空集合{}入栈•DUP操作将把一个和栈顶元素相同的集合入栈•UNION操作进行两次出栈操作,并且把出栈的两个集合的并入栈•INTERSECT操作进行两次出栈操原创 2015-10-28 09:25:00 · 484 阅读 · 1 评论 -
ssoj2457备用钥匙
【题意】有n个人碰巧都要出进公司,但只有k把钥匙,没有钥匙的话出门不能锁门,门锁着进不了门,而不管有没有钥匙,进门都可以锁门,出门都可以开门,问在保证每人都能进出的前提下,最长的锁门时间。【题解】【代码】#include #include #include #include #include #include using namespace std;c原创 2015-10-27 20:39:58 · 434 阅读 · 0 评论 -
2422 Pieczęć(pie)(模拟)
题目描述一张n*m的方格纸,有些格子需要印成黑色,剩下的格子需要保留白色。你有一个a*b的印章,有些格子是凸起(会沾上墨水)的。你需要判断能否用这个印章印出纸上的图案。印的过程中需要满足以下要求:(1)印章不可以旋转。(2)不能把墨水印到纸外面。(3)纸上的同一个格子不可以印多次。输入第一行一个整数q(1,表示测试点数量。接下来q个测试点,每个测试点中:原创 2015-09-23 13:38:39 · 561 阅读 · 0 评论 -
ssoj2455有趣的有趣的家庭菜园(线段树)
【题意】有一个n块的线性菜园,每块菜园只有照到阳光(左右两边没有遮挡)才能收获果实卖出去价值为p,也可以除去费用为c,问最大利益是多少【思路】枚举n块田地i为最高处,ans即为其左边最大利润加右边最大利润。dp o(n^2)会超时。用线段树维护左边(右边)最大值,点更新,与区间值的更改。【代码】#include #include #include #include #inclu原创 2015-10-26 18:55:04 · 373 阅读 · 0 评论 -
ssoj2453复制&粘贴(字符串)
【题意】给你一个字符串,s,t,p指将第s到t个字符复制,粘贴到第p位上。经过n次操作,输出前k个字符。【思路】因为m=10^9,直接做会爆。每一个字符都是由上一个字符串转移来的,因此我们每次记录当前字符在上一个字符串中的位置,逐层递推回去,便得到其在初始字符串中的位置。【代码】#include #include #include #include #include usin原创 2015-10-26 13:19:53 · 427 阅读 · 0 评论 -
ssoj1011: KC的瓷器
题意:给定n排,每排si个瓷器,每个瓷器有一个价值,每次只能从两边取,问取m个的最大价值。思路:枚举每行取j(0~si)个瓷器最大价值,再在总结果上修改。#include #include #include #include #include #include using namespace std;const int maxn=10004;int n,m,mx[maxn]原创 2015-10-10 17:38:15 · 487 阅读 · 0 评论 -
ssoj2435 回文串游戏(贪心)
题意:给一个串,和一个初始位置,每次操作可以左移一位或右移一位,当前值加一或减一,要求最少操作次数使串变成回文串。思路:只要处理初始位置所在的半边。注意:一开始写的程序,不必更改的和只有一位要更改的,情况一样,要处理一下。#include #include #include #include #include #include using namespace std原创 2015-10-06 20:01:16 · 570 阅读 · 0 评论 -
newssoj1005监听还原 recover(kmp)
题目描述Alice和Bob正在悄悄地给对方发信息,信息都是由英文小写字母组成的,他们约定,所有的字母都得经过一个字母表进行变换,以防泄漏。另一方面John却在监听。John发现,Alice和Bob通信的时候,总是先发送加密后的密文,然后紧接着发送原文。但是Alice和Bob似乎也意识到了似乎有人监听,有时候会随意中断了他们的通信。不过每次都是在发送完密文之后才停止传送的。也就是说,原创 2015-09-03 22:30:13 · 1059 阅读 · 0 评论 -
ssoj2437打字游戏
题意:给一个键盘,每次操作能够移动光标一次或点击一次选择,问打出给定的一串字符最少要按几次。思路:把相同字母变为一块,预处理它向上下左右走一步能走到哪个字母块,再BFS求最短路。#include #include #include #include #include #include using namespace std;const int maxn=10004;cons原创 2015-10-06 20:15:20 · 384 阅读 · 0 评论 -
ssoj2436放置游戏
题意:给一棵树,每个点能放一只狗,每条链上不能放超过k只的狗,问这棵树上最多能放多少只狗。思路:从最末端开始放是最优的(自己证明)。从最末端开始放k/2层,当k为奇数时,随便加一个点。#include #include #include #include #include #include #include using namespace std;const int max原创 2015-10-06 20:02:36 · 417 阅读 · 0 评论 -
ssoj2433: Shine
题意:一把刷子,只能往右和下刷。给一个图,求刷完这个图最小能用多大的刷子,若不存在输出-1;思路:存在解的图案是阶梯状的。枚举长宽(i、j)第一个矩形肯定要长满或宽满,接下来往下刷(一步)的时候,右和下不能同时存在路径,也不能都不存在路径(在碰到末尾标记之前)。贴代码:#include #include #include #include #include #include原创 2015-10-05 22:26:31 · 454 阅读 · 0 评论 -
ssoj1750小K 的农场(差分约束系统)
题目描述小K 是个特么喜欢玩MC 的孩纸。。。 小K 在MC 里面建立很多很多的农场,总共n 个,以至于他自己都忘记了每个农场中种植作物的具体数量了,他只记得一些含糊的信息(共m 个),以下列三种形式描述: 农场a 比农场b 至少多种植了c 个单位的作物,农场a 比农场b 至多多种植了c 个单位的作物,农场a 与农场b 种植的作物数一样多。但是,由于小K 的记忆有些偏差原创 2015-09-16 22:25:29 · 552 阅读 · 0 评论 -
ssoj1770nochange(状压dp)
题目描述Farmer John is at the market to purchase supplies for his farm. He has in his pocket K coins (1 <= K <= 16), each with value in the range 1..100,000,000. FJ would like to make a sequence of N原创 2015-08-20 14:58:47 · 390 阅读 · 0 评论 -
ssoj2454愉快的logo设计(dp)
【题意】有一个仅有‘J’‘O’‘I’组成的序列,定义:·S0为’J’,’O’,’I’中任一字符构成的长度为1的字符串·S[k+1]为最初4^k个字符都是’J’,接下来的4^k个字符都是’O’,接下来的4^k个字符都是’I’,最后4^k个字符是字符串Sk的长为4^(k+1)的字符串给一个长度为4^k的序列,问最少改变几个字符可以成为sk序列。【思路】直接做会超时。因为序列连续一段都是原创 2015-10-26 15:11:22 · 349 阅读 · 0 评论 -
ssoj1556土地购买
题目描述农夫John准备扩大他的农场,他正在考虑N (1 每块土地的长宽满足(1 每块土地的价格是它的面积,但FJ可以同时购买多快土地。 这些土地的价格是它们最大的长乘以它们最大的宽, 但是土地的长宽不能交换。如果FJ买一块3x5的地和一块5x3的地,则他需要付5x5=25。 FJ希望买下所有的土地,但是他发现分组来买这些土地可以节省经费。 他需要你帮助他找到最小的经费。原创 2016-11-11 17:13:59 · 478 阅读 · 0 评论 -
ssoj2868(最大不相交区间)
【题意】在二维平面上以(0,0)为左下角,(w,d)为右上角的矩形区域内有一些点,每个点代表一个人,每个人将会面对一个方向(东南西北),一个人的视野范围是以该点为顶点的直角,角平分线与其所面对的方向平行,角的两条边会与矩形交于两点,矩形上两点之间的部分,为该人的可视部分。为了让每个人都能知道时间,你需要在矩形的边界上放置一些时钟(视为一个点),使得每个人的可以部分内都至少有一个时钟,求最少需要放置原创 2016-10-30 17:11:28 · 579 阅读 · 0 评论 -
ssoj2867淘淘的柱子朋友
【题意】你需要解决这样一个问题,地上从左到右平行地倒放了根柱子,各自有一个直径,你需要用两个板子从两边向中间推,将柱子们尽量地向中间压起来,但是不能让柱子离地。请告诉淘淘柱子的最少占地范围,即两个板子之间最小距离。【数据范围】第一、二组:1【思路】要距离最小,第i个柱子一定会跟其前面的柱子或板子相切。O(n^2)计算i与j相切的最大距离。#include #include原创 2016-10-30 17:02:05 · 501 阅读 · 0 评论 -
ssoj2893: 乙女文楽(c)
【题意】每个人偶有一个编队a[i]。爱丽丝每次可以报出一个数x,然后编队为x的所有人偶都会自动出列,剩余的人偶会组成一个新的序列。爱丽丝最多只能报k次数,她想在报数结束后的序列中,寻找到一个尽可能长的区间满足区间中所有人偶的编队都是一样的。【思路】尺取。每次i往后找颜色种类只增不减,从j开始找完后直到颜色数为n+1,ans取max。#include #incl原创 2016-10-26 21:39:08 · 784 阅读 · 0 评论 -
关键子工程
http://www.cnblogs.com/hongyang/p/3407666.html题目描述²在大型过程的施工前,我们经常把整个工程分为若干个子工程,并把这些子工程编号为 1、2、…、N;这样划分之后,子工程之间就会有一些依赖关系,即一些子工程必须在 某些子工程完成之后才能施工。由于子工程之间有相互依赖关系,因此有两个任务需要 我们去完成:首先,我们需要根据每个子工程的原创 2016-10-26 21:24:59 · 450 阅读 · 0 评论 -
ssoj2663 two cakes(动归)
【题意】给定两个长度为n的排列和两个初始为空的队列,每次可以在两个队列末尾各加入一个不同的数或者在某个队列末尾加入一个数。求获得给定排列的最少操作次数。0【思路】由于n太大,n^2过不了,只能转换成O(n)。1、O(n^2) f[i][j]表示第一组到第i个数第二组到第j个数最少操作次数。 f[i-1原创 2016-08-13 16:41:17 · 443 阅读 · 0 评论 -
ssoj2472遇险
【题目】Bender所在的区域,可以看作一个n个点(街角),m条边(街)的无向图,每条边有一个运动难度,通过这条边所消耗的时间等于其运动难度除以Bender的行动能力。而每到一个新的街角,由于示威者们都拿着区域性酒精转转化器,Bender的酒精含量会降低,造成Bender的行动能力都会变成原来的十分之一。 Bender终于回到了基地,他将经历告诉了Fry。Fry问他怎样选择的道路。Bend原创 2015-11-02 19:49:22 · 611 阅读 · 1 评论 -
ssoj1021过路费(kruskal+lca)
【题意】q个询问,求x到y的路径中最大值的最小值。【思路】跟货车运输一样。两点间最大值的最小值一定在最小生成树的边上。kruskal最小生成树跑一边加入一条边使得两个不相连的的点相连时,这条边即是所求边。并查集维护将最小生成树转化为LCA。【一个定理】定理:图G的(s,t)之间的最小最大边,一定是其在最小生成树中(s,t)的路径上的最大边。证明:反证法,设(s,t)之间的最小最原创 2015-10-30 22:10:19 · 596 阅读 · 0 评论 -
ssoj2469叶落归根(矩阵乘法)
【题意】你要做的是对于每一个起始点s以及每一个总时长t(1且为整数)求出落叶在起始点为s且经过t单位时间后的位置也是s的方案数。两个方案不同,当且仅当两个方案中存在至少一个时刻落叶所经过的边不是图G中的同一条边。为了便于检验,只需要输出所有情况(即所有不同的起始点和总时长,一共n*Q种情况)的方案数对给定正整数P取模后的异或和即可——也就是说,假设所有情况的方案数分别是ans1、ans2、原创 2015-10-31 22:17:20 · 461 阅读 · 0 评论 -
ssoj2468设置
【题意】给n行m列数,每行取一个数组成新数,求新数中前k个最小值的异或值。【题解】%%wwx。这其实是一个用堆求k优解的一般思路。先对于每个i,将元件i的a[i][1]~a[i][m]从小到大排序,再将所有元件按照其(第2~第m种设置与第1种设置的差值)多关键字从小到大排序(共m-1个关键字)。现在开始,我们将排在第i位的元件称为元件i,其第j小的设置称为元件i的设置j。那么我原创 2015-10-31 22:04:04 · 537 阅读 · 0 评论 -
ssoj1020编译优化(双向链表+堆优化)
【问题描述】众所周知,衡量一个编译器是否优秀的标准,除了它的编译速度和正确性以外,编译出的代码的质量也很重要。最近,作为XCC系列编译器作者的Dr. X发明了一种跨时代的优化算法:“NanGe不等式优化”。一个程序可以看成是由若干个连续的函数构成的,NanGe不等式算法能针对某一个函数进行优化,得到一个优化效果值, 不同的函数的效果值可能是不同的。但这个算法还有一个很大的Bug:该算法不能转载 2015-10-30 20:50:15 · 1095 阅读 · 0 评论 -
ssoj2467树(状压dp)
【题意】一个人在SE(向南向东)图上砍树,向南砍一棵树其南边的一格被占。被占的格子不能砍树,也不能再有树倒在这个格子上。一幅W*H的图有2^(W*H)种状态,问砍下的树之和为多少。【思路】因为W(1~7)很小,可以状压。f[i][s]表示前i行其中第i行对第i+1行的影响为s的(1为有影响)砍下的树之和,g[i][s]表示前i行其中第i行对第i+1行的影响为s的方案数有多少个。状态转移为:(见原创 2015-10-30 15:59:30 · 371 阅读 · 0 评论 -
oldssoj1120埃及分数(搜索)
题目描述在古埃及,人们使用单位分数的和(形如1/a的, a是自然数)表示一切有理数。 如:2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为加数中有相同的。对于一个分数a/b,表示方法有很多种,但是哪种最好呢?首先,加数少的比加数多的好,其次,加数个数相同的,最小的分数越大越好。 如:19/45=1/3 + 1/12 + 1/18019/45=1/3 + 1/15原创 2015-10-14 23:55:06 · 826 阅读 · 0 评论 -
ssoj2461富可敌国
题目描述富可敌国的VVBS有许多枚硬币,一天,他刷完了题,没事于是,翻出了他的硬币。他将硬币排成一排,摆在桌上,有的正面朝上,有的反面朝上。接着,他叫来了他的好朋友LJH,要和他玩游戏。游戏规则大致是这样的:首先给定N(硬币数)、K,以及初始硬币的状态,然后两个人轮流操作,对于某次操作,需从N枚硬币中选出连续的K枚硬币,并且要求这K枚硬币中第一枚(最左边)的那枚硬币必须正面朝上,然后将这K原创 2015-10-28 20:28:37 · 530 阅读 · 0 评论 -
ssoj2460拜访女神(状压dp)
题目描述TRT出国后,想找一个好的位置住下来。而他所在的城市,恰好有N栋建筑(从1~n编号),他会选择这些建筑的某一个居住。而建筑之间,有M条双向路相连。每条道路有一个起始点u,终止点v,以及走过这条道路所需的时间d。所有建筑都可以借助一些道路相互到达。TRT每天会从他的住房出发,按任意顺序拜访他的K个女神(他想怎么走就怎么走),不过由于TRT精力有限,他的女神个数不会超过12个。可他的女原创 2015-10-28 21:48:29 · 411 阅读 · 0 评论 -
ssoj2434: Sleet(欧拉回路)
题意:男女比例达到了惊人的1:1,n个男生和n个女生,男生编号为0,2,4,…2n-2,女生编号为1,3,5,…2n-1,他们按照编号坐成一圈,Capo的老师有个要求,编号为x的顺时针方向下一个人编号必须是2x,2x+1,2x-2n,2x+1-2n中的一个。想让你设计坐座位的方案。思路:每个点的出度(连到2x%2n & (2x+1)%2n)和入度都为2,且只能经过一次。即哈密顿回路。再转换成欧原创 2015-10-05 22:28:24 · 467 阅读 · 0 评论 -
ssoj2425: 八卦阵(拆点+spfa)
题意:给一个有向图,不同时间有不同的边权(共八种),求最短路径。思路:把一个点拆成8个,上下差一秒的相连,spfa求最短路。#include #include #include #include #include #include #include using namespace std;const int maxn=6000006;const int inf =1<<3原创 2015-09-26 19:17:30 · 365 阅读 · 0 评论 -
ssoj2000平衡点(balance)(退火算法)
题目描述现有一张无限大的桌子(二维平面),桌面上有n个洞,每个洞有一根绳子穿过挂着一个重物,质量为wi,洞的坐标为(xi,yi)。这n根绳子有个公共的绳结,求系统平衡后绳结的坐标。输入输入第一行为一个正整数n(1接下来n行,每行三个整数xi,yi,wi,表示第i个重物的横坐标,纵坐标和重力。输出输出1行两个浮点数(保留到小数点后3位),表示最终绳原创 2015-09-05 15:57:31 · 670 阅读 · 0 评论 -
ssoj2424: 编码hard(dp)
题意:给一串数字,可以表示成多少个a(个数)个b(0~9)(内容);思路:f[ i ]表示以i为末尾内容有多少种。f[ i ]=Σf[ j ](j=2~i-2)且s[ i ]!=s[ j ] && s[ j+1 ]!='0';前缀和,删掉不合法的。#include #include #include #include #include #include #include原创 2015-09-26 15:37:19 · 396 阅读 · 0 评论 -
ssoj1740Matryoshka
题目描述Matryoshkas are sets of traditional Russian wooden dolls of decreasing size placed one inside the other.A matryoshka doll can be opened to reveal a smaller figure of the same sort inside, whic原创 2015-09-04 22:02:43 · 431 阅读 · 0 评论 -
ssoj1944采矿(oremine)(最长链)
题目描述 作为一名刚拿到“苏联采矿车驾驶证”的司机来说,上战场采矿是一个很大的挑战。战场的形势复杂多变(最主要的原因是一不小心就会被恐怖机器人钻),但是这份工作丰厚的薪水还是使得苏联人民对之趋之若鹜。 现在你成为了一名光荣的矿车司机。交给你的任务是去采一片区域的矿。这片区域有N个矿点,矿点之间有N-1条长度为1的公路相连接。保证这些矿点两两都是可以通过公路到达的。你的矿车原创 2015-09-05 14:58:58 · 578 阅读 · 0 评论 -
ssoj1933墨墨的等式(equ)
题目描述墨墨突然对等式很感兴趣,他正在研究a1x1+a2y2+…+anxn=B存在非负整数解的条件,他要求你编写一个程序,给定N、{an}、以及B的取值范围,求出有多少B可以使等式存在非负整数解。输入输入的第一行包含3个正整数,分别表示N、BMin、BMax分别表示数列的长度、B的下界、B的上界。输入的第二行包含N个整数,即数列{an}的值。输出原创 2015-08-19 16:16:40 · 449 阅读 · 0 评论