自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 CodeForces ~ 987E ~ Petr and Permutations (思维,有趣)

题意:有n个数字,原始序列为1~n,给你该序列经过Petr或Um_nik操作后序列,问你是谁操作的?Petr:随机交换两个数的位置,交换3n次。Um_nik: 随机交换两个数的位置,交换7n+1次。思路:可以发现3n和7n+1一定是一奇一偶的,那么我看考虑这个序列跟操作次数奇偶的性质,然后我就想不出来啦,哈哈哈。第二天看了别人的题解才会。考虑两个数字的时候我们交换 2x 次跟没交换一样,交换2x+...

2018-05-31 19:47:22 370

原创 CodeForces ~ 987D ~ Fair (思维 + 多源BFS)

题意:有n(<=1e5)个城市,m(1e5)条边,最多有k(1<=k<=100)个不同类型的物品,你要收集s个不同类型的物品。每个城市会产生一种类型(类型为1~k)的物品,问从每个城市出发收集够s个物品的最小步数。思路:从每个城市进行一遍BFS肯定会超时。因为城市很多,物品类型很少,所以我们反过来考虑,求出来每种物品到达所有城市的最短路径,存起来,跑K次BFS就可以了。对于城市 ...

2018-05-31 19:29:54 514

原创 CodeForces ~ 987C ~ Three displays (思维 + 暴力)

题意:有n个物品,每个物品有一个s值,有一个c。我们要挑三s个单调递增的物品,问最小值是多少?如果没有输出-1。思路:先n^2处理出来每个点后面s比它大的物品中最小的c值。然后暴力枚举两个点,O(1)得到第三个值,求最小值就OK了#include<bits/stdc++.h>using namespace std;const int MAXN = 3005;const int I...

2018-05-31 19:19:50 313

原创 CodeFroces ~ 987B ~ High School: Become Human (log)

题意:给你x和y,问你x^y和y^x次方的大小。思路:我们可以用取对数的方法进行比较,但是可能会有精度问题,所以当x==y的时候答案一定为=。#include<bits/stdc++.h>using namespace std;int x, y;int main(){ scanf("%d%d", &x, &y); char ans; if...

2018-05-31 18:27:10 420

原创 CodeFroces ~ 987A ~ Infinity Gauntlet (水,map)

题意:有六种颜色宝石,每种宝石对应一种能力。你现在已经有N个颜色宝石了,问你还缺少哪几个能力的宝石?思路:用map颜色映射一下能力,暴力查找看缺少哪几个。#include<bits/stdc++.h>using namespace std;const int MAXN = 1005;map<string, string> mp;set<string> s...

2018-05-31 18:03:57 313

原创 CodeForces ~ 981D ~ Bookshelves (贪心 + 区间DP)

题意:N个数字分成K份,最大价值为多少?总价值为将每段的和&(按位与)。思路:对于结果ans最多不超过2^60,贪心选择从高位选每一个二进制位。对于第i位时,判断是否能够在保证前面i-1个二进制位不改变的情况下使得当前位为1,如果可以就让当前位为1。检查的是个区间DP,dp[i][j]表示前 i 个元素分为 j 份时使得前(当前位-1)个二进制位不变的情况下是否能使当前位为1。#inclu...

2018-05-31 17:54:25 338

原创 UVALive ~ 8521 ~ LOL (暴力 + 组合数学)2017ICPC Xi'an

题意:有十个人在玩LOL,总共有100个英雄,每个人可以选一个和BAN一个,问你们十个人有多少种不同的BAN选方案,取余1e9+7?输入5个01串表示我方五个人分别拥有的英雄,假设对面英雄全有。①任意两个人不能选或BAN同一个英雄②只能选自己有的英雄。③12345召唤师选英雄12345和54321是不同的方案,12345召唤师BAN英雄12345和54321是相同的方案。思路:统计第五个人有的英雄...

