- 博客(43)
- 收藏
- 关注
转载 UVALive 4035 - Undetectable Tour(并查集)
题意:给定一个 N * N(3 <= N <= 10000)的矩形区域,左下角为(0,0),右上角为(N,N),现在要从左下角走到右上角,但是有 k(k <= 100)个监视器,每个监视器的监视范围都是统一的,现给定监视范围可能出现的种类与概率,求能够逃出去的概率。(计算距离时均用曼哈顿距离)1、若两个监视器的距离 <= 两个监视器的监视范围之和,则这两个监视...
2016-11-23 00:21:00 193
转载 POJ 2287 - Tian Ji -- The Horse Racing(贪心)
题意:田忌和齐王都有 n(n <= 1000)匹马,二者进行 n 轮赛马,赢一局+200,平一局得 0,输一局 -200,求田忌最多能赢多少钱。贪心,先将田忌和齐王的马分别排序,然后最上等与最上等比,最下等与最下等比,如果有能赢的则+200,如果无法满足条件,则用田忌的最下等与齐王的最上等比(故意输或者平局)。代码如下: 1 #pragma comment(link...
2016-11-22 15:32:00 130
转载 HDU 4893 - Wow! Such Sequence!(线段树)
题意:给定 n 个数的序列(1 <= n <= 100000,且初始均为 0),m 个操作(1 <= m <= 100000),操作共分三种:1、将第 k 个数加 d;2、求 l 到 r 区间和;3、将 l 到 r 区间内的数,各自变为距离各自最近的斐波那契数(如果有两个数一样近,则取小的斐波那契数).有区间求和区间修改还有点修改,很明显的一...
2016-11-09 20:17:00 114
转载 HDU 1665 - Different Digits(几何 + 欧拉定理)
题意:在一个平面上,给定一个由 n 个点(4 <= n <= 300)组成的一封闭笔画图形(第一个端点与第 n 个端点重合),求这个图形将平面分成几个部分。需要用到欧拉定理;欧拉定理:设图的顶点数为 v ,边数(三维中为棱的个数)为 e ,面数为 f ,则v + f - e = 2.则若求面数,只要求出顶点数 v 和边数 e,即能得出答案f = e + 2 - ...
2016-11-06 12:21:00 136
转载 HDU 3304 - Interesting Yang Yui Triangle(数论:Lucas定理)
题意:求杨辉三角第n + 1行中(1 <= n <= 10^9)不能被p(1 <= p <= 1000且 p 为素数)整除的数的个数。不太会找规律,后来啃题解才慢慢一点点懂的,先说说Lucas定理.一、了解定理:Lucas定理:前提:若 p 为素数;结论:若求C(n, m) % p,则将 n 转化为 p 进制的数,分别为 a[k], a[k...
2016-11-05 14:35:00 184
转载 UVA - 10886 - Standard Deviation(化简 + 暴力)
题意:求如下函数产生的值的前 n 项的标准差(1 <= n <= 10000000,0 <= seed < 2^64).long double gen(){ static const long double Z = ( long double )1.0 / (1LL<<32); seed >>= 16; seed ...
2016-11-03 23:38:00 140
转载 UVALive - 3645 - Objective: Berlin(最大流 + 时序模型)
题意:给出n(n <= 150)个城市和m(m <= 5000)个航班,每个航班有出发地、到达地、乘坐人数、起飞时间和降落时间(时间用时和分表示),求一个指定城市到另一个指定城市在规定的最晚时间前可以过去多少人(换航班的间隔至少需要30分钟)。1、为了考虑时间的因素,把航班拆成两个点v1与v2,则v1 -> v2的容量为航班的乘坐人数;2、若两趟航班之间可以转(...
2016-11-03 20:36:00 116
转载 UVA - 12174 - Shuffle(思路:预处理 + 暴力)
题意:有个音乐播放器有乱序功能,可以随机播放1 ~ s首歌曲,每次随机播放完后再次打乱顺序随机播放(在播放完这一组的歌曲之前,不会再次乱序,直到全部播完)。现截取一段记录,给定播放的歌曲数 s 以及这段记录的长度 n ,然后输入这段记录,根据这段记录,求随机排序发生的时刻有几种可能。(1 <= s, n <= 100000)对于符合要求的某一段来说,每首歌最多出现一次,可...
2016-11-03 20:15:00 159
转载 UVA - 1646 - Edge Case(找规律)
题意:n(3 <= n <= 10000)个结点组成一个圈,求匹配(即没有公共点的边集)的个数。找规律为斐波那契的性质,因为数太大所以用的java大数。import java.math.BigInteger;import java.util.Scanner;public class Main{ public static int MAXN = 1...
2016-11-02 22:05:00 154
转载 UVA - 1645 - Count(思路)
题意:输入n(1 <= n <= 1000),输出有n个结点且每个深度中所有结点的子节点数相同的树有多少种。根据题意,其实要求每个子树都相同。一个结点当作根节点,还剩下n - 1个结点,枚举n - 1的因子(因子当作紧邻根结点的子树中的结点数),然后将所有因子的答案相加即可。代码如下:#include<cstdio>#include&...
2016-11-02 21:09:00 85
转载 POJ - 3253 - Fence Repair(哈夫曼树 + 优先队列)
题意:把一块木板分成n块(1 <= n <= 20000),锯完后的这n块已经给你,你每次可以把一块木板锯成两块,开销为两块之和,求最小的开销。哈夫曼树直接每次选最小的两块木板即可。代码如下:#include<cstdio>#include<cstring>#include<cctype>#include<...
2016-11-01 14:38:00 87
转载 POJ - 2431 - Expedition(贪心 + 优先队列)
题意:给定一条 L 长的路(1 <= L <= 10^6),途中有 n 个加油站(1 <= n <= 10^4),其中第 i 个加油站在距离终点Ai(1 <= Ai <= L)距离的地方,可以加Bi(1 <= Bi <= 100)单位油,设一单位距离耗一单位油,起点时有P(1 <= P <= 10^6)升油,求到达终点最少需要加...
2016-11-01 14:17:00 125
转载 HDU 2340 - Obfuscation(dp)
题意:一个句子中有多个单词,但是目前的单词,除了首末两位,中间的单词字母顺序均被打乱,并且打乱后把单词间的空格删掉变成一个新句子。现在给定这个新句子(长度为1~1000),给定n个单词(1 <= n <= 10000),且每个单词是唯一的,求是否能用这n个单词还原出这个句子的原来的样子,若不能则输出"impossible",若多解则输出"ambiguous",否则输出这个句子...
2016-10-30 17:08:00 96
转载 UVA - 116 - Unidirectional TSP(DAG上的动态规划)
题意:给定一个n行m列的矩阵(n <= 10,m <= 100),从第一列到最后一列,设目前在(i, j),每次可走到下一列的(i - 1, j + 1),(i, j + 1),(i + 1, j + 1)位置,矩阵的第一行与最后一行是循环的(最后一行往下是第一行,第一行往下是最后一行),求第一列到最后一列的一条路径使权值和最小,并且打印出此条路径中,经过每一列的行的下标,若...
2016-10-28 16:43:00 87
转载 UVA - 11526 - H(n)(思路,减少枚举量)
题意:给定在32位带符号整数范围内的n,求n/1+n/2+n/3+n/4+……+n/n = ?因为损失精度,所以算出来的有些连续的项是相同的数值,故想办法找出对于某个值,哪一段范围均是这个值。详见代码注释#include<cstdio>#include<cstring>#include<cctype>#include<...
2016-10-27 23:45:00 80
转载 UVA - 1312 - Cricket Field(离散化)
题意:给定h * w(1 <= h, w <= 10^4)的区域,区域内的坐标范围为0~h和0~w,然后给定区域内n个点(0 <= n <= 100),求在区域内一个不包含点的最大面积的正方形(但点可以在正方形边界上),输出左下角坐标及边长(多解则任意输出)。1、找出在h方向的所有边界;2、二重循环枚举任意两个边界;3、枚举范围内的点,构造矩形,对于每...
2016-10-27 19:26:00 104
转载 UVA - 11100 - The Trip, 2007(简单思路)
题意:给定n(1 <= n <= 10000)个正整数,把它们划分成尽量少的严格递增序列,如果有多解,尽量让这些序列中最大长度最小。序列的个数最少肯定为,出现最多的数字的次数,然后不断向其中填数即可。#include<cstdio>#include<cstring>#include<cctype>#includ...
2016-10-26 19:08:00 113
转载 CodeForces 518E - Darth Vader and Tree(思路)
题意:给定一个n(1 <= n <= 10^5)长度的序列,其中有不确定的数字为'?',从前往后,每相邻k项加起来可得到一个n - k + 1长度的新序列,求是否存在一种解满足:1、使这个n - k + 1的新序列递增;2、如果有多解,求一种解使的所有数绝对值加起来最小。若存在,则输出这个序列,否则输出"Incorrect sequence"。每相邻k项加起来...
2016-10-25 16:52:00 112
转载 UVA - 11520 - Fill the Square(贪心)
题意:给定一个n * n(1 <= n <= 10)的网格,有些已经填上了一些大写字母,需要补充完所有的字母,使每两两相邻的格子中的字母不同,且从上至下,从左至右,组成一个字符串后字典序最小。由于组成字符串后的长度都为n * n,故字典序越往前的字母决定的优先级越大,所以贪心即可,从上到下,从左到右的补充格子里的字母,尽可能的使当前可以补充的字母尽量小。#i...
2016-10-25 11:30:00 83
转载 UVALive - 3635 - Pie(二分)
题意:有F + 1(1 <= F <= 10000)个人分N(1 <= N <= 10000)个圆形派,每个人得到的派面积相同,且必须是一整块(不能够两个甚至多个派拼在一起),求每个人最多能得到多大面积的派。(误差最多到0.001)因为答案是小数类型的,并且N高达10000,故不可暴力枚举。可以二分枚举最大面积,然后检查是否切出来派的总个数大于等于F + ...
2016-10-25 11:29:00 113
转载 CodeForces 518C - Watto and Mechanism(模拟)
题意:有n(1 <= n <= 10^5)个应用,每屏有k(1 <= k <= 10^5)个应用,现在有m(1 <= m <= 10^5)个操作,每次操作会使用一个应用(使用时需滑到应用所在的屏),使用后此应用与前边的相邻应用交换位置,退出此应用后会回到初始屏。问这m次操作总的滚动屏幕次数。模拟即可。#include<cstdi...
2016-10-25 11:28:00 97
转载 CodeForces 518B - Han Solo and Lazer Gun(模拟)
题意:给定两个串(长度范围为 1 ~ 2*10^5,两串长度不一定相同,由大、小写字母构成),需要让两串中完全相同字母匹配的尽量多,在此前提下,再让同一字母但大小写不同的对数尽量多。先尽量多的完全相同匹配,然后再尽量多的匹配大小写不同的字母即可#include<cstdio> #include<cstring> #include<...
2016-10-25 11:27:00 76
转载 CodeForces 518A - Chewbaсca and Number(思路)
题意:给你两个长度相同的字符串,输出一个长度与它俩相同,且字典序位于两者之间(不可与其中一者相同)的字符串,若不存在则输出“No such string”。(输入保证字典序第一个严格小于第二个,且长度相同)水题,让最后一个加一个单位的字典序然后检查是否符合条件即可(注意为'z'的时候要进位,若长度超过则也不符合)#include<cstdio> #in...
2016-10-25 11:26:00 114
转载 CodeForces 688B - Lovely Palindromes(思路)
题意:输出第n(1 <= n <= 10^100000)大的偶数长度的回文数。(最小的为11)因为长度是偶数,所以前后两半之间是相互对称的,又因为一个数字的大小主要取决于较高位数的大小,所以数字的前一半决定数的大小,从1开始,1,2,3……对称即可得11,22,33……所以将数正着输出后再倒着输出一遍即可(数非常大,需用字符串存)#include<...
2016-10-25 11:25:00 94
转载 CodeForces 686B - Little Robber Girl's Zoo(暴力)
题意:将一个n(1 <= n <= 100)个元素的序列排成非递减序列,每次操作可以指定区间[ L,R ](区间内元素个数为偶数),将区间内第一项与第二项交换,第三项与第四项交换,第五项与第六项……在2W次内完成排序,输出每次操作。瞎搞即可,不断检查相邻元素是否满足 前者>=后者,不满足即交换,直到序列满足条件位置(n最大为100绝对不会超过2W步)#...
2016-10-25 11:24:00 218
转载 HDU 4596 - Yet another end of the world(扩展欧几里得)
题意:给定一系列的虫洞,每个虫洞都有自己的x,y,z,当你的 id 对 x 取余后结果落在[ y,z ]区间内,则会被吸引,被两个或两个以上的虫洞吸引会有危险,求能否宇宙飞船能否起飞。枚举每两个虫洞,有id - k1 * x1 = uid - k2 * x2 = v其中k1与k2分别为 id / x1 与 id / x2,u与v分别为求余后的结果。两式相减得 k2 ...
2016-10-25 11:22:00 84
转载 CodeForces 288C - Polo the Penguin and XOR operation(思路)
题意:给定一个 n (1 <= n <= 10^6),求(0 ^ p0) + (1 ^ p1) + (2 ^ p2) +…… + (n ^ pn) 的最大值,其中p0 ~ pn为 0 ~ n 中的数,且每个数只利用一次。从n ~ 0枚举所有的数,对于每个数找它异或后得到二进制都是 1 的数或者 1 尽量多的数。对于每个数,先找到与它二进制位数相同的全是 1 的数,然后...
2016-10-25 11:21:00 91
转载 CodeForces 534C - Polycarpus' Dice(思路)
题意:给定n (1 <= n <= 2*10^5) 个骰子,给定每个骰子最大可以掷出的最大数(最小数始终为1),给定所有骰子掷出的点数和A,求每个骰子不可能掷出的点数个数。考虑最大和最小情况,作差即可(详情见代码注释)#include<cstdio> #include<cstring> #include<cctype...
2016-10-25 11:20:00 822
转载 CodeForces 445B - DZY Loves Chemistry(并查集)
题意:给定n (1 <= n <= 50) 种试剂,给定m (0 <= m <= n*(n - 1) / 2) 组互相反应的试剂,现在有一个空容器危险度为1,每次反应会使危险度 * 2,求最大的危险度。利用并查集找出有多少连通块,n - 连通块个数 即为反应次数。#include<cstdio> #include<cstr...
2016-10-25 11:18:00 63
转载 CodeForces 165C - Another Problem on Strings(思路)
题意:给定一个长度为 n (1 <= n <= 10^6 ) 的01串,求有多少连续子序列中包含 k 个 1。从前往后记录到第 i 个元素存在了多少个 1,然后从前往后找个数 >= k 的元素,再找 - k 与 - k + 1 之间与多少个元素加入结果即可。#include<cstdio> #include<cstring>...
2016-10-25 11:17:00 88
转载 CodeForces 166C - Median(思路)
题意:给定 n 个数字,给定一个数 k ,求至少需要添加几个数才能使这 n 个数的中位数等于 k (与数学上的中位数概念不同的是,有 n 个数,下标为 1 ~ n,则中位数为排序后的第 (n + 1) / 2 个数)。由小到大排序后,先找到最后一个小于 k 的位置,再找到第一个大于 k 的位置,那么中间这些位置都为 k ,看这些位置是否落在中位数的位置上,若没有,则就在这些位置中加 ...
2016-10-25 11:16:00 114
转载 CodeForces 474C - Captain Marmot(暴力)
题意:每组共4个点,4个点分别有起始坐标和轴心坐标,每个点每次都可以绕自己的轴心坐标90°,问能否用最少次数内4个点组成一个正方形,若能则输出最少次数,否则输出-1。每个点有4个方位可以选择,共4个点,4 * 4 * 4 * 4 = 256种,暴力即可#include<cstdio> #include<cstring> #includ...
2016-10-25 11:15:00 110
转载 CodeForces 547B - Mike and Feet(单调栈)
题意:给定一个长度为 n (1 ≤ n ≤ 2 × 105) 的序列,求某一固定长度的连续子序列(长度为1 ~ n)中最小元素的最大值。对于某一元素,找出它为最小值的最大连续长度区间。1、对于找出的区间长度,直接取相同区间长度中最小值的最大值即可;2、对于未找出的区间长度,因为无论怎样一定有 长度为 len 的区间的最小值 <=长度为 len + 1 的区间的最小值...
2016-10-25 11:14:00 91
转载 CodeForces 687C - The Values You Can Make(01背包)
题意:给定n(1 <= n <= 500)个硬币,每个硬币都有面值,求每个能构成和为k(1 <= k <= 500)的硬币组合中,任意个数相互求和的总额种类,然后将所有硬币组合中最后得到的结果输出。一维表示总额,二维表示能否由一维的总额得出此额度。假如枚举到的硬币面值为 t ,如果存在dp[ i - t ] [ j ] = true,那么有1、dp[ ...
2016-10-25 11:13:00 119
转载 UVA - 11134 - Fabled Rooks(贪心)
题意:给定n(n <= 5000)个车,给出每个车的可放置范围(一个矩形区域),给出任意一种放置方法使得任意两个车不能相互攻击,若没有方法则输出“IMPOSSIBLE”。分成横纵两个方向进行研究(每个方向上只要不在同一条线上即可)。贪心,先将每个车的范围按照先 a.r < b.r 后 a.l < b.l 的顺序排序,然后尽量将每个车往左排即可。(将越能到达右...
2016-10-25 11:12:00 84
转载 CodeForces 682C - Alyona and the Tree(dfs)
题意:给定一颗无向树(根节点编号为1),节点权值(1 ~ 10^9) < 由某个点至该节点边的权值(-10^9 ~ 10^9)之和 的节点称为sad点,求至少删除多少个节点才能使这棵树不存在sad点。从根出发dfs即可,找到sad点则return,对遍历到的点计数,然后答案即为节点数 - 计数个数。若边的和出现负值,则取0:1、对于正在研究的节点来说,输入的权值必定为...
2016-10-25 11:11:00 88
转载 CodeForces 518D - R2D2 and Droid Army(概率dp)
题意:n个人排成一队按队伍序列上扶梯,共 t 时刻,每时刻最多进一个人,进的概率为p,已经进去的人不能再出来,若排在队首的不进则后边的人无法进,求 t 时刻后扶梯上人数的数学期望。一维表示时刻,二维表示人数,有状态转移方程dp[ i + 1 ] [ j + 1 ] = dp[ i ] [ j ] * p; //这一时刻进了一个人dp[ i + 1 ] [ j ] = d...
2016-10-25 11:10:00 88
转载 CodeForces 687A - NP-Hard Problem(二分图染色)
题意:给定n个顶点和m条边的无向图,求能否构成二分图,若能,输出两个顶点集,否则输出 -1对某个顶点,对于有边与它相连的其他点,染成与它不同的颜色,然后再研究这些点,继续染与它们有关系的点,直到所有有边相连的点都被染色完毕。不能构成:若要染的顶点之前已经被染成同样的颜色,则不能构成二分图。孤立顶点不作研究。#include<cstdio> #i...
2016-10-25 11:08:00 82
转载 CodeForces 687B - Remainders Game(中国剩余定理)
题意:给定n个数(a1,a2,a3…… )和k,对于未知数x,假如你已知x mod ai(1 <= i <= n),能否求出x mod k的值?中国剩余定理:若m1,m2,m3……mn两两互质,有方程组 k ≡ a1(mod m1) k ≡ a2(mod m2) k≡ a3(mod m3) …… ...
2016-10-25 11:06:00 104
转载 UVA - 11105 - Semi-prime H-numbers(筛选法)
题意:H数:4*n+1 (n = 0,1,2……) H素数:不是1,也不能写成两个不是1的H数的乘积 H-半素数:能写成两个H素数的乘积 给定一个H数h(h <= 1000001),输出1~h内的H-半素数个数先求出所有的H素数,与筛选素数打表类似。然后对于每个h,暴力统计个数即可。 1 #include&l...
2016-10-25 11:05:00 81
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人