自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HARD_UNDERSTAND

???

  • 博客(28)
  • 收藏
  • 关注

原创 Codeforces 659E 找环+(并查集/dfs)

题目: http://codeforces.com/problemset/problem/659/E 题意: 给你一个图,现在要你给这个图里面的边定方向,使得入度为0的点最少。 分析: 对于一个连通块而言,如果里面存在一个环,那么必然所有点的入度都可以大于等于1 否则的话,就存在一个点的入度为0。并查集:#include <bits/stdc++.h>using namespace s

2016-03-31 23:45:25 318

原创 组装电脑 LA 3971 二分答案

题目: 给定电脑的n(n<1000)个配件,每个配件有类型,名字(没用的信息),价格和品质因子。要求每种类型的配件各买一个用于组装电脑,总价格不超过b元。求所有可能的方案中品质因子最差的那个配件的品质因子最大能是多少。 分析: 看着这数据,觉得暴力也可做,枚举每个品质因子,找出满足要求的最大的。但如果数据大一点,就不能这么暴力了,就要二分答案去找最优解了。 具体实现,就是把每种类型的配件都保

2016-03-28 22:37:48 519

原创 Codeforces 650B 二分

题目:http://codeforces.com/problemset/problem/650/B 题意: :给n张图片循环可看,每张图片的朝向为横(w)|竖(v),但是手机是竖直放置的。开始时打开的是第0张图片,如果一张图片为w放置就需先花b秒边把该张图片变成v朝向,从一张图片到下一张图片手机的反应时间为a秒,每观察一张图片需要1秒钟。不能直接跳过没看的图片,但是重新刷到看过的图片时,所花的时

2016-03-28 22:28:58 455

原创 Codeforces 650A 数学简单题

题目:http://codeforces.com/problemset/problem/650/A题意: 给出n个点,问符合和|xi - xj| + |yi - yj|. 这两个公式算出来的两点“距离”相等的点对有几个? 分析: 显然如果上面两个公式相等,那么必须横坐标相等或者纵坐标相等,每次从相等的个数中取出两个的,就是这一相等坐标的排列数,分别按横纵坐标求一遍,但是因为有相等的,这样会重复

2016-03-28 22:14:38 392

原创 hdu 5652 并查集

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5652 题意: 给出一个n*m的图,1是山峰,0是平原,还有q个操作,可以把0变成1,问最少前几次操作可以使得图的上端和下端完全阻隔,就是被1隔开。 分析: 判断是否完全隔开,就是判断是否1可以从左到右全都连起来,那么可以增加两个点s和e,表示最左端个最右端,如果是1,那么将1的八方是1的点连接起来,

2016-03-28 15:24:34 326

原创 hdu 5651 反省

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5651 xiaoxin巨从小就喜欢字符串,六年级的时候他就知道了什么是回文串。这时,xiaoxin巨说到:如果一个字符串 SS 是回文串,那么该字符串从前往后看和从后往前看是一样一样的。六年级的暑假,xiaoxin很快就做完了暑假作业,然后到腾讯做起了实习生。这日,leader给了xiaoxin一个

2016-03-27 13:14:45 357

原创 UVa 11464 偶数矩阵 枚举

题目: 给出一个n*n的 0、1矩阵,把尽量少的0改成1,使得每个元素的上下左右的元素之和都为偶数。 分析: 这题就是求哪些0变成1能满足题目条件,并求出最小值。一般这种题,就是每个位置的0变还是不变的问题,最先想到的就是枚举所有情况,找出最优解。但是因为最大是15*15矩阵,总共有2^225种情况,不可行。但是可以由第一行推出所有行,所以只需要枚举第一行的状态,推出所行的状态,看看是否满足条

2016-03-26 18:29:12 774

原创 poj 1753 枚举

题目:http://poj.org/problem?id=1753 题意: 有一个4*4的棋盘,棋盘上有黑白格,每一次你可以翻其中的一个格子,这个格子(x,y)如果被翻,那么对应的(x-1,y);(x+1,y);(x,y-1);(x,y+1)格子也会被翻为相对的颜色,让你写一个程序,看最后将棋盘全部翻为白色格子或者是黑色格子用的最少的步数是多少?如果无法把所有格子都翻为白色或者是黑色,那么输出“

2016-03-26 00:14:16 298

原创 Codeforces 637D 模拟

题目:Codeforces 637D 题意: 有个人从0点走到m点,中间点会有障碍,他必须跨过去,但是在跨之前,必须跑一段距离,至少是s,然后他就可以跨越不大于d的距离,给出障碍点,问他能不能走到最后。 分析: 这场的题目叙述好难理解,这题我已开始读错题了,一位每个障碍是一段距离,WA了好几次,后来一读原来是点,晕~~ 后来改了一下就A了。简单说一下思路:因为有的障碍物之间的距离太小,所以不

