摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2457 首先把病毒串保存一下,然后对于每一个trie上的节点,跑一发AC自动机,建立一个trie图。 建立的时候,对应做一些修改。 比如,现在建立成了这个样子。 如果he是一个病毒串,那么应该相对应的,把she那个
阅读全文
摘要:http://poj.org/problem?id=3522 一开始做这个题的时候,以为复杂度最多是O(m)左右,然后一直不会。最后居然用了一个近似O(m^2)的62ms过了。 一开始想到排序,然后扫一个长度n - 1区间,要快速判定这个区间能否构成MST,一直都想不到优秀的算法,然后干脆暴力了。
阅读全文
摘要:http://poj.org/problem?id=2955 区间dp的写法还是dfs的好写。 设dp[i][j]表示[i, j]这个区间的合法情况的最大值。 然后想要求[i, j]合法情况的最大值,有两种。 1、如果i和j的搭配的括号,那么dp[i][j] = dp[i + 1][j - 1] +
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2604 这题居然O(9 * L)的dp过不了,TLE, 更重要的是找出规律后,O(n)递推也过不了,TLE,一定要矩阵快速幂。然后立马GG. 用2代表m,1代表f。设dp[i][j][k]表示,在第i位,上一位站了
阅读全文
摘要:http://acm.uestc.edu.cn/#/problem/show/878 设dp[i][j][k]表示在前i个数中,第一个得到的异或值是j,第二个人得到的异或值是k的方案数有多少种。 因为异或后的大小不确定,所以不能压缩数组,但是也不大。。可以过。 #include <cstdio> #
阅读全文
摘要:!!!!!!! 如果在程序中执行mysql语句放回的结果有误!!而在terminal中执行mysql没错 那么: ①、如果是中文问题,首先要在mysql中设置编码格式,utf-8.。其次在连接mysql的string中,要加上一些charset=xxx之类的东西。 SQL_procedure DEL
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4565 首先知道里面那个东西,是肯定有小数的,就是说小数部分是约不走的,(因为b限定了不是一个完全平方数)。 因为(a - 1)^2 < b < (a ^ 2),所以其不是完全平方数,假如是,那么设其为c,则有a
阅读全文
摘要:http://codeforces.com/contest/776/problem/D 注意到每扇门都有两个东西和它连接着,那么,如果第i扇门的状态是1,也就是已经打开了,那么连接它的两个按钮的状态应该是一样的,也就是必须是同时按,或者同时不按。然后0的话就是关闭的,所以连接它的两个按钮应该是一个按
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2196 要统计第8号顶点的答案,那么可以来源于2部分。 1、8直接走下面的子树,这样就可能是最长距离。 2、8借助它的爸爸2,走了2能走的最长距离(这个不能经过8本身) + e[2][8] 然后递归处理,2也是这样
阅读全文
摘要:http://codeforces.com/contest/776/problem/C 一开始做的时候,就发现是预处理前缀和,然后对于每一个前缀和,如果他能成为一个贡献,就是能和前面的某些段 组合成和为k^x的话,那么需要cur_per_sum - val = k^x,这样可以解出val是多少,去前
阅读全文
摘要:http://poj.org/problem?id=2342 某公司要举办一次晚会,但是为了使得晚会的气氛更加活跃,每个参加晚会的人都不希望在晚会中见到他的直接上司,现在已知每个人的活跃指数和上司关系(当然不可能存在环),求邀请哪些人(多少人)来能使得晚会的总活跃指数最大。 对于每一个人,都有两种情
阅读全文
摘要:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1625&judgeId=203076 一开始的时候,还想着枚举每一行的总和,和每一列的总和,然后选一个最小的来变就好。 然后wa了,只剩下一组数据,然后看到还是大数据,调试不
阅读全文
摘要:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1536 首先,要知道值为n的答案,则可以这么去想,知道值为n - 1的答案,然后判断下,前面的数字能不能唯一确定n 然后,如果一个数是单独一个质数的k次方,这样是不能唯一确定
阅读全文
摘要:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1548&judgeId=202758 首先,样例都已经知道,不能狂买一种,可能要分开买,第一种x个,第二种y个。 抽象起来,这题可以表达成。设买了红的x个,蓝的y个。 则有:
阅读全文
摘要:http://codeforces.com/contest/768/problem/C 这题的数值大小只有1000,那么可以联想到,用数值做数组的下标,就是类似于计数排序那样子。。 这样就可以枚举k次操作,然后for (int i = 0; i <= 1025; ++i),也就是O(1000 * k
阅读全文
摘要:http://codeforces.com/contest/768/problem/B 我的做法是,观察到,只有是x % 2的情况下,才有可能出现0 其他的,都是1来的,所以开始的ans应该是R - L + 1 那么现在就是要看那些是x % 2的,然后放在的位置是属于【L, R】的,有多少个0,减去
阅读全文
摘要:http://lightoj.com/volume_showproblem.php?problem=1049 题意是,在一副有向图中,要使得它变成一个首尾相连的图,需要的最小代价。 就是本来是1-->2 2-->3 1 >3的,变成1-->2-->3 >1的话,需要把1-->3变成3 >1,就要耗费
阅读全文
摘要:http://www.spoj.com/problems/FACVSPOW/ 求解n! > a^n最小的整数n 对于有n!和a^n的东西,一般是取ln 然后就是求解 (ln(1) + ln(2) + .... + ln(n)) / n > ln(a)的最小整数n 发现左边的函数单调,所以可以预处理出
阅读全文
摘要:1、每个javaFx程序定义在一个继承自javafx.application.Application的类中 Button:用于设置一个按钮,Button btOK = new Button("Button show name"); Scene:设置一个场景,设置那个Button的大小。Scene s
阅读全文
摘要:http://lightoj.com/volume_showproblem.php?problem=1051 对于每个位置,设dfs(cur, one, two)表示前i个字母,拥有辅音字母one个,元音字母two个的情况。 目标是使得cur移动到结尾,这样就是能产生good串。然后超时 记忆化搜索
阅读全文
摘要:http://codeforces.com/gym/101257/problem/C 询问从左上角走到右下角,每次只能向右或者向左,捡起三种物品算作一个logo,求最多能得到多少个logo。 设dp[i][j][k][h]表示走到(i, j)这个格子,然后得到的第一种物品是k,第二种物品是h的时候,
阅读全文
摘要:http://codeforces.com/problemset/problem/337/C 题意是给出n个题目,那个人答对了m道,然后如果连续答对了k道,就会把分数double 求最小的分数是什么。 思路是首先看看n个位置能放下多少个(k - 1),也就是先保证不double 比如8能放下多少个3
阅读全文
摘要:http://codeforces.com/gym/101257/problem/A 把它固定在(0,0, 0)到(2, 2, 2)上,每次都暴力dfs检查,不会超时的,因为规定在这个空间上,一不行,就会早早退出。 这样写起来比较好写。 #include <cstdio> #include <cst
阅读全文
摘要:http://codeforces.com/gym/101257/problem/G 首先要看到题目,题目是本来严格大于score[i] > score[j]。然后score[i] < score[j],的才算做是贡献。 然后这题需要一个小观察,就是只有低分的,不fail,然后高分的,fail了,才
阅读全文
摘要:由于能放两次,那么分类, 1、连续使用,(这个直接O(n^2)暴力) 2、分开使用。 分开使用的话,首先暴力枚举,用T时间,能从第1个位置,唱到第几首歌,然后剩下的就是从pos + 1, n这个位置,用T时间,最多能省多少体力。这个可以预处理 + rmq搞了。 #include <cstdio> #
阅读全文
摘要:这题如果用二维树状数组,则会直接爆内存。 那么可以运用扫描线的思路。 就是,它同时被x和y限制了,那么可以在查询的时候,确保x先满足了,(把x按小到大排序) 然后就相当于是关于y的一个一维bit了, 注意同一个点它询问两次。 82 21 11 21 31 41 52 10 121 1 #includ
阅读全文
摘要:http://poj.org/problem?id=2155 二维树状数组,其实就是c[maxn][maxn],就是n个一维树状数组,然后,在这一维树状数组里面,再套一个一维树状数组。 所以c[1][1]维护的是第一行的树状数组的前1个,c[1][2]是第一行树状数组的前2个,也就是a[1][1]
阅读全文
摘要:https://www.hackerrank.com/contests/101hack46/challenges/lena-sort 把题目转换成一颗二叉树,也就是当前的节点是cur,然后大的,放右边,小的,放左边。 然后所有节点的深度总和,就是答案c。现在就是要你构造一颗这样的树。 最大的树就是左
阅读全文
摘要:https://vijos.org/p/1426 这是个好题,容易想到用dp[i][v1][v2][v3][v4][v5]表示在前i个物品中,各种东西的容量是那个的时候,能产生的最大价值。 时间不会TLE,但是会MLE.所以就需要把那5维状态进行hash 其实就是对这个排列进行一个hash。 new
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1430 如果从start > end,每一次都bfs进行,那么就肯定会超时。 考虑到先把start映射到原始状态"12345678",然后又把end按照同样的规则,就是start的变化,映射到某一个地方。那么就可以
阅读全文
摘要:http://codeforces.com/contest/765/problem/D 这题的化简,不能乱带入,因为复合函数的带入,往往要严格根据他们的定义域的 题目要求出下面两个函数 g[h(x)] = x。这个函数的值域[1, m],定义域[1, n] h[g(x)] = f(x)。这个函数的值
阅读全文
摘要:https://vijos.org/p/1412 把dp设成,dp[i][v][k]表示在前i项中,拥有v这个背包,的第k大解是什么。 那么dp[i][v][1...k]就是在dp[i - 1][v][1...k]和dp[i - 1][v - w[i]][1...k] + val[i]中合并得来。
阅读全文
摘要:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1475 这题转化过来就是,给定n个点,每个点都有一个过期时间,一个价值。现在安排他们成一直线,使得总和最大。 一开始就是贪心,这是一个很经典的贪心。 http://www.c
阅读全文
摘要:https://vijos.org/p/1629 注意lcm要用LL 先给一个样例 1 2 1 10 思路、其实这题就是问,给定一堆数,要求不能整除其任意一个的数字有多少个。 容辞 + lcm dfs暴力枚举每一位选还是不选,一共n位。00010101010. 然后奇减偶加 #include <cs
阅读全文
摘要:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1483 首先,要知道在0 4e5内的体积下,一定存在答案。不会存在一些更大的答案。(要证明我也不晓得,我直觉) 那么我的思路就是,枚举,0--4e5,然后需要O(1)判断和更
阅读全文
摘要:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1416 对于每一个坐标(x, y) 要使得它变成一个整数,一个方法就是x * max(n, m) + y 这样就不会相同了。可以幻想一下吧。 这样坐标的大小只会去到n * m
阅读全文
摘要:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1276 首先,对每个询问拍个序,那么就相当于有一条水平线慢慢升上去一样。 对原数组也拍个序,就可以知道每一个询问会删除多少个点,和点的位置在哪里。 现在要看的就是,删除了这一
阅读全文
摘要:http://codeforces.com/contest/766/problem/C 关键在于dp,如何计数。 设dp[i]表示前i个字母中,能分成多少份合法的情况。那么答案就是dp[n],其中dp[0] = 1; 比如说:aab的,也就是样例。 对于每一个i,枚举其往后能组合成那个,比如b,能组
阅读全文
摘要:http://codeforces.com/contest/766/problem/D 所谓种类并查集,题型一般如下:给定一些基本信息给你,然后又给出一些信息,要求你判断是真是假。例如给出a和b支持不同的队伍,而且b和c也是支持不同的队伍,由于队伍只有两支(就是说只有两种),所以可以推出a和c是支持
阅读全文
摘要:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1352 题目的本意就是要求 ax+by=n+1 a * x + b * y = c,在x >= 1和y >= 1的条件下的解的个数。 ①、等于0的情况是: 1、方程无解, 2
阅读全文
摘要:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1247 问能否从(a, b)走到(x, y) 也就是能否从终点走到起点。 然后发现依次经过(a, a - b) (a - b, b) (a, a + b)就可以调换a和b的位
阅读全文
摘要:http://agc010.contest.atcoder.jp/tasks/agc010_b 预处理出每两个相邻的数的差值,那么首先知道是一共取了sum / ((1 + n) * n / 2)次,因为每一次固定要取这么多,所以这个就是操作次数。 然后观察到,每一次操作,都是把dis[]数组的n -
阅读全文
摘要:http://codeforces.com/contest/764/problem/C 题意:在n个顶点中随便删除一个,然后分成若干个连通子图,要求这若干个连通子图的颜色都只有一种。 记得边是双向的,wa15的可能是不知道边是双向的吧。 一个观察:如果某条边连接的两个顶点的颜色不同,那么可以看看删除
阅读全文
摘要:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1272 离散化后,用dp[i]表示向右,大于等于i这个数字的最大位置 dp[i] = max(dp[i + 1], dp[i]) #include <cstdio> #inc
阅读全文
摘要:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1270&judgeId=194704 一开始贪心,以为就两种情况,大、小、大、小.....这样下去 小、大、小、大、....这样下去, 结果翻车。比如1、2、1、1、2、1这
阅读全文
摘要:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1246 这题平均分不是最优的,需要有一些空位置。 比如3 10 10 答案应该是11,分配就是,第一个是0,其他的均分。 所以我需要知道应该空出多少个位置,使得答案更优。 我
阅读全文
摘要:http://codeforces.com/contest/761/problem/E 给出一颗树,要求在坐标系中用平行于坐标轴的线描绘出来。 要求边不能相交,而且点的坐标唯一。 注意到2^1 + 2^2 + ..... + 2^n = 2^(n + 1) - 1 那就是说,如果第一条边的边长是2^
阅读全文
摘要:http://codeforces.com/contest/761/problem/C 对于每一个字符串,可以预处理出其到达数字,字母,和特殊符号所需的最小步数。 然后就是在n个东西中,选出数字、字母和特殊符号,至少一个,所需的最少步数。 因为第一个选了数字的话,它就不能选字母的了,然后比赛的时候发
阅读全文
摘要:http://codeforces.com/contest/761/problem/D c[i] = b[i] - a[i],而且b[]和a[]都属于[L, R] 现在给出a[i]原数组和c[i]的相对大小,要确定b[i] 因为已经知道了c[i]的相对大小,那么从最小的那个开始,那个肯定是选了L的了
阅读全文