自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Tuesday

https://yukizzz.github.io/

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

原创 Codeforces 659E New Reform【DFS】

题目链接:http://codeforces.com/problemset/problem/659/E题意:给定n个点和m条双向边,将双向边改为单向边,问无法到达的顶点最少有多少个?分析:无法到达的话即入度为0。 DFS判断每一个连通块中是否存在环,如果存在环,就能保证环中每个点的入度都大于等于1。否则,有头有尾,头的入度为0。代码:#include<cstdio>#include<queue>

2016-03-31 20:02:34 1009 2

原创 Codeforces 659D Bicycle Race【计算几何】

题目链接:http://codeforces.com/contest/659/problem/D题意:若干条直线围城的湖,给定直线的端点,判断多少个转点会有危险?(危险是指直走的的话会掉进水里)分析:观察法:减去竖直水平的四条边,剩下的每两条边的交点就是答案。求叉积:看两个向量夹角,如果夹角小于90度,则直走的话会掉进水里。代码:#include<cstdio>#define sa(m) s

2016-03-31 19:49:52 918 2

原创 Codeforces 659B Qualifying Contest【模拟,读题】

写这道题题解的目的就是纪念一下半个小时才读懂题。。。英文一多读一读就溜号。。。 读题时还时要静下心来。。。题目链接:http://codeforces.com/contest/659/problem/B题意:给定地区及来自相应地区的人的分数,每个地区选两个分数最高的人 参加区域赛,如果选出的两个人唯一,则输出名字,否则如果还需要进行下一次比赛,输出“?”。分析:不唯一的情况就是第二个人和第三个人的

2016-03-31 19:03:40 440

原创 Codeforces 659A Round House【水题,细节】

题目链接:http://codeforces.com/contest/659/problem/A题意:一个圈,按逆时针编号,给定起点,方向和步数,问终点在几号?分析:很简单的模拟。。。注意编号为0的时候应该输出n。。。代码:#include<iostream>using namespace std;int main (void){ int n, a, b;cin>>n>>a>>b;

2016-03-31 18:57:14 296

原创 Codeforces 549C The Game Of Parity【博弈】

C语言纠错大赛的一道题,正好拿来补博弈~~ 给的代码写的略奇葩。。不过还是直接在上面改了。。题目链接:http://codeforces.com/problemset/problem/549/C题意:给你n个数,两个人依次拿走一个数,最后剩下的k个数的和若为奇数,则先手赢,否则后手赢。问谁赢?分析:看最后依次操作:此时有k+1k+1个数。。。 最后一次操作是先手,则剩下的全为偶数,先手必输

2016-03-30 23:13:39 511

原创 POJ 2348 Euclid's Game【博弈】

题目链接:http://poj.org/problem?id=2348题意:给定两个数,两个人每次从较大数中减去较小数的倍数,谁先得到0谁获胜,为谁赢?分析:令一种可能出现的整数对为(a,b)(a,b),其中(b>a)(b>a)。有两种情况b−a<ab-a<a,只能从bb中减去一个aa,得到状态(b−a,a)(b-a,a),那么如果(b−a,a)(b-a,a)是必胜态的话,(a,b)(a,b)就是

2016-03-30 14:13:16 1074

原创 POJ 2484 A Funny Game【博弈】

相比数据结构的题。。感觉这种想啊想的题可爱多了~~~代码量还少。。。。题目链接:http://poj.org/problem?id=2484题意:一圈n个硬币,两人轮流从中取一或两个硬币,(只能取相邻的两枚硬币),取完的获胜,问谁赢?分析:这里注意,连续的硬币中取出若干个后,被分割开的就不算连续的硬币了。 首先还是找是否存在对称状态,只要是存在对称状态,后手模仿先手,最后后手必赢。 假设先手第一

2016-03-30 12:33:25 317