2018-05-31 16:07:37 963 2

原创 HDU ~ 6294 ~ SA-IS后缀数组 (思维)

思路:直接从前往后比较,如果s[i]<s[i+1],那么suf[i]<suf[i+1],或如果s[i]>s[i+1],那么suf[i]>suf[i+1],如果相等,就先记录相等的字符个数,一直到某一位<或>了输出相同数量的<或>即可。有可能直到最后也相等,此时别忘了输出,也别多输出一个字符。#include <bits/stdc++.h>...

2018-05-29 16:33:43 700

原创 HDU ~ 6292 ~ 赛题分析 (水)

思路:输入的时候维护一个最小值,按要求输出即可。#include <bits/stdc++.h>using namespace std;const int MAXN = 1005;const int INF = 1000000005;int main(){ //freopen("C:\\Users\\张松超\\Desktop\\in.txt", "r", stdin)...

2018-05-29 15:45:02 409

原创 HDU ~ 6297 ~ CCPC直播 (模拟,输出格式控制)

思路:模拟就行了,注意Running和RTE的开头字母一样。iomanip是I/O流控制头文件,就像printf的格式化输出一样。以下是一些常用的:dec 置基数为10 相当于"%d"hex 置基数为16 相当于"%X"oct 置基数为8 相当于"%o"setfill(c) 设填充字符为csetprecision(n)   设显示小数精度为n位setw(n) 设域宽为n个字符setioflags(...

2018-05-29 15:43:17 742

原创 HDU ~ 6287 ~ 口算训练 (思维 + 分解质因数 + 二分)

题意:小Q非常喜欢数学,但是他的口算能力非常弱。因此他找到了小T,给了小T一个长度为nn的正整数序列a1,a2,...,ana1,a2,...,an,要求小T抛出mm个问题以训练他的口算能力。 每个问题给出三个正整数l,r,dl,r,d,小Q需要通过口算快速判断al×al+1×...×ar−1×aral×al+1×...×ar−1×ar是不是dd的倍数。 小Q迅速地回答了出来,但是小T并不知道正确...

2018-05-29 15:36:51 1106

原创 CodeForces ~ 981C ~ Useful Decomposition (思维 + 构造)

题意:给你一棵N个结点的树,然后输入N-1条边。要求将该树拆成若干条简单路径,并且这些路径都经过一个公共节点。给出任意一个解决方案,如不存在输出No。思路:邻接表存图建双向边,如果一个点的出度>2,那么他就是那个共享的点,如果有两个共享的点,一定为NO。我们把出度为1的点,存到一个数组中。如果有共享点,直接输出:共享点~这个数组中所有的点即可。如果没有共享点,那么就是一条链的情况,输出两个出...

2018-05-28 18:54:30 351

原创 CodeForces ~ 981B ~ Businessmen Problems (水,map)

题意:两家公司发现了一些新元素,第一家发现了n种元素,分别是a[1~n],价值是x[1~n]。第二家发现了m种,分别是b[1~m]价值是y[1~m]。两个公司同时展示一种元素会导致两家公司都没利益。所以两家公司决定如果某种元素被两家公司都发现,那么由价值高的那家展示。问两家公司最大的利益和是多少。思路:用map维护一下某种元素的最大值。最终求和即可。#include <bits/stdc++...

2018-05-28 17:59:27 424

原创 CodeForces ~ 981A ~ Antipalindrome (水,回文)

题意:给你一个字符串,问他的最长的非回文子串的长度。思路:假设该串长度为len。非回文串:len。回文串:len-1。回文串且所有字符都一样:0。#include <bits/stdc++.h>using namespace std;const int MAXN = 100005;bool judge(string s){ for (int i = 0; i < ...

2018-05-28 17:49:14 433

原创 CodeForces ~ 982C ~ Cut 'em all! (树 + dfs)

题意:给你一棵N个结点的树,问最多剪掉多少条边之后,剩下的连通分量的size都为偶数,如果一条也没法剪掉输出-1。思路:如果N为奇数,显然没解。如果该树的一棵子树结点个数为偶数,那么就可以将它和父节点剪开。遍历整棵树,回溯过程中统计结点个数,如果为偶数,答案+1。#include <bits/stdc++.h>using namespace std;const int MAXN =...

2018-05-28 17:34:40 519

原创 CodeForces ~ 982B ~ Bus of Characters (栈模拟)

题意:公交上有N排凳子,每排有两个凳子,每一排的凳子宽度不一样。有一些内向和外向的人按照顺序上车。外向的人(0):只会选择没人的一排坐下,如果有很多排符合要求,他会选择座位宽度最小的坐下。内向的人(1):只会选择有人的一排坐下,如果有很多排符合要求,他会选择座位宽度最大的坐下。输入N,然后输入N个整数表示每一排的的凳子长度,然后输入一个长度为2*N的01串表示2*N个人。从1~2*N输...

2018-05-28 17:15:14 427

原创 CodeForces ~ 982A ~ Row (水,边界处理)

题意:一排上有N个座位,输入一个01串,0表示没人,1表示有人,问该串是否满足以下两个条件:1.没有两个相邻的1;2.在满足第一个条件的情况下,不能再放下更多的1。思路:注意00,001,100这种情况,所以我们在串的两边加上一个0,然后判断有没有三个连续的0,或者两个连续的1.#include<bits/stdc++.h>using namespace std;int main(...

2018-05-28 16:33:45 432

原创 CodeForces ~ 985C ~ Liebig's Barrels (贪心,边界处理)

题意:你要组成N个木桶,组成每个木桶需要K个木块,(第二行给你N*K个木块),使得任意两个木桶之间的差值不超过L的情况,使得所有木桶可以装的水的和最大,输出这个最大和,如果无法满足要求输出0。我们都知道“短板理论”,一个木桶能装多少水,取决于最短的那个木板。思路:首先考虑没答案的情况,假设最短的木板为a[0],那么所有木桶中能装水的最小值就确定了为a[0]。所以其他木桶的最短板不能超过a[0]+L...

2018-05-28 16:21:22 583

原创 CodeForces ~ 985B ~ Switches and Lamps (暴力 + 桶排)

题意:有n个开关和m盏灯,给定一个矩阵a,若a[i][j]==1则说明开关i与第j盏灯连接.初始时所有灯都是关闭的.按下某开关后,所有与这个开关连接的灯将会打开,已经打开的不会关闭.现在你需要去掉一个开关,使得按下剩余n−1个开关后,所有灯都可以打开.若存在方案,则输出YES,否则输出NO.思路:存下每个开关可以控制的灯,存下每个灯可以被多少个开关控制,然后暴力枚举去掉每一个开关,如果去掉某个开关...

2018-05-28 15:34:11 459

原创 CodeForces ~ 985A ~ Chess Placing (水)

题意:现在有一个1*N的棋盘(编号为1~N),棋盘颜色为“BWBWBW...”,现在有N/2个棋子在棋盘上,给你这N/2个棋子所在的位置,问将所有棋子都放在一个颜色的块上,最少需要多少步?棋子每次只能移动一格,且不能移动到已经有棋子的格子上。思路:可以发现只有两种情况,所有棋子都在B上,或者所有棋子都在W上,两个取最小值就是答案。假设都移动到B上,最后一个棋子一定对应最后一个B,第i个棋子...

2018-05-28 15:18:19 188

原创 POJ ~ 1941 ~ The Sierpinski Fractal (DFS打印图形)

题意:给你一个N,对应的N阶图形,n=0时结束。思路:我们先开一个二维数组,把所有位置置为空格,然后把该有字符的地方置为字符就可以了。我们可以发现图形为矩形n=1时,图形大小为2*4n=2时,图形大小为4*8n=3时,图形大小为8*16n=n时,图形大小为(2*2^(n-1))*(4*2^(n-1))==(2^n)*(2^(n+1))我们进行递归打印,明显n=1的时候为递归结束条件,此时把2*4的...

2018-05-25 15:14:55 411

原创 POJ ~ 2083 ~ Fractal (DFS打印图形)

题意:给你一个N,你打印出一个图形,当n=-1时结束,图形规律为n为1时图形为‘X’n>=2时图形为呈如下规律B(n - 1) B(n - 1) B(n - 1)B(n - 1) B(n - 1)思路:我们先开一个二维数组,把所有位置置为空格,然后把该有X的地方置为X就可以了。我们可以发现图形为正方形n=1时,图形大小为1*1n=2时,图形大...

2018-05-24 21:13:54 301

原创 UVA ~ 11853 ~ Paintball (DFS,对偶图)

题意: 有个1000*1000的正方形战场,战场西南角的坐标为(0,0),西北角的坐标为(0,1000)。战场上有n(0≤n≤1000)个敌人,第i个敌人的坐标为(xi,yi),攻击范围ri。为了避开敌人的攻击,在任意时刻,你与每个敌人的距离都必须严格大于它的攻击范围。你的任务是从战场的西边(x=0的某个点)进入,东边(x=1000的某个点)离开。如果有多个位置可以进出,你应当求出最靠北的位置。输...

2018-05-23 17:17:08 402

原创 UVA ~ 506 ~ System Dependencies (DFS + 模拟)

 题意:软件组件之间可能会有依赖关系,例如,TELNEL和FTP都依赖于TCP/IP。你的任务是模拟安装和卸载软件的组件的过程,首先是一些DEOEND指令,说明软件之间的依赖关系(保证不存在循环依赖),然后是一些INSTALL,REMOVE和LIST指令,如表6-1所示。    DEPEND item1 item2 [item3 ...] iitem1 依赖组...

2018-05-22 21:04:13 220

原创 UVA ~ 1599 ~ Ideal Path (非简单图 + 逆向BFS)

题意:给一个n个点m条边(2≤n≤100000,1≤m≤200000)的无向图,每条边上都涂有一种颜色。求从结点1到结点n的一条路径,使得经过的边数尽量少,在此前提下,经过边的颜色序列的字典序最小。一对结点间可能有多变,一条边可能连接两个相同的结点。输入保证结点1可以到达结点n。颜色为1~10^9的整数。【分析】首先回顾一下第3章中介绍的“字典序”。对于字符串来说,字典序就是在字典里的顺序。例如,...

2018-05-20 21:44:13 445

原创 UVA ~ 1572 ~ Self-Assembly (拓扑排序)

题意:有n(n≤40000)种边上带标号的正方形。每条边上的标号要么为一个大写字母后面跟着一个加号或减号,要么为数字00。当且仅当两条边的字母相同且符号相反是,两条边能够拼到一起(00不能和任何边拼在一起,包括另一条标号为00的边)。假设输入的每种正方形都有无穷多种,而且可以翻转和旋转,你的任务是判断能否组成一个无限大的结构。每条边要么悬空(不喝任何边相邻),要么和一个上述可拼接的边相邻。如图6-...

2018-05-20 20:15:44 364

原创 UVA ~ 12171 ~ Sculpture (离散化 + floodfill)

题意:某雕塑由n(n≤50)个边平行于坐标轴的长方体组成。每个长方体由六个整数x0,y0,z0,x,y,z表示(均为1~500的整数),其中x0为长方体的顶点中x坐标的最小值,x表示长方体在x方向的总长度。其他4个值类似定义。你的任务是统计这个雕像的体积和表面积,注意雕塑内部可能会有密闭的空间,其体积硬计算在总体积中,但从“外部”看不见的面不应计入表面积,雕塑可能会由多个联通块组成。【分析】设想有...

2018-05-20 17:31:10 489

原创 UVA ~ 10562 ~ Undraw the Trees (多叉树 + DFS)

题意:你的任务是将多叉树转化为括号表示法。如图所示,每个结点用除了“-”,“|”和空格的其他字符表示,每个非叶结点的正下方总会有一个“|”字符,然后下方是一排“-”字符,恰好覆盖所有子结点的上方。单独的一行“#”为数据结束标记。输入T组数据,每组数据以"#"结束。思路:按照DFS序打印就好了。如果不是叶子结点就找到最左边的“-”然后DFS子树。注意:该树可能为空,即该组数据只有一个‘#’,此时输出...

2018-05-20 11:46:39 247

原创 URAL ~ 1167 ~ Bicolored Horses (基础DP)

题意:有N匹马和K个马厩,要把这些马安排到马厩中,每匹马有一个颜色(黑或白),当一个马厩中有不同颜色的马,那么就会产生一个不开心值,值为这个马厩中的白马数*黑马数。农夫将让马排成一列按照顺序进入马厩(当i<j时,第i个马厩中马的编号不能比第j个马厩中马的编号小),使得所有马厩中都有马的情况下,这个不开心值最小为多少?思路:我们定义dp[i][j]表示前i个马厩放前j个马时的不开心值。 当前马...

2018-05-18 21:46:48 193

原创 POJ ~ 2823 ~ Sliding Window (单调队列 or RMQ or 线段树)

题意:给你n个数字,现在有一个长度为k窗口,每次往右移动一位,问窗口中的最小值和最大值;思路:滑动窗口最值问题,用单调队列解。也可以用RMQ和线段树过。坑点:G++可能会超时,C++能过。单调队列://#include<bits/stdc++.h>#include <iostream>#include <cstdio>#include <cmath&...

2018-05-17 18:12:20 212

原创 HDU ~ 1551 ~ Cable master (二分)

题意:有N条绳子,从他们中切割出来K条长度相同的绳子的话,这K条绳子每条最长能有多长?输入N,K然后输入N条绳子长度。答案保留两位小数。思路:直接二分答案,长度为m时,如果切出来的段数大于等于k,那么就增大m,否则就减小。最小为0,最大为所有绳子长度和。#include<bits/stdc++.h>using namespace std;const int MAXN = 10005...

2018-05-17 10:57:53 246

原创 HDU ~ 2300 ~ Crashing Robots (模拟)

题意:有N个机器人在仓库中移动,机器人会按照指令做事,指令有三种“FLR”对应直走,左转,右转,机器人有一个面朝方向“ESWN”,问在执行指令过程中有没机器人撞到墙,或者撞到机器人?先输入T组测试数据,然后输入地图大小A*B,再输入n和m,表示有n个机器人(编号为1~n)m条指令,输入n个机器人的起始位置和面朝方向,然后输入m条指令,每条指令三个值,i,turn,repeat,第i个机器人,指令(...

2018-05-17 09:13:57 630

原创 UVA ~ 815 ~ Flooded! (思维)

题意:有一个n*m(1≤m,n<30)的网格,每个格子是边长10米的正方形,网格四周是无限大的墙壁,输入每个格子的海拔高度,以及网格内雨水的总体积,输出水位的海拔高度以及有多少百分比的区域有水(即高度严格小于水平面)。以上内容来自《算法竞赛入门经典》补充:第二个要输出的是,被水淹没的格子数占所有格子的百分比。思路:首先我们将洪水的体积/100,然后我们考虑格子的时候就不需要考虑底面积了。然后...

2018-05-17 08:25:08 503

原创 UVA ~ 10129 ~ Play on Words (欧拉路)

题意:输入n(n≤100000)个单词,是否可以把所有这些单词排成一个序列,使得每个单词的第一个字母和上一个单词的最后一个字母和上一个单词的第一个字母相同(例如acm,malform,mouse)。每个单词最多包含1000个小写字母。输入中可以有重复的单词。【分析】把字母看作结点,单词看成有向边,则问题有解,当且仅当图中有欧拉路径。前面讲过,有向图存在欧拉道路的条件有两个:底图(忽略边方向后得到的...

2018-05-15 11:45:03 236

原创 UVA ~ 10305 ~ Ordering Tasks (拓扑排序)

题意:假定有n个变量,还有m个二元组(u,v),分别表示变量y小于v。那么,所有变量都从小到大排列起来应该是什么样子呢?例如有4个变量a,b,c,d,若已知a<b,c<b,d<c,则这四个变量的排序可能是a<d<c<b。尽管还有其他可能(d<a<c<b),你只需要输出其中一个即可。【分析】把每个变量看成一个点,“小于”关系看成有向边,则...

2018-05-15 09:49:38 300

原创 UVA ~ 816 ~ Abbott's Revenge (BFS + 打印路径)

题意:有一个最多包含9*9个交叉点的迷宫。输入起点,离开起点时的朝向和终点,求一条最短路(多解时任意输出一个即可)。 这个迷宫的特殊之处在于:进入一个交叉点的方向(用NEWS这四个字母分别表示北东西南,即上右左下)不同,允许出去的方向也不同。例如,1 2 WLF NR ER 表示交叉点(1,2)(上数第1行,左数第2列)有3个路标(字符“”只是结束标志),如果进入该交叉点时的朝向为W(即朝左)...

2018-05-14 11:47:43 398

原创 UVA ~ 1103 ~Ancient Messages (思维 + 图的联通块的应用)

题意:本题的目的是识别3000年前古埃及用到的六种象形文字,如图6-10所示。每组数据包含一个H行W列的字符矩阵(H≤200,W≤50),每个字符为4个相邻像素点的十六进制(例如,10011100对应的字符就是9c)。转化为二进制后1表示黑点,0表示白点。输入满足:□不会出现上述6中符号之外的符号。□输入至少包含一个符号,且每个黑像素都属于一个符号。□每个符号都是一个四连块,并且不同符号不会相互接...

2018-05-12 11:48:40 231

原创 UVA ~ 572 ~ Oil Deposits (DFS求联通块)

题意:输入一个m行n列的字符矩阵,统计字符‘@’组成多少个八连块(上,下,左,右,左上,左下,右上,右下)相连算一个块。思路:DFS,八个方向,找到一个‘@’就把跟他相连的块都变为‘*’,然后找下一个@。#include<bits/stdc++.h>using namespace std;const int MAXN = 105;int n, m, dir[8][2] = {{0...

2018-05-12 10:20:02 205

原创 UVA ~ 297 ~ Quadtrees (四分树)

题意:如图6-8所示,可以用四分树来表示一个黑白图像,方法是用根结点表示整幅图像,然后把行列个分城两等分,按照图中的方式编号,从左到右对应4个子结点。如果某子结点对应的取余全白或全黑,则直接用一个黑结点或者白结点表示:如果即有黑又有白,则用一个灰结点表示,并且为这个区域递归建树。给出两棵四分树的先序遍历,求二者合并之后(黑色部分合并)黑色像素的个数。p表示中间结点,f表示黑色(full),e表示白...

2018-05-11 20:54:54 345

原创 UVA ~ 699 ~ The Falling Leaves (二叉树的DFS)

题意:给一棵二叉树,每个结点都有一个水平位置:左子结点在它左边一个单位,右子结点在右边1个单位。从左向右输出每个水平位置的所有结点的权值之和。如图6-7所示,从左到右的3个位置的权和分别为7,11,3。按照递归(先序)方式输入,用-1表示空树。思路:开一个数组维护该列的和即可,DFS的过程中边输入边统计。#include<bits/stdc++.h>using namespace s...

2018-05-11 15:28:13 263

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除