2016-03-25 00:02:56 514

原创 hdu 5631 并查集

题目:hdu 5631 题意: 有一个n个点的连通图有n+1条边,问有几种删边的方法可以保持连通。 分析: n个点的连通图,那么最多可以删去两条边,因为n<100,可以枚举删除的是哪两条边,然后判联通。#include<cstdio>#include<cstring>#include<algorithm>#include<vector>#include<iostream>using

2016-03-24 00:22:18 288

原创 hdu 5438 并查集

题目:hdu 5438 题意: 有一些池塘用管道连接着,但是主人没钱了,要清除一些与其他池塘相连数目少于2的池塘,包括一些独立的池塘。每个池塘都有一个价值,最后在删完一些池塘后求出有奇数个连通块的池塘的价值和。 分析: 记得是一道网络赛的题目。而且还记得我做的时候,用了deque,总是超时。又做了一下,好简单的题目。就是模拟一下删池塘的操作就好。先用并查集记录一下每个池塘所处的连通块,然后开

2016-03-23 23:41:39 272

原创 UVa 10129 单词 (有向欧拉路+并查集)

题目: 输入n个单词,是否可以把这些单词排成一个序列,使得第一个字母和上一个单词的最后一个字母相同。仅包含小写字母例如(acm malform mouse)就可以。 分析: 这是一道判断欧拉路的题目,上篇对欧拉路写了点基本定义。对于这题,把首尾字母看做节点,单词看成是有向边,用并查集判断是否连通,然后再根据有向图的结论:最多只能有两个点的入读不等于出度,而且必须是其中一个点的出度比入度大一

2016-03-23 22:33:23 465

原创 hdu 3018 欧拉路定理+并查集

题目:hdu 3018 题意: 有一些道路,每次只能走一遍,问最少几次走遍所有道路? 分析: 这题是经典问题:一笔画问题。解决这个问题,需要知道几个定理和定义: 1. 欧拉道路:能否从无向图中的一个节点出发走出一条道路,每条边恰好经过一次,这样的路线称为欧拉道路。 2. 如果一个图是联通的且最多只有两个奇度点,则一定存在欧拉道路。如果有两个奇度点,则必须从其中一个出发,回到另一个终止。如

2016-03-23 21:19:45 276

原创 并查集的初步学习