原创 HDU 4193 Non-negative Partial Sums【单调队列】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4193题意:给定序列,可以把后面的连续的部分移到最前面来,问多少种移法使得最终得到的序列的前ii项和均大于等于0(1≤i≤n1 \le i \le n)?分析:先将数组前后拼接起来,记录每个位置的前缀和。然后去找长度为n的滑动窗口,在这个窗口内,要保证前ii项和大于等于0,也即区间[i,n+i][i,n

2016-03-30 11:47:15 437

原创 占坑补题

Codeforces 658 E. Bear and Contribution

2016-03-29 22:10:45 458

原创 Codeforces 658D Bear and Polynomials【数学】

题目链接:http://codeforces.com/contest/658/problem/D题意:给定多项式,改变一项的系数,使得P(2)==0,问有多少种方法?分析:暴力求和然后依次试一试肯定不行啦~ 仔细想想,多项式和为0,就是说存在某个2i2^i,使得剩下的和等于x∗2ix*2^i,(其中x 的绝对值小于等于k)。 那我们就从最小的开始看。把系数依次向后移。 如果系数aia_i为偶数

2016-03-29 17:12:20 652

原创 Codeforces 658C Bear and Forgotten Tree 3【构造】

题目链接:http://codeforces.com/contest/658/problem/C题意:给定结点数,树的直径(两点的最长距离),树的高度(1号结点距离其他结点的最长距离),写出树边的端点,一种情况即可。如不存在,输出-1。规定根为1号结点。分析:首先可以明确h<(d+1)/2h < (d + 1) / 2的时候不能构成树。 当 h!=dh != d 时,先将h−1h - 1个点和1连

2016-03-29 10:16:37 490

原创 Codeforces 658B Bear and Displayed Friends【set】

题目链接:题意:给定元素编号及亲密度,每次插入一个元素,并按亲密度从大到小排序。给定若干操作,回答每次询问的元素是否排在前k个。分析:利用优先级队列,每次将元素直接插入队列中,由于k最大为6,所以遍历队列的前k个,然后看是否有查询的元素即可。代码:#include<iostream>#include<cstdio>#include<vector>#include<algorithm>#inc

2016-03-29 03:10:46 622

原创 POJ 1704 Georgia and Bob【博弈】

题目链接:http://poj.org/problem?id=1704题意:给定棋子及其在格子上的坐标,两个人轮流选择一个棋子向左移动,每次至少移动一格,但是不可以碰到其他棋子。无路可走的时候视为输。问最后谁赢。分析:将棋牌上的棋子两两看成一组,将他们之间的空格看成棋子,这样就可以转化为Nim游戏 右边的棋子向左走相当于从堆中拿走石子,左边的棋子向左走相当于右边的棋子走(堆中石子个数+距离),同样

2016-03-25 12:26:17 746

原创 HDU 2586 How far away ?【LCA】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2586题意:无向图,给定边及边权重,任意两点之间都有一条唯一的道路,道路上每个点只能出现一次。给定询问,求询问的结点之间的距离。分析:路上每个点只能出现一次~可以转化成有根树,问题也即为求最近公共祖先问题~~ 这里每条边加上了距离,求出lca后,用u、v的距离根的距离和减去2倍的根到最近公共祖先的距离即

2016-03-25 00:07:58 384

原创 POJ 1470 Closest Common Ancestors【LCA Tarjan】

#题意:给定若干有向边,构成有根数,给定若干查询,求每个查询的结点的LCA。分析:还是很裸的tarjan的LCA。 这题我真的要吐槽!!调试了好久啊!!不是MLE就是RE。。。。查询数量没给,所以要用矩阵来存,这样还可以避免重复。给边的时候不知道会不会有重复的点,所以讲道理应该用vector保存。getchar。。。我不知道为什么会RE。。。其实ance数组可以不用的,只要每次处理子树的时

2016-03-24 23:09:10 356

原创 POJ 1330 Nearest Common Ancestors【LCA】

题目链接:http://poj.org/problem?id=1330题意:裸的LCA代码:倍增:#include<iostream>#include<cstring>using namespace std;const int maxn = 10005;const int maxm = 20;struct Edge{int to, next;};Edge edge[maxn * 2];

2016-03-24 22:49:04 389

原创 最近公共祖先(Least Common Ancestors)

题意:给定一棵有根树T,给出若干个查询lca(u, v)(通常查询数量较大),每次求树T中两个顶点u和v的最近公共祖先,即找一个节点,同时是u和v的祖先,并且深度尽可能大(尽可能远离树根)。通常有以下几种算法:在线算法,每次读入一个查询,处理这个查询,给出答案。离线算法,一次性读入所有查询,统一进行处理,给出所有答案。在线:倍增(基于二分搜索):基本思想就是让u和v同时走到同一高度,然后再一起

2016-03-24 22:33:28 493

原创 POJ 2109 Power of Cryptography【高精度+二分 Or double水过~~】

题目链接:http://poj.org/problem?id=2109参考:http://blog.csdn.net/code_pang/article/details/8263971题意:给定n,pn,p,求kk使得kn=pk^n=p(1≤n≤2001\le n\le 200, 1≤p<101011 \le p\lt 10^{101}, 1≤k≤1091\le k\le {10^9})分析:高精度

2016-03-24 14:32:57 415

原创 POJ 1328 Radar Installation【贪心 区间问题】

题目链接:http://poj.org/problem?id=1328题意:在x轴上有若干雷达,可以覆盖距离d以内的岛屿。 给定岛屿坐标,问至少需要多少个雷达才能将岛屿全部包含。分析:对于每个岛屿,计算出可以包含他的雷达所在的区间,找到能包含最多岛屿的区间即可。 可以看出这是一个典型的区间问题,我们有几种备选方法: (1)优先选取右端点最大的区间。 (2)优先选取长度最长的区间。 (3)优

2016-03-23 11:49:48 382

原创 POJ 2965 The Pilots Brothers' refrigerator【BFS+状压 Or 脑洞】

题目链接:http://poj.org/problem?id=1753题意:给定冰箱门的开关情况,改变一个门则其所在行列的门都会发生改变,求出改变门的最少操作使得最终所有门都是打开状态。代码:bfs+状态压缩很容易想到~~ 这里的状态压缩要需要多加小心,注意一下存储的是翻转门的情况~#include<iostream>#include<cstdio>#include<queue>using

2016-03-22 23:15:33 374

原创 POJ 1094 Sorting It All Out【拓扑排序】

题目链接:http://poj.org/problem?id=1094题意:给定前n个字母的大小关系,问你是否根据前xxx个关系得到上升序列所有关系都无法确定唯一的一个序列第xxx个关系导致出现环分析:此题坑略多。。。。m大小没给!!这个很无语啊。。。数组开大点马上AC了。。。无法确定序列必须最后判断。一旦可以判断出上升序列,就不用管后面是否出现闭环了~~ where xxx is

2016-03-22 20:21:54 268

原创 POJ 1753 Flip Game【枚举】

题目链接:http://poj.org/problem?id=1753题意:给定白块黑块排列,每次换一个块的颜色,其上下左右的块也会被换成相反的颜色。问最少翻多少块,使得最终方格变为全白或者全黑~分析:典型的枚举。 这种问题被称为开关问题,关键是要对周围的块翻动对自身的影响进行记录。后一排决定了前一排的最终状态,枚举第一排的情况即可。代码:#include<iostream>#include<c

2016-03-22 14:02:24 331

原创 POJ 2488 A Knight's Journey【DFS】

补个很久之前的题解。。。。题目链接:http://poj.org/problem?id=2488题意:马走“日”字,让你为他设计一条道路,走遍所有格,并输出字典序最小的一条。分析:dfs~~~代码:#include<iostream>#include<cstring>#include<algorithm>using namespace std;typedef pair<int, int>pi

2016-03-21 20:33:18 274

原创 Codeforces 653D Delivery Bears【二分+网络流】

题目链接:http://codeforces.com/problemset/problem/653/D题意:x个熊拿着相同重量的物品,从1号结点沿着路走到N号结点,结点之间有边相连,保证可以从1号走到N号。 The total weight that travels across a particular edge must not exceed the weight capacity of t

2016-03-21 18:04:47 549

原创 Codeforces 653C Bear and Up-Down【暴力】

题目链接:http://codeforces.com/problemset/problem/653/C题意:给定序列,偶数位的数字比两边都大,则成为nice,只可以交换两个数字,问有多少种交换方式使得最后的序列为nice。分析:比赛的时候找规律,找呀找了好久都没看出来。。。。由于只可以交换一次,交换两个数字,所以最多改变的6个数字的关系。那么可以交换成nice的话,原来不满足的肯定很少,直接把这些数

2016-03-21 16:47:24 569

原创 Codeforces 653B Bear and Compressing【DFS】

题目链接:http://codeforces.com/problemset/problem/653/B题意:要求你构造一个长度为n的字符串使得通过使用m个操作,最终获得字符a。已知第ii个操作将字符串中开头的字符串aia_i换成字符bib_i,长度减少1。问一共有多少种字符串构造方法。分析:直接dfs一下就好啦~~~代码:#include<iostream>#include<algorithm>

2016-03-19 23:11:48 626

原创 Codeforces 653A Bear and Three Balls【水题】

题目链接:http://codeforces.com/problemset/problem/653/A题意:找有多少个连续的三个数分析:排序~去重~直接判断~~代码:#include<iostream>#include<algorithm>#include<vector>using namespace std;const int maxn = 105;int t[maxn], tt[max

2016-03-19 23:01:33 366

原创 Codeforces 645D Robot Rapping Results Report【拓扑排序+二分】

Codeforces 645D Robot Rapping Results Report

2016-03-19 22:55:22 615

原创 Codeforces 645C Enduring Exodus【二分】

题目链接:http://codeforces.com/contest/645/problem/C题意:给定01串,将k头牛和农夫放进, 0表示可以放进,1表示不可放进,求农夫距离其牛的最大距离的最小值。分析:第一遍读题没看清,直接写成dp。。。然后样例都不过,我开始怀疑人生怀疑自己。。。。。 后来发现是要求中间的到两边的最大距离的最小值,而对于某个距离是否满足条件很好判断啊~~所以直接二分最大距离

2016-03-19 14:52:56 422

原创 Codeforces 645B Mischievous Mess Makers【逆序数】

题目链接:http://codeforces.com/problemset/problem/645/B题意:给定步数和排列,每步可以交换两个数,问最后逆序数最多是多少对?分析:看例子就能看出来肯定是不断往中间逼近,然后交换头尾两个,给定交换的对数,直接算就好了,复杂度O(1)O(1)代码:#include<iostream>using namespace std;typedef long lon

2016-03-19 14:28:49 461

原创 Codeforces 645A Amity Assessment【八数码】

题目链接:http://codeforces.com/problemset/problem/645/A题意:2*2的八数码问题分析:这题n为2,不需要搜索,直接判断字母排列顺序就好了。 注意,如果n为奇数,直接看逆序数是否相同。代码:#include<iostream>#include<cstring>using namespace std;int f(string s1, string s

2016-03-19 14:18:19 403

原创 八数码总结

题意:八数码问题也称为九宫问题。编号为1~8的8个正方形滑块被摆成3行3列,棋盘上还有一个空格,每次可以把与空格相邻的滑块移到空格中,而它原来的位置就成了新的空格。给定初始局面和目标局面,计算出最少的移动步数。 参考来源:八数码的八境界方法1:暴搜+queue,如果空格用’0’表示的话可以直接将状态压缩成一个9位整数,也可以用字符串表示状态,用结构体表示状态+步数+空格的位置。代码:/*2641

2016-03-18 11:29:47 1701 1

原创 八皇后问题 回溯

作为回溯法的典型,水一下。题意:棋盘上放置8个皇后,每个皇后的攻击范围为同行同列和同对角线。要求找出所有解,使得她们互不攻击。分析:回溯法。 逐行放置,对列和对角线进行检查,使用vis数组保存状态。回溯注意在各个出口都要将条件“恢复原状”。代码:#include<iostream>using namespace std;const int maxn = 25;int cnt = 0, m ,

2016-03-15 08:08:17 518

原创 HDU 5644 King's Pliot【费用流】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5644题意:每天都有p[i]p[i]个飞行员进行阅兵,飞行员只工作一天。 mm个休假公式,花费tt[i]tt[i]元让飞行员在休假ss[i]ss[i]天后回来上班。 可以花费QQ元雇佣新的飞行员,但是直到P天后才能上班。分析:首先某一天雇佣的飞行员有三种可能: 1.原来就有的:从ss到第一天的结

2016-03-13 23:16:20 684

原创 HDU 5643 King's Game 【约瑟夫环】

题意:变形的约瑟夫环,最初为每个人编号1到n1到n,第i次删去报号为i次删去报号为i$的人,然后从它的下一个人开始重新从1开始报号,问最终剩下第几号人?分析:首先看一下裸的约瑟夫环问题: 共n个人,从1开始报数,报到k的人从环中退出,问最后剩下的一个人的编号是?为取模方便,假设下标从0开始,倒推分析: 假设该轮有nn个人,那么上一轮(n+1)(n+1)人,编号为00的人上一轮编号为k,也即编

2016-03-13 12:53:00 3071

原创 HDU 5642 King's Order【数位dp】

题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=677&pid=1003题意:求长度为n的序列中,每个字符(a~z)连续出现不超过3次的种数。分析:数位dp,设dp[i][j]dp[i][j]表示进行到第ii个字符,其中当前字符出现jj次,然后每次状态转移一下就好了~代码:#include <cstdio>

2016-03-13 09:07:30 489

原创 HDU 5641 King's Phone【模拟】

题意:给定一串密码, 判断是否合法。长度不小于4不能重复经过任何点不能跳过中间点,除非中间点已经经过一次。分析:3*3直接记录出可能出现在两点之间的点,直接模拟就好。 注意审题,别漏了判断。代码:#include <cstdio>#include<algorithm>#include<cstring>#include<map>const int maxm = 15, mod = 1

2016-03-13 08:30:30 321

原创 HDU 5640 King's Cake【模拟】

题意:给定长方形,每次从中切去一个最大的正方形,问最终可以得到多少正方形。分析:过程类似求gcd,每次减去最小的边即可。代码:#include <cstdio>#include<algorithm>#include<iostream>using namespace std;int main (void){ int T;cin>>T; int n, m; while(

2016-03-13 08:25:29 578

原创 Codeforces 631D Messenger【KMP】

题意:给定两个由字符串块(字符及连续出现的个数)组成的字符串,分析:KMP 这题唯一需要思考的地方就是如何处理字符串块。第一想到是把他们都展开然后进行KMP,可是展开后实在太长,所以必须按块进行处理,就必须把所有相邻的相同的块进行合并成一个大块。注意模式串开头结尾不需要严格相等,只要字符相同并且个数不小于模式串中的个数~~所以只需将模式串去掉开头和结尾进行匹配,最后再判断一下就好啦~ 既然要去掉

2016-03-12 10:43:36 667

原创 Codeforces 631C Report【其他】

题意:给定序列,将前a个数进行逆序或正序排列,多次操作后,求最终得到的序列。分析:仔细分析可以想到j<ij<i,且rjr_j小于rir_i的操作是没有意义的,对于每个ii把类似jj的操作删去(这里可以用multiset或者直接模拟栈的操作),最后我们会获得一个严格下降的序列即ri>rjr_i > r_j && i<ji < j,并且相邻的tt不相等。 那么对于ri,ri+1r_i,r_{i+1},

2016-03-12 10:29:26 359

空空如也

空空如也

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

TA关注的人

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