自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Anxdada -- 我等风来也等你

此博客不会维护了

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

原创 HDU --- 5703 Desert 水题【找规律】

传送门 //题意: 就是给你n升水, 每天喝整数升, 问有几种喝法. //思路: 多写几种水的喝法出来就可以找到规律(写到5的时候差不多), 就是2^(n-1)次方种. 那么二进制也是非常好转化的. 也就是一共n位, 除第一位是1, 其他的都是0.AC Codevoid solve(){ int n; scanf("%d",&n); for(int i=1;i<=n;i

2017-08-24 09:26:34 358

原创 LA -- 3029 City Game 【思维 + dp】

传送门 //题意: 给出一个只有F,R组成的矩阵, 找出一个最大全由F组成的矩阵, 并将它的面积乘3输出. //思路: 还是类似于扫描法, 维护几个值, up[i][j]代表格子i,j 往上最大能走的空格数. left[i][j]代表格子i,j 往左最大能走的空格数. right[i][j]代表格子i,j 往右最大能走的空格数. 那么怎么计算了. 如果第i行第j列不是空格, 那么三个数组的值都

2017-08-23 19:05:14 303

原创 LA -- 3695 Distant Galaxy 【思维】

传送门 //题意: 给定一个平面的n个点坐标, 找出一个矩形使得它的边界包含尽可能多的点. //思路: 直接枚举矩形的四个边界肯定是不行的, 达到了On^4,加上累加的时间就是On^5. 对于n最大100的数据是不行的. 那么我们优化一下. 只进行部分枚举. 即枚举这个矩形的上下边界, 然后在这个上下边界中进行从左往右扫描算点. 那么我们肯定需要维护一些值. left(l)[i]维护的是竖线i的

2017-08-23 16:51:04 305

原创 UVa -- 10635 Prince and Princess 【想法】

传送门 //给出两个序列, 求这两个序列的LCS.每个单序列保证两两不同. 由于数据量比较小, 那么直接n^2是可以过的. 但是如果数据量变大, 如1e4, 则n^2是肯定过不了的. 所以我们需要找出更优的算法. //我们可以注意带每一个序列中的数是两两不同的, (以样例来说)我们对第一个序列重新编号(1,2,3,4,5,6,7), 那么对应第二个序列变成(1,4,6,3,0,0,5,7),

2017-08-23 16:35:15 292

原创 LA -- 3708 Graveyard 【思维】

传送门 //题意:子一个周长为10000的圆上等距分布着n个雕塑, 现在有m个雕塑需要加入, 使得(n+m)个雕塑在圆上等距分布, 问最少让原先的n个雕塑移动多少距离. 前三个样例解释如图. //思路 : 重点我们观察那三幅图. 可以发现, 每次都有一个雕塑没动. 那么我们就大胆猜测就是每一次都有一个雕塑没动. 以它作为坐标0. 其他雕塑相对进行编号. 并且我们对原图进行等比例减小的10000

2017-08-23 10:52:42 534

原创 UVa -- 11300 Spreading the Wealth 思维好题啊!【思维】

传送门 //首先说好, 这道题的代数分析过程是最重要的, 以后也可能经常会用到. 所以务必重视 //题意: 每个人其实有一些硬币, 每个人可以给相邻人一些硬币, 问最少需要转手几枚硬币使得每个人的硬币数相等. //这道题的思路非常棒 ! 首先设定xi 表示第i个人给来上一个人多少枚硬币, 如x2表示第二个人给了第一个人多少枚. 因为是个环, 那么x1表示第一个人给了最后一个人多少枚硬币, 如

2017-08-23 10:41:05 389

原创 UVa --- 10881 Piotr's Ants 【思维】

传送门 //题意:给出一根长度为L的木棒上n只蚂蚁的初始坐标和运动方向, 速度是1cm/s,问T秒后每只蚂蚁的所在位置的情况和运动方向, 如果两只蚂蚁在运动中碰头了, 则这两只蚂蚁立刻掉头(不计时间), T秒后如果蚂蚁掉下木棒输出”Fell off”, 正在掉头输出”Turning”. //这道题就很考思维了, 其实我们可以发现对于有一只蚂蚁起始为(1,R), 那么两秒后一定在(3,R) 出有

2017-08-23 10:05:27 333

原创 HDU --- 6082 度度熊与邪恶大魔王 【完全背包】