用一句话描述一下并查集:并查集是用树来表示集合,他把每一个连通分量看做一个集合,其中包含了连通分量中的所有点,其中一个连通分量中的点都有共同的父亲结点。 具体的构造: 1. 初始化,每个点的父节点指向自己。 2. 如果两个点有边,那么就在一个连通分量中,所以指向同一个父节点。 3. 最后所有点都会指向各自的父节点,父节点相同的在一个连通分量中。 基本代码就一行:int findfa(int

2016-03-23 15:37:17 239

原创 hdu 5171 fib矩阵快速幂

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5171 题意: 给你N个数字,让你用这些数字构造一个最大的集合,其中可以选取M次最大的俩个数加入集合中,求最后集合中的数最大。 Multi test cases (about 3) . The first line contains two integers n and k (2≤n≤100000,1≤

2016-03-23 00:25:08 254

原创 hdu 5187 快速幂

题目:http://acm.hdu.edu.cn/showproblem.php?pid=5187 题意: 给你n个数,然后把这n个数排列,规则是先升后降或者先降后升。 分析: 其实规律很简单,只要确定了极值,顺序就一定了。但要注意n,p的范围。比如n=1,p=1的情况。一共有n个位置,每个位置2种选择,共2^n中,再减去头尾各重复的一种。因为n,p的范围是 (1≤n,p≤1018),所以直

2016-03-22 22:56:10 297

原创 hdu 4549 矩阵快速幂+费马小定理

题目: M斐波那契数列F[n]是一种整数数列,它的定义如下: F[0] = a F[1] = b F[n] = F[n-1] * F[n-2] ( n > 1 ) 现在给出a, b, n,你能求出F[n]的值吗? Input 输入包含多组测试数据; 每组数据占一行,包含3个整数a, b, n( 0 <= a, b, n <= 10^9 ) Output 对每组测试数据请输出一个

2016-03-22 22:20:05 466

原创 hdu 3519 递推+矩阵快速幂

题目:http://acm.hdu.edu.cn/showproblem.php?pid=3519 题意: 有n个硬币排成一排,有正有反,问有2个以上连续的相同硬币有几种方案 分析: 典型的推公式用矩阵快速幂求解的题目。 (偷个懒,贴个别人的推导) 长度为 n 的 01 串一共有 2^n 种不同的排列方法 ,设 f(n) 为长度是 n 的不包含连续 3 个或以上相同的 1 或 0 的 0

2016-03-22 20:48:14 346

原创 Codeforce 633D multiset

题目:Codeforces 633D 题意: 给出n个数,要求将这n个数排列,使得满足下列要求的前缀最小 the sequence consists of at least two elements f0 and f1 are arbitrary fn + 2 = fn + 1 + fn for all n ≥ 0. n<=1000 分析: 因为f0和f1

2016-03-22 19:27:16 306

原创 hdu 1005 矩阵快速幂

题意:A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7。Given A, B, and n, you are to calculate the value of f(n). 分析: 这题以前做过,还写了个题解:hdu 1005 对于这题,

2016-03-22 18:38:10 350

原创 快速幂的初步学习

快速幂的用处很多,常见的问题有快速幂取模和矩阵快速幂,一般的问题套用模板就可以。快速幂的思想是分治,类似于二分,所以时间复杂度是O(n)。 推荐一篇很好的文章:http://blog.csdn.net/cambridgeacm/article/details/7703809FZU 1752 A^Bmoc C 题意:Given A,B,C, You should quickly calculate

2016-03-22 17:10:15 249

原创 Codeforces 632D 暴力

题目:http://codeforces.com/contest/632/problem/D 题目: 给出n个数,和m,要求从这n个数中找出最多个数,使它们的最小公倍数不超过m 分析: 先统计一下输入的数的个数,然后暴力求出每个数的倍数都加上这个数的个数,然后在m的范围内找一个最多的数。#include<bits/stdc++.h>using namespace std;const in

2016-03-22 12:45:03 442

原创 Codeforces 632C - The Smallest String Concatenation

题目:Codeforces 632C题意: 输入n个字符串,将这n个字符串加起来,求最小字典序的字符串 例: Input 5 x xx xxa xxaa xxaaa Output xxaaaxxaaxxaxxx 分析: 自己像个傻逼一样,写了半天写了个自定义排序函数,虽然过了,但是用时太长了,看了一下cf上别人的代码,我真是太蠢了。。。#include<bits/stdc+

2016-03-22 00:07:59 467

原创 nyoj 1070 诡异的电梯 简单dp

题目: 新的宿舍楼有 N(1≤N≤100000) 层 and M(1≤M≤100000)个学生. 在新的宿舍楼里, 为了节约学生的时间也为了鼓励学生锻炼身体, 所以规定该宿舍楼里的电梯在相邻的两层之间是不会连续停下(即,如果在第2层停下就不能在第3层停下。).所以,如果有学生在相邻的两层之间要停下, 则其中的一部分学生必须选择走楼梯来代替。规定:一个人走下一层楼梯的花费为A,走上一层楼梯的

2016-03-21 21:35:15 418

原创 Codeforces 6225B KMP

题目:Codeforces 625B 题意: 给你主串s,模式串t,其中t可能会在s中出现很多次,每次操作可以使s中的一个字符换成’#’,问最少的操作次数。 分析: 简单的KMP,求出模式串t在主串中出现的位置,然后再找出重叠的个数,相减即使答案。 例如主串1212121,模式串121,因为主串中有重叠,只需要12#2#21,两次就可以。#include<cstdio>#include<

2016-03-20 15:14:27 322

原创 Codeforces 631D - Messenger KMP

题目:http://codeforces.com/problemset/problem/631/D 题意: 输入一段压缩后的字符串,问子串在主串中出现的次数 分析: KMP匹配求子串在主串中出现的次数,因为是压缩后的字符串,这就要考虑字符串的长度。因为要完全匹配,显然,模式串的中间的字符和数目必须要完全和主串匹配,但是前后两个字符数目可以不相等,所以模式串删去前后两个字符,去和主串匹配,完全

2016-03-20 13:55:38 507

原创 KMP算法初步学习

准备系统的学习一下算法,就先行KMP开始吧!到目前为止,我能用到KMP的地方有三类题目: - 给出主串s和模式串t,查找t在s中出现的位置 - 给出主串s和模式串t,查找t在s中出现的次数 - 给出一个字符串t,求t中循环节的个数KMP算法的时间复杂度是O(n),因为主串s在匹配过程中是不回溯的,KMP算法的巧妙之处在于对模式串的预处理,当模式串的第j个位置与主串第i个位置不匹配的时候,他会回

2016-03-20 12:20:05 324

原创 hdu 5646

题目 :hdu 5646题意: 给出整数n,k,求n的k个划分,使得k个数乘积最大分析: 要想乘积最大,而且所有的数不同。首先想到的就是所有的数在平均值两边,即在n/k两边,剩下n%k就要往右边补了。基本的思路是这样,实现起来为了保持都不一样,先给1-k个数附上1-k的数值,剩下的n-k*(k+1)/2,然后平均分上,多余的分到最后。#include<iostream>#include<cst

2016-03-20 08:13:08 351

空空如也

空空如也

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

TA关注的人

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