自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二分写法总结

二分求下界所谓下界,指的是在一段区间[l, r]中,找出符合要求的一个数x,使得[l, x)这段区间都不符合要求,而[x, r]都符合要求int lower_bound(int* a, int l, int r){ int mid, ans = -1; while(l <= r) { mid = (l + r) / 2; if(c...

2018-07-13 22:30:19 3100 1

原创 STL之sort函数详解 ( 为什么sort要用插入排序? 为什么插入排序在大致有序的情况下效率会比较高 ? )

一朋友面试的时候被问到了STL里的sort函数,被怼到怀疑人生,我听了那些问题发现也不会,研究了好久,网上也没有详细解释的,今天突然灵感爆发,想明白了几个问题可能有的人会觉得sort这么简单, 有什么好问的, 那你可以看看如下几个问题你能否答得上来sort是用什么排序实现的?(或者说sort如何优化?)实际上,STL中的sort是一种混合排序,它应用了快速排序、堆排序和插入排序,以下是各个排...

2019-10-30 15:14:26 2124 6

原创 动态规划空间优化之滚动数组

动态规划本就是一个记录再利用的高效算法,由于其要记录之前的状态,必然会使用大量空间,要优化动态规划算法的空间,我们必然要合理利用dp数组,有一种优化方法就是利用滚动数组来进行状态转移。我们拿动态规划中一个典型例子01背包来举例问题描述:有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。当我们不进行优化的时候,我们可以定义如下...

2019-08-06 20:30:15 2915 1

原创 杂七杂八的东西

为什么CSDN文章分类没有文章就不显示了啊

2018-07-13 17:08:27 178

原创 数学题几何题都记录在此分类下了

为什么CSDN文章分类没有文章就不显示了啊

2018-07-13 17:07:31 284

原创 不会打牌啊

为什么CSDN文章分类没有文章就不显示了啊

2018-07-13 17:06:39 176

原创 数和图的一些题就记录在此分类下了

为什么CSDN文章分类没有文章就不显示了啊

2018-07-13 17:05:27 121

原创 数据结构就是数据结构喽

为什么CSDN文章分类没有文章就不显示了啊

2018-07-13 17:03:04 121

原创 记录一些小算法,做题时可能要用到的小技巧

为什么CSDN文章分类没有文章就不显示了啊

2018-07-13 17:01:21 413

原创 我的头文件(不断更新)

#include<set>#include<map>#include<cmath>#include<stack>#include<queue>#include<vector>#include<string>#include<cstdio>#include<c

2018-04-10 22:31:39 394

原创 Educational Codeforces Round 30 B. Balanced Substring

题目链接http://codeforces.com/contest/873/problem/B题目大意给你一串01字符串(n <= 1e5),让你找出最长的连续的一段子串,且子串中0和1的个数相同思路这题和lis很像,所以一开始我一直往dp方向去想了,一直没做出来 其实这题很简单,我们去统计0和1个数的前缀和,在for一遍的同时,把0和1前缀和的差值对应的位置记下来,如果后面又出现有相同差值的情况

2017-10-15 16:02:30 233

原创 HDU - 1029 Ignatius and the Princess IV

题目链接http://acm.split.hdu.edu.cn/showproblem.php?pid=1029题目大意给你n(n为奇数, n < 1e6)个数,让你找到个数 >=(n+1)/2 的那个数(保证存在)思路题目很简单,但是我们要找最好的实现方法我过的方法有点炸胡,居然水过了, 开一个1e6的数组,统计每个数的出现次数,然后再扫一遍看哪个数出现次数 >= (n+1)/2,当时一直在找数

2017-10-15 14:49:20 192

原创 2007-2008 ACM-ICPC, NEERC, Southern Subregional Contest K. Extrasensory Perception(错排)

题目链接http://codeforces.com/gym/101503/attachments题目大意信封问题 给你两个整数K,N(1 ≤ N ≤ 100; 0 ≤ K ≤ N) ,K封信装对,其他全装错,问你出现这种情况的概率是多少 (如果是0,则输出0,否则以分数形式输出【1也是】)思路典型的错排问题全错排的递推式// d[i] 表示一共i封信全都装错的种类数量d[1] = 0;d[2

2017-10-08 22:10:44 459

原创 2007-2008 ACM-ICPC, NEERC, Southern Subregional Contest J - Numbers Painting

题目链接http://codeforces.com/gym/101503/attachments题目大意输入一个n(1 <= n <= 10 000), 让你给1~n这n个数进行染色,对于任意数A和B,如果A能整除B, 那么这两个数字就不能染成同一种颜色 问你给n个数染色最少需要几种颜色思路由于n不大,直接暴力就好了,对于每一个数字,我们往前面找,找到符合条件的颜色 这里有个小优化,如果直接枚举

2017-10-06 20:28:03 486

原创 2014 Benelux Algorithm Programming Contest (BAPC 14) K - Key to Knowledge(折半搜索)

题目链接http://codeforces.com/gym/101512/attachments题目大意有m道判断题, 给出n个人的答题情况(01字符串),以及得分c 问你有几种标准答案(如果只有一种,就把这种答案输出),使得该标准答案符合每个人的得分情况数据范围1 ≤ n ≤ 12 1 ≤ m ≤ 30 0 ≤ c ≤ m思路如果m<=15, 我们直接枚举答案就好了 但是这道题m最大有3

2017-10-06 19:55:55 535

原创 CTU Open Contest 2016 Suspicious Samples(单调队列)

题目链接http://codeforces.com/gym/101505/attachments题目大意按时间顺序给你n个点, 每个点有一个时间t, 和值v。 我们要把所有点和规定时间内所有点进行比较,如果符合则ans++规定时间:题目有给定时间间隔tl, 规定时间就是当前去和其他点比较的点(简记为P)的时间-tl, 在此时间间隔内的点都加入比较列表比较方法:如果操作是max, 那么我们要把比

2017-10-03 11:57:33 472

原创 2017 ACM/ICPC Asia Regional Qingdao Online 1001-Apple(Java大实数类BigDecimal应用)(已知三点坐标求圆心坐标和半径)

题目链接http://acm.hdu.edu.cn/showproblem.php?pid=6206题目大意给你三个点(x1, y1), (x2, y2), (x3, y3), 可以确定一个圆, 再给你一个点(x, y), 问你该点和圆的关系,在圆外输出Accept, 在圆内或圆上输出Rejected思路比赛的时候题目乍一看思路很简单,就是根据三点算出圆的圆心和半径, 再比较点(x, y)到圆心距离

2017-09-17 18:28:31 328

原创 快速读入模板

namespace IO { const int MX = 4e7; //1e7 占用内存 11000kb char buf[MX]; int c, sz; void begin() { c = 0; //sz = fread(buf, 1, MX, stdin);//一次性全部读入 int tot = 1; c

2017-08-25 12:35:18 304

原创 2017 Multi-University Training Contest - Team 10 1008-Monkeys(快速读入模板实例)

题目链接http://acm.hdu.edu.cn/showproblem.php?pid=6178题目大意给你一颗树, 有n个节点, 给你a1……an-1, 表示ai和i+1有一条边, 有k只猴子, 每个节点只能有一只猴子, 问你最多可以去掉多少边, 使得每只猴子通过剩下的边都能至少连接一只猴子, 输出剩下边的条数思路两个两个匹配就行了, 由于是颗树, 标记一下儿子就行了 这题卡了读入,简直妙(

2017-08-24 19:06:54 362

原创 Codeforces Round #284 (Div. 2) C. Crazy Town

题目链接http://codeforces.com/contest/499/problem/C题目大意给你起点(x1, x2) 和 终点 (x2, y2), 给你n条线(ax + by + c = 0, 给你a, b, c) 问你最少移动几次可以从起点到达终点 移动规则:给你的线将平面分割成几块, 如下图所示 你可以从一个区域移动到相邻区域, 两个区域间必须有公共边思路题目要求两个区域间必

2017-08-18 14:20:13 221

原创 数论模板

组合数int F[N], Finv[N], inv[N];//F是阶乘,Finv是逆元的阶乘 void init(){ inv[1] = 1; for(int i = 2; i < N; i ++) { inv[i] = (MOD - MOD / i) * 1ll * inv[MOD % i] % MOD; } F[0] = Finv[0]

2017-08-16 15:52:43 216

原创 Codeforces Round #428 (Div. 2) B. Game of the Rows

题目链接http://codeforces.com/contest/839/problem/B题目大意给你k组士兵, 每组有ai人, 你有n排座位, 每排座位如下图所示 即{1, 2}, {3, 4}, {4, 5}, {5, 6}, {7, 8}这些座位相邻 问你士兵能否都坐下且保证不同组的士兵不坐在相邻座位上 (题目保证人数<座位数)思路这题我们可以用贪心做, 一下把3~6座简称4座,

2017-08-14 11:18:55 199

原创 Codeforces Round #228 (Div. 1) B. Fox and Minimal path

题目链接http://codeforces.com/contest/388/problem/B题目大意给你一个数k 让你构造一个图G, 使1号点到2号点最短路径有k条 输出的图用一个矩阵表示 矩阵有一个两个坐标轴, 把矩阵左上角的坐标记为(1, 1)坐标值分别从左向右、从上到小递增 坐标(x, y)为’Y’表示编号为x的点到编号为y的点有一条路, 该路为单向的, 为’N’则表示x与y之间没有

2017-08-14 10:37:51 265

原创 Codeforces Round #FF (Div. 2) D. DZY Loves Modification

题目链接http://codeforces.com/contest/447/problem/D题目大意给你一个矩阵, 设答案为ans = 0, 让你进行k次操作, 每次操作为选取一行或一列, ans+=该行或列所有元素之和, 加完后再把该行或列所有元素减去p 问你ans最大为多少思路首先这题的难点就是取行的时候会影响列, 取列的时候会影响行 那我们干脆先别考虑这些, 用r[i] 表示取i次行能得

2017-08-09 14:58:54 224

原创 Codeforces Round #FF (Div. 2) C. DZY Loves Sequences

题目链接http://codeforces.com/problemset/problem/447/C题目大意给你n个数, 可以改变一个数值, 问你最长严格递增序列的长度思路这题的意思很明确, 但是如何实现以及细节处理上存在很大问题 首先实现上, 如果只用一个数组去模拟这个过程求最大值,很容易写挫且会有bug 我们先不考虑修改一个数, 从前往后用up[i]记录第i个位置上升序列的长度,从后往前用d

2017-08-07 10:40:00 199

原创 2017"百度之星"程序设计大赛 - 资格赛 度度熊与邪恶大魔王

题目链接http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=774&pid=1003题目大意有n个怪, 每个怪都有血量ai和防御力bi, 你有m种技能, 每种技能有花费ki 和 伤害 pi 技能可以无限次释放 一个技能只能对一个怪物造成pi - bi点伤害 如果pi-bi<=0, 显然不能对怪物造成伤害, ai<=0

2017-08-06 16:57:20 324

原创 Codeforces Round #370 (Div. 2) C. Memory and De-Evolution(逆向思维)

题目链接http://codeforces.com/contest/388/problem/B题目大意给你初始等边三角形的边长a以及目标边长b 问你把边长为a的等边三角形变为边长为b的等边三角形最少需要几步 一步可以改变三角形一边的大小, 但要保证变化后还是一个三角形思路题目保证b < a, 也就是要把初始三角形变小, 博主一开始的做法是贪心, 每次都把最大的边变得尽可能小,然而后来发现这是有

2017-08-06 13:41:13 195

原创 Codeforces Round #228 (Div. 1)C. Fox and Card Game

题目链接http://codeforces.com/contest/388/problem/C题目大意给你n堆牌, 每堆牌有m张牌, 其分数为a1~am, 两个人轮流选牌,第一个人只能拿最左边的牌, 第二个人只能拿最右边的牌(可以从不同牌堆中选), 每个人都用最优选法使自己获得的值最大, 让你输出牌选完后两个人的分数思路这题看似是一道很难的博弈题,但是仔细思考一下就会发现, 由于他们有只能拿最左边或

2017-07-31 14:55:26 329

原创 Codeforces Round #228 (Div. 1)A. Fox and Box Accumulation(逆向思维)

题目链接http://codeforces.com/problemset/problem/388/A题目大意给你n个盒子,以及其上面最多能放的盒子个数ai, 把这些盒子放成几堆(一层只能有一个盒子), 问你最少放成几堆?思路我们发现如果从大的盒子往上面放盒子进行模拟总是会有bug, 而且写起来很麻烦 所以我们逆向思维, 先放小的 我们把堆从上到下标号0~x, 那么 第0层最少可以放ai=0的盒

2017-07-31 12:35:28 253

原创 LCA模板

#include<bits/stdc++.h>using namespace std;vector<int>g[M];//图的邻接表表示int root;int parent[20][M];int dep[M];int n, q;void dfs(int v, int p, int d){ parent[0][v] = p; dep[v] = d; for(int

2017-07-30 17:07:08 180

原创 Codeforces Round #425 (Div. 2)D. Misha, Grisha and Underground(LCA)

题目链接http://codeforces.com/contest/832/problem/D题目大意给你一棵树, 以及q次询问,每次询问给你a,b, c三个节点 你可以将这三个节点任意(一一对应)定为s, f, t节点, 然后进行以下操作 从s–>f跑最短路,并标记路上的点 从t–>f跑最短路,统计刚刚标记的点的个数 (每次询问过后标记的点会被清空) 问你每次询问统计出的标记的点个数的

2017-07-30 17:05:25 235

原创 几何模板

#include<bits/stdc++.h>using namespace std;const double eps = 1e-10;const double PI = 3.14159265359;inline int dcmp(double x) { return x < -eps ? -1 : x > eps;}struct Point;//using Vector =

2017-07-30 16:39:46 201

原创 Codeforces Round #339 (Div. 2)C. Peter and Snow Blower(几何模板)

题目链接http://codeforces.com/problemset/problem/614/C题目大意给你一个多边形逆时针||顺时针的所有点, 以及固定的p 问你这个多边形绕旋转一周后所形成的面积是多少(p严格在多边形外)思路套一个几何模板就行了 唯一一个注意点就是最近点的选取,有可能是p到线段的距离代码#include<bits/stdc++.h>using namespace std

2017-07-30 16:38:28 312

原创 Codeforces Round #124 (Div. 2)D. Infinite Maze

题目链接http://codeforces.com/contest/197/problem/D题目大意给你一张图,图可以无限拼接(不能旋转) 问你一个人能不能从S位置走到无穷远的地方思路跑四张图,记录是否有一个点跑了两次就行了用绝对坐标,vis用来记录当前点是在哪张图,同样的记录是否有一个点跑了两次就行了代码1.#include<bits/stdc++.h>using namespace

2017-07-30 16:28:14 226

原创 Codeforces Round #339 (Div. 2)D. Skills(二分)

题目链接http://codeforces.com/contest/614/problem/D题目大意有n项技能, 每项技能的等级为ai, 技能最大等级为A, 现在有m个技能点(一个技能点可以将一个技能升一级, 达到A后就不能再升了), 求能达到的最大能力值 (pow = sum[A](满级技能个数) * cf + min[ai] (最小技能等级)*cm)思路分析题目时我们发现有一个支出和收益

2017-07-30 16:05:39 206

原创 Codeforces Round #124 (Div. 2)A. Plate Game(思维)

题目链接http://codeforces.com/contest/197/problem/A题目大意给你一张桌子的长宽a, b, 还有盘子的半径r, 两个人轮流放盘子(第一个人先放) 两人都以最优方式放盘子, 谁会先把盘子放出桌子范围谁输,问你谁赢思路这道题如果没想到可能就不好做, 模拟写很麻烦 但是如果想到桌子是对称的, 如果第二个人能放下盘子,那么第一个人一定能找到其对称的位置来放盘子 所

2017-07-23 15:48:26 487

原创 Codeforces Round #158 (Div. 2)D. Black and White Tree(搜索 + 思维)

题目链接http://codeforces.com/contest/260/problem/D题目大意给你一棵树(注意不要出现环)的所有节点, 节点分为黑、白两类,只有不同颜色的节点才能相连, 每个节点还有一个值, 该值表示该点所连边的权值之和, 最后让你输出每条边所连的两个节点以及其权值(题目为特判)思路该题几乎没有用到算法,但十分考验思维 首先sum(edge) = sum(node) 由于

2017-07-23 14:43:38 314

原创 Codeforces Round #158 (Div. 2)C. Balls and Boxes(模拟)

题目链接http://codeforces.com/contest/260/problem/C题目大意有n个盒子(1-n排好) 盒子里有若干球,任意选择一个盒子i(这个盒子里保证有球),将球取出,一个一个放入i+1, i+2 … 盒子中,直到取出的球都放完(如果放了第n个盒子, 接下来从1号盒子开始放 现在告诉你放完后各个盒子里球的数量 和 最后一个球放入的盒子的下标x, 问你放之前每个盒子里分别

2017-07-19 17:33:29 449

原创 贪心总结

贪心虽说难想难证明, 但是这几天做了很多贪心题之后也发现了一些规律在一些选取情况下求最优解,比如有人选钥匙(Codeforces Round #310 (Div. 2)-D. Case of Fugitive岛选桥Codeforces Round #310 (Div. 2)-D. Case of Fugitive人选假期 Hacker, pack your bags! Codeforces Ro

2017-07-16 11:37:59 251

原创 Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals)D. Office Keys(二分+贪心)

题目链接http://codeforces.com/contest/831/problem/D题目大意给你n个人k把钥匙和门的位置p,都在一条线上。 人要进门都需要一把钥匙,人移动一个单位需要1单位的时间 问所有人都进门最少需要多少时间?(保证k>=n)思路由于给定的人和钥匙的位置都是随机的,要求最短时间,杂乱无章的顺序不好处理,我们把人和钥匙都排个序 排好序后,我们应该想到,钥匙要先给谁又不

2017-07-16 11:27:37 327

空空如也

空空如也

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

TA关注的人

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