FZUOJ
小胡同的诗
千里之行,始于足下
展开
-
FZU2107 Hua Rong Dao(DFS模拟)
题目链接:fzu2107题目大意:给一张N * 4的表,分别有2 * 2的方块1个以及多个1 * 2,2 * 1, 1 * 1的方块,要求将这张表填满,问有几种填法。N < 4解题思路:DFS模拟填表的过程(队友尝试手推…orz 自己其实挺怕这种问填法的,导致连模拟都没尝试写,甚至一度以为是状压DP啥的,傻…)。Code:#include <iostream>#inc...原创 2019-04-13 00:34:51 · 152 阅读 · 0 评论 -
FZU2212 Super Mobile Charger(贪心)
题目大意:T组测试数据,接下来一个n和cost表示n部手机以及蓄电池的电量,接下来有n部手机的电量值,问利用这个蓄电池最终有几部满电的手机。思路:排序,缺电量少的先充,保证能用最少的电量让最多的手机满电。Code:#include <iostream>#include <algorithm>using namespace std;const int maxn ...原创 2019-04-18 20:19:19 · 126 阅读 · 0 评论 -
FZU2213 Common Tangents(思维 圆位置的判别)
题目大意:给一个T表示T组测试样例,接下来每行六个数表示两个圆的二维坐标x,y以及半径。问有多少条公共切线?如果有无数条输出-1思路:将几种圆位置的情况利用两点间距离公式判断一下,防止精度问题直接判断距离的平方。Code:#include <iostream>#include <algorithm>#include <cmath>#include &...原创 2019-04-18 20:24:39 · 116 阅读 · 0 评论 -
FZU2214 Knapsack problem(DP 超大型01背包 + 滚动数组优化)
题目大意:给T组测试用例,每组一个n表示n件物品以及B表示背包容量,接下来n行表示物品体积以及价值,问该背包能够装下的最大价值为多少?思路:很容易考虑到01背包,不过背包的体积有1e9,很显然无法用常规的01背包写法,发现总价值最多只有5000,于是状态dp【i】可以设置成i价值下的体积最小值。于是状态转移方程就可以写成 dp【i + 1】【j】 = min(dp【i】【j】,dp【i】【j -...原创 2019-04-18 20:39:13 · 211 阅读 · 0 评论 -
FZU2216 The Longest Straight(思维 + 二分)
题目大意:给T组测试用例,首先有N和K分别表示n张牌以及牌的号码上限,接下来N个数表示牌号,问这N张牌能凑一个最长为多少的顺子,0表示癞子,每张都能够表示1 - K的任意一个号码。思路:由于数据规模有1e5,很直观的思路就是枚举数字的起点和终点,复杂度O(n2)O(n^2)O(n2),显然会超时。需要有一个log级的优化,我们将非癞子的数字排序,然后就可以利用二分搜索出终点,其中判断的条件是数列...原创 2019-04-18 20:53:57 · 103 阅读 · 0 评论 -
FZU2221 RunningMan(思维 线性规划)
题目大意:T组测试样例,接下来两个整数,表示正方和反方的人数,有三局比赛,问如何安排各自的人数使得正方必赢,并且正方存在一种安排策略使得反方无论如何都无法赢就输出Yes,否则输出No。同一个人只能参加一局,一局中如果正方人数不小于反方则算正方该局赢,参与三局两胜制。思路:每局可以不派人,如果正方存在的最优策略一定是平均把人数分配到三局游戏中,而反方想赢就必须把人数集中到其中两局,并且这两局都要赢...原创 2019-04-18 21:14:05 · 138 阅读 · 0 评论 -
FZU2219 StarCraft(思维 哈夫曼树构造变形)
题目大意:给T组数据,之后一行n,m,k分别表示n个建筑,初始m个兵,一个兵生产一个兵要k时间。接下来n个数分别表示建造对应建筑要消耗的时间,求最少要多少时间?一个兵生产后还可以工作,工作后要将其移除。思路:贪心,类似于哈夫曼建树的过程,具体思路见模拟哈夫曼建树(好题)Code:错误思路#include <iostream>#include <queue>#in...原创 2019-04-18 23:54:31 · 145 阅读 · 0 评论 -
FZU2275(kmp+思维)
解题报告:问Alice的串是否能通过反转以及整除10的操作达到和Bob的串一样。相当于Bob的串只要是Alice的串的子串Alice就能赢。特别的,Bob的串为0的话Alice一定能赢!Code:#include <stdio.h>#include <string.h>using namespace std;const int maxn = (int)1e5+5;...原创 2019-05-08 23:29:54 · 154 阅读 · 0 评论 -
FZU2282(组合数+错排)
题目大意:一共n个数(1~n),问A[i] == i的个数大于等于k的方案数。解题思路:其实就是大于等于k个人筛掉后剩下的人进行错排的问题。选k~n个人对应得要乘上组合数,由于n比较大,k相对较小,可以打表数组肯定mle,于是可以反过来想:总得排列数是Ann,扣除小于k的方案就能够得到答案,由于所有打表都进行取模,最后还要防止变成负数!求组合数取模的问题也可以用卢卡斯定理方法求得。Code:...原创 2019-05-08 23:42:50 · 177 阅读 · 0 评论