传送门 //题意 : 中文的还是不要偷懒, 自己读吧. //思路 : 利用完全背包. dp[i][j]代表打死防御力为i, 生命值为j的怪兽最少需要消耗的晶体数. 由于技能可以被无限多次使用, 那么这就有点类似完全背包了, 每一种物品可以放无限多次. 所以就是一道裸题了, 直接上就是了, 注意维护的一个最小, 即可以打倒高血量的晶体数那么也一定可以打倒低血量的, 所以需要更新一个最小值. 因为我

2017-08-22 20:10:21 444

原创 HDU --- 5965 扫雷 【dp + 思维】

传送门 //题意 : 自己看吧, 中文不难. //思路 : 比赛的时候想多了. QAQ难受. 用dp[i]表示当前列放的地雷数, num[i]是题目中给出的数量. 并且可以知道只要第一列的地雷数确定了, 那么后面的方案数也就一定确定了. 所以我们就枚举第一列可能放的方案数, 最多三种情况0,1,2. 然后根据dp[i]的性质我们也可以推出, dp[i] = num[i-1] - dp[i-1

2017-08-22 19:35:40 385

原创 HDU --- 5961 传递 【思维 + bfs】

传送门 //题意: 给你两幅图, 为是否都是竞赛图. 竞赛图的定义题目中给出了的. //思路 : 比赛的时候没开 . 因为比赛想的是暴力, 不敢动. 下来看了下正解, 用bfs, 不可能会出现深度>=2的, 出现了就不是, 否则就是. 只能说想法太好了, 我怎么就想不到了. 太菜了… //注意的就是如何简化代码量, 因为有两幅图, 但是最好只写一个bfs最好, 避免写的丑. 所以要多多学习!

2017-08-22 19:27:03 409

原创 HDU --- 5963 朋友 【树上博弈】

传送门 //题意 : 中文就不说了. //思路 : 博弈最重要的是多写写几个样例, 然后做大胆的猜测. 我们首先考虑一条链的情况, 那么我们发现只要当与根节点直接相连的那条边权值为1时, 先手必赢. (这个可以自己下去推推, 很简单的), 那么我们增加一条链, 可以发现如果那两条和根节点直接相连的边都是1, 先手操作其中一条边, 则后手模仿着, 那么一定后手赢. 所以就可以广泛推出. 与根节

2017-08-22 19:16:48 384

原创 HDU --- 6165 FFF at Valentine 多校第九场 【强联通缩点 + 维护拓扑序】

传送门 //题意 : 给出一幅有向图, 问是否图中任意两点都可以到达(如 1,5 如果1不能到5, 5可以到1, 那么也算1,5可以到达) //思路 : 直接强联通缩点, 然后维护一个入度为0的拓扑序, 如果某一次入度为0的点>=2了, 那么这些点之间就不能到达, 就输出NO了. 所以多画几幅图就可以知道了. 比赛的时候想了挺久的…. 太菜了.AC Code/** @Cain*/con

2017-08-22 18:45:58 729

原创 四色猜想

百度百科 //四色猜想(四色猜想的证明于1976年由美国数学家-阿佩尔(Kenneth Appel)与哈肯(Wolfgang Haken)借助计算机完成,称为四色定理)//猜想简述 : 将平面任意地细分为不相重叠的区域,每一个区域总可以用1234这四个数字之一来标记而不会使相邻的两个区域得到相同的数字 四色定理的“相邻”是指两块多边形地区“至少一条边重合”才为之相邻 “至少一条边重合”同时也隐

2017-08-21 15:46:20 2137

原创 CF --- 831C Jury Marks 【思维】

传送门 //每个人有一个初始化分, 给你n个打分情况, 和k个在某次打分后这个人的得分情况. 问它初始的分有多少种可能. //当时做的时候一看只知道前缀和, 但具体的做法没想出来, 下来补的时候再去具体想了想怎么做. 首先求一个前缀,然后对于每一个输入的看个数, 进行换算推进vector, 前缀当然记得去重, 否则会重复计数. 因为这k个得分是不定那个时候得出来的分, 所以每一个前缀都要换算.

2017-08-21 10:40:53 286

原创 费马猜想

百度百科 //费马猜想(费马猜想的证明于1994年由英国数学家-安德鲁·怀尔斯(Andrew Wiles)完成,称为费马大定理)同样是世界近代三大数学难题之一. //简单描述 : 当整数n >2时,关于x, y, z的方程 x^n + y^n = z^n 没有正整数解. 这么重要的定理肯定是要知道的啊. 也有一些题目针对这个. //用到这个猜想的一般是注意一下范围就可以知道答案在一个较小

2017-08-20 23:36:52 2469

原创 读入外挂

inline int read(){ int x=0;bool f=0;char ch=getchar(); while (ch<'0'||'9'<ch) f|=ch=='-', ch=getchar(); while ('0'<=ch && ch<='9') x=x*10+ch-'0',ch=getchar(); return f?

2017-08-20 14:19:18 422

原创 哥德巴赫猜想

百度百科 猜想陈述: 任何一个大于等于4的偶数都能写成两个质数的和. 例如 : CF — 584D //题意 : 将给定的一个奇数n拆成1, 或2, 或3 个素数的和. //思路 : 直接通过哥德巴赫猜想做即可,首先一定是奇数, 所以我们通过减3变成偶数, 为了处理统一情况, 直接小于7的特判掉即可. 自身减掉3后. 然后就是偶数, 然后从两边同时找i 和 n - i都是质数的情况...

2017-08-20 00:50:25 599

原创 HDU -- 3501 Calculation 2 【欧拉函数性质的应用】

传送门 //题意 : 给一个n, 求出1-n中与n不互质的数的和. //思路 : 这道题知道一个关于欧拉函数的性质就知道了. 性质 : 1- n中与n互质的数的和: res = n*phi(n)/2; (其中phi(n) 表示n的欧拉函数) 这道题根据这个性质就可以敲了.AC Code/** @Cain*/typedef long long int ll;const ll mod =

2017-08-19 20:38:04 426

原创 CF --- 798 C Mike and gcd problem 【思维】

传送门 //题意给定一个序列, 问最少操作几次可以使这个序列的GCD大于1. 每次操作是指选取一个数a[i], 删去a[i]和a[i+1]. 并替换成a[i] - a[i-1], a[i] + a[i+1]. //思路: 首先分析是可以知道的一定会输出YES, 因为当全部都是偶数时就一定可以啊, a[i] - a[i-1], a[i] + a[i+1]这个操作一定是可以将奇数变成偶数的, 最多

2017-08-18 18:45:24 393

原创 LA --- 2965 Jurassic Remains 数相同的大写字母 【思维 + 状态压缩枚举 + 中途相遇法(折半搜索)】

传送门 //题意 : 给你n个由大写字母组成的字符串, 从中选取尽量多的串使得选中的串中出现了的大写字母的出现次数都是偶数. 输出可以选的最大值和具体选的那些串. //思路 : 首先是思维转化, 我们发现一个大写字母出现了几次不重要, 出现的次数为奇数还是偶数才是比较重要的. 那么一个字母的状态无非就两种, 奇数或偶数, 那么我们就用二进制来表示, 1表示出现了奇数次, 0表示出现了偶数次,

2017-08-18 10:32:19 522

原创 LA --- 2678 子序列 【思维】

传送门 //题意就是从给定的一段序列中找最短的连续子列, 使得他们的和大于等于S. //这是白书上一些优化算法的引入, 从开始的O(n^3)逐渐到最后的O(n), 引入思考是很棒的. 也就是我们首先需要构造前缀和, 然后确定目标, 设sum[i]表示前缀和. 那么我们的目的是找sum[j] - sum[i-1] >= S. 且i要尽量的大. 也就是sum[i-1] <= sum[j] - S.

2017-08-17 23:02:36 360

原创 LA --- 3905 Meter 流星【浮点数区间交集的处理】思维好题啊!!!

传送门 //题意: 在二维平面给定一个矩形区域, 同时给出许多流星的其实坐标和移动速度, 问在那个时刻矩形区域内包含最多的流星数量. //思路 : 这道题是真的好! 思路非常棒. 我们可以发现流星的轨迹是没有什么用的, 有用的是出现在矩形矩形区域内的时刻, 那么我们可以把每一个流星出现在矩形内的时刻求出来, 这样就是一个区间(L, R)(注意边界不能取), 那么我们就得到许多区间, 问题就转化为

2017-08-17 10:59:31 471

原创 LA -- 3902 Network 【思维 + 遍历树的基本操作】

传送门 //题意: 给定一棵树, 原始只有一个服务器, 它最大可以覆盖到距离它k的叶子结点. 问最少需要添加几个服务器使得树上的叶子结点都能被覆盖. //思路: 通常来说, 把无根树变成有根树会有助于解题!!! 再说这道题有天然的根. 那么操作就是从根节点开始遍历, 遇到是叶子结点的且没有没被初始服务器覆盖到的保存在相应的对应深度的vector中, 然后取深度最深的那个结点的第k级祖先作为要安装

2017-08-16 21:42:59 417

原创 UVa --- 10795 A Different Task 汉诺塔不一样的操作【递归 + 思维】

传送门 //首先说一个汉诺塔的经典结论. 把i-1个盘子从一个柱子整体移动到另一个柱子, 这是需要2^(i-1)-1步. //题意: 给你两个汉诺塔的状态, 问从第一个状态到第二个状态最少需要多少步. 移动的时候满足汉诺塔的规则. //思路 :

2017-08-16 21:34:51 467

原创 UVa --- 10464 Even Parity 偶数矩阵 【状态压缩 + 暴力枚举 + 思维】

传送门 //题意: 给你一个01矩阵, 问最少操作几次可以使得这个矩阵的任意一个元素的上下左右元素加起来是偶数. 操作是指可以将这个矩阵中的0变成1. 但是1不能变成0. //思路: 由于n最大只有15, 所以我们可以考虑用二进制状压枚举出第一行的状态, 然后依次判断下面的状态, 最后得出的那个矩阵和原先的矩阵比较一下, 看有进行了多少次操作. 取最小的那次即可, 如果不能继续走下去了, 记得及

2017-08-16 18:35:39 660

原创 UVa --- 11210 中国麻将【暴力深搜】

传送门 //考虑到UVa和LA有一点不熟悉, 我就都是咋VJ上交的题, 链接也是. //这些题的做法就不说了, 我是在白书的基础上加深了点理解自己写的. 代码解释也是直接写在代码中的. //大概思想就是枚举每一种牌,检查是否有了这张牌后可以”和”. 所以直接深搜即可. 拿来练练代码力. 其实后面做了一道hdu的跟这道很像, 但是hdu的那道更难一点, 并且数据更强一些. 这都是后面再加了一些剪

2017-08-16 14:47:36 623

原创 二分图匹配 --- 最大独立集

结论 : 最大独立集 = 结点总数 - 最大匹配数(最小点覆盖数). //解释: 最大独立集, 即选择尽量多的结点, 使得任意两个节点不相邻(即任意一条边的两个端点不会同时被选中), 最大独立集和最小点覆盖是互补的. 因此可以得出答案. 至于为什么是互补的, 就请好好想想. (白书P356) //提示: 覆盖集 : 对于每条边, 至少有一个点要被选中. 独立集 : 对于每条边, 至少有一

2017-08-16 10:09:38 453

原创 二分图匹配 --- 最小点覆盖

//二分图有一个重要模型 – 最小点覆盖. 结论 : 最小点覆盖 = 二分图最大匹配数.解释: 最小点覆盖指的是选择尽量少的点, 使得每条边至少有一个端点被选中. 那么在二分图匹配中很容易可以被证明就是该个二分图的最匹配数. (把图画出来写一写就知道了.)举几个例子 :经典例题UVa – 11419 //题意: 在一个矩阵上某些位置上有一些目标, 每一次可以发射一颗子弹, 这颗子弹可以把任意一

2017-08-15 23:38:50 601

原创 二分图匹配 --- 最小路径覆盖

结论 : DAG的最小路径的最小路径覆盖 = 顶点数 - 对应二分图最大匹配数(单点也算一条路径) 解释: 最小路径覆盖 : 在图中选取尽量少的路径. 使得每个结点恰好在一条路径上(换句话说, 不同的路径不能有公共点). //如果是无向图, 建的双向边, 所以无向图中的最小路径覆盖 = 顶点数 - 对应二分图最大匹配数/2(被算了两次)不过这个很少用, 一般单向就够了. //还有就是对于有...

2017-08-15 20:53:38 466

原创 福建工程大学OJ --- 2570 university 【二分 , lower_bound 的运用】

传送门 //对于每一个学生的分数, 找和该分数最近的学校即可. //当然用二分找啊, 然后如果熟练运用了lower_bound 和 upper_bound(下面会详细介绍介绍) , 那么直接上就可以, 否则你就直接手写这两个函数(xx, 博主不是很会手写哎,大概知道一些 )也是可以的. 注意边界条件! 即第0个学校就另成一个极值, 反正就是如果没有符合的, 就选边界.AC Code : (l

2017-08-14 14:16:23 782

原创 HDU -- 6113 度度熊的01世界 【搜联通块 + 思维】

传送门 //题意就是题目中的意思. //大概思路有两种. 第一种直接通过0,1联通快的数量来判定图像. 但是有个问题就是例如这种 3 3 010 111 010 那么如果根据一般的判定条件, 会输出-1, 而实际上是1, 所以我们需要做一点小小的改变. 就是在图的外侧加一圈0, 这样这个例子0,1联通快的数量就又都是1了, 这样就好判断了.AC Code/** @Cain*/int

2017-08-13 12:42:05 379

原创 HDU --- 6112 今夕何夕【公式 + 枚举】

xx

2017-08-13 12:24:32 402

原创 Codeforce 839 -- B Game of the Rows 【思维 + 贪心】

传送门 //比赛的时候看错题了, 以为是相邻的座位要是不同的组来做, 关键是这样想还都能过样例. mmm. //下来就把它补了. 既然要相邻的座位要是同一组的人做. 那么就只有4+2+1的做法. 所以我们就把数都分解成这种形式就OK了, (注意34也是算挨着的), 还要注意在算下一种做法时要加上之前的做法, 比如做2的时候, 要把剩余做4的再加上, 因为4的不能连续做两个的, 所以直接加上就好

2017-08-13 10:04:13 592

原创 百练 2766 最大子矩阵 【思维 + dp思想】

传送门 //题意就不多说了. //思想:既然是矩阵, 那么是对称的. 所以我们可以把一个二维的看成两行的数相加,压成一维的, 那么要找最大的矩阵和, 其实就是在一维中找最大连续和. 这样出来的答案就是我们要的. 所以枚举出每一种可能O(n^3)的复杂度. 注意res的初始值不要赋0, 因为最后答案可能是负数./** @Cain*/const int maxn=1e2+5;int a[maxn

2017-08-12 00:17:21 468

原创 HDU --- 1016 素数环 【简单深搜】

传送门 //题意: 给你一个数n, 要求用1-n这些数构成一个环, 且环上任意两个数的和是素数, 问所有的可能性. //思路 : 既然是要考虑到所有性, 当然是选择深搜. 在搜的过程中加一些限制条件就行了. AC Code/** @Cain*/int n;int a[30];bool ispri[30];bool vis[30];void init() //预处理下20以内的素数.

2017-08-11 23:31:35 908

原创 划分树

这篇博客讲的炒鸡好,不懂的就进去看看 //相信这篇博客已经讲得非常清楚了, 所以这里就只贴下我自己的理解和代码. 以poj – 2104 为例 板子:(老规矩)/** @Cain*/const int maxn = 1e5+5;int sorted[maxn];int val[20][maxn];int num[20][maxn];void build(int l,int r,int

2017-08-11 20:30:31 309

原创 HDU --- 5778 abs 【枚举平方数 + 思维】

传送门 //题意 : 给定一个x, 求与x相距最近的一个数y, 且y的每种素因子个数恰好只有2个. //思路 : 因为y的每种素因子恰好只有两个, 那么y一定是一个平方数, 那么我们可以对x(因为和y很近)进行开根, 然后判断它的每种素因子是否恰好为一个, 如果不是这个数就不行. 否则就符合. 并且是对x开根后的两边枚举. 然后取一个绝对值小的就行了. 复杂度在O(1e3)左右. AC Cod

2017-08-11 18:54:04 475

原创 HDU -- 4009 Transfer water 【无定根的最小树形图 + 思维】

传送门 //题意: 山上有一些村民, 每家可以自己挖井取水, 有一个花费(和高度有关), 也可以选择从比他们高的村民家中引水, 建造管道也有一个花费, 那么问最少的花费是多少. //思路 : 因为每一个村民家建造水井所需要的花费都是很不确定的, 所以我们最小树形图, 用一个虚根, 而虚边的权值就是每一户打井所需要的花费, 这样以后跑一遍最小树形图就可以出答案. AC Code/** @Cain

2017-08-11 16:48:00 377

原创 2017 Multi-University Training Contest - Team 6 1008 Kirinriki【思维题 + 尺取】

传送门 //题意: 在给定的一个串中找出两个不重叠且长度相等的两个子串, 并这连两个串的dis要小于所给的那个数. dis为题目中的定义. //思路:由于不确定性, 所以我们可以采取枚举的方法. 因为连个串的长度是相等的, 两个串往中心延展, 一定会形成一个对称轴. 所以我们就可以采取枚举对称轴的方法来做. 枚举每一个前缀, 而我们可以发现每一个前缀它的对称轴都是靠左的, 那么有一些串我们就枚

2017-08-11 16:18:14 335

原创 尺取法的小讲解

例题 poj– 3061 //大概思路: 用两个指针不断去缩小范围, 知道我们所需要的最优答案出现. 一种思想, 需要多想想. //比如说上面这道题: 题意就是求在给定的序列中长度最小的子串, 并且该串的和要不小于所给的S. //思路大概就是尺取法: 附上一张图. 黄色部分就是尺取的部分, 可以发现我们一定经历过最优解.AC Codeconst int maxn=1e5+5;int n

2017-08-11 10:57:09 474

空空如也

空空如也

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

TA关注的人

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