自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Yedl的专栏

Stay hungry, stay foolish

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

原创 UVALive - 6469(容斥)

题意:N道题连线,问至少前k道题目错误的可能有几种思路:那就是所有连线可能的情况数(即n!) 减去前k道题存在正确答案的情况数根据容斥原理,奇数个集合为正,偶数个集合为负计算即可代码如下:#includeusing namespace std;typedef long long ll;const ll INF = 1e14 + 7;const int N = 1e5 + 1

2017-03-04 14:05:33 401

原创 UVALive - 6469(博弈、记忆化搜索)

题意:q,p, r分别代表最底下一行,中间一行和最上面一行的格子数A、B两人拿格子,每次选中一个格子,则它的上面及右边的格子全部被拿走谁拿到(1,1)这个格子算输A先拿,问A是否能赢,若能赢则输出拿的第一个格子的位置思路:记忆化搜索,如果最后遇到  r == 0 &&p==0&&q==1则说明该情况一定输,那么它的上一种情况一定是赢的所以枚举p,q,r即可代码如下:#i

2017-03-04 13:48:09 358

原创 LightOJ1274(组合数)

题目好难懂~告诉你文章中有多少个单词,只有单词"Yes","No" , yes占三个字节,no是两个字节,共有 a个单词,s个字节那么yes就是 n=s-2*a ,no就是m=(s-3*a)/2个将yes看成1,no看成0形成了01的字符串,每次将可组合成的某个字符串右移一位后,将最左端置位1,然后和原串每一位比较,得到不一样的位的个数,求的是所有的组合方式的平

2016-10-27 22:28:56 646

原创 ZOJ 3929 Deque and Balls

题目链接题意:给你n个数,按照顺序依次放入一个双端队列(可放在头部,也可以放在尾部),求xi > xi+1的期望 * 2^n mod (1e9 +7)思路:实际上题目就是在求2 * 总递减对数那么当放入第i个数的时候,递减对数:①首先要加上前i-1个数的递减对数    因为第i个数可以放在两端,所以dp[i] += 2 * dp[i -1]②处理加入第i个数后增加的

2016-04-11 23:41:04 871

原创 poj 1804 Brainman(归并排序求逆序对)

题目链接题意:给定一个序列a[],每次只允许交换相邻的两个数,问至少要交换多少次才能将它变为非递减序列思路:这题其实是在求逆序对数每个点的左边大于它的,右边小于它的数的个数,就是当前点的逆序对数一般来说会用树状数组去求逆序对还可以用Merge_sort(),即归并排序实际上归并排序的交换次数就是这个数组的逆序对数:归并排序是将序列a[l,r]分成两部分a[l,

2016-03-15 23:16:18 701

原创 蓝桥杯2014年本科B组C/C++ 地宫取宝(记忆化搜索)

X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。    地宫的入口在左上角,出口在右下角。    小明被带到地宫的入口,国王要求他只能向右或向下行走。    走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。    当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送

2016-03-15 20:58:05 545

原创 Codeforces Round #341 (Div. 2) B. Wet Shark and Bishops

题目链接题意:如果两条鲨鱼在同一对角线上就会攻击对方(即使它们之间还隔着其他鲨鱼)问共有几对?思路:对角线就两种情况斜率为1:(x1 + y1) == (x2 + y2)斜率为-1: (x1 - y1) == (x2 - y2) (数组下标不能为负,所以+1000)代码如下:#include typedef long long ll; int n, x, y;

2016-02-01 16:23:58 474

原创 POJ3279 Fliptile

题意:给一个由0,1组成的m*n的矩阵,要将所有的1转为0,求最小步数每翻转一个,它的上下左右都会跟着翻转思路:二进制枚举第一行的所有情况,用一个二维数组记录翻转情况,翻转为1,不翻转为0从第二行开始,判断(i - 1, j)是否为1,为1的话就要翻转(i, j),因为此时只有(i, j)可以影响到(i - 1, j)最后判断一下最后一行是否全部为0在所有符合的情况下选

2016-01-27 13:47:20 734

原创 HDU 2612 Find a way

题目链接题意:求Y和M到达同一个@的最短时间和思路:分别算Y和M到达每一个@的最短时间,然后组合比较,选出总和最小即可代码如下:#include #include#include#includeusing namespace std;#define INF 1e7+9typedef long long ll; const int N = 210; int n, m

2016-01-25 22:32:02 430

原创 UVA 11624 Fire!

题意:J要逃出迷宫,F代表火焰,点着后会向上下左右四个方向蔓延,火蔓延到的地方F都不能走,问F是否可以逃出去思路:可以先广搜一遍标记火药到达每个地方的最短时间,再跑F,F只能在标记的时刻之前走过(白书方法)其实这题就是求J走出迷宫的最短路,只是多了一个火焰的限制条件,那么我们可以把F和J一起放进队列,每秒F经过的地方J就不能再走了即可,J走过的地方也不能再走(*一定要先放F再放J)

2016-01-25 22:28:04 589

原创 FZU 2150 Fire Game(dfs+bfs)

题目链接题意:同时从两个点点火,火焰每秒会扩散到上下左右四个方向,问是都能把草地全部点燃,若能,请输出最短时间,若不能输出-1思路:先深搜有几个连通块,若>2,怎不可能全部烧完,输出-1若代码如下:#include #include#includeusing namespace std;#define INF 1e7+9typedef long long l

2016-01-25 22:21:04 363

原创 POJ 3414 Pots(bfs)

题意:两个壶,容量分别为A和B,问最少经过几次操作,其中一个壶的容量为C,输出流程操作:1.装满A或B2.倒空A或B3.A倒向B(要判断B已有的体积),B倒向A(要判断A已有的体积)代码如下:#include #include#include#includeusing namespace std;#define INF 1e7+9typedef long

2016-01-25 22:15:39 360

原创 POJ 3087 Shuffle'm Up(模拟)

题意:s1, s2两堆拍,交叉洗牌组成s12(自下而上,最底下的一张是s2的第一张)给出s1, s2, s12,问s1和s2是否可以经过多次洗牌后达到s12的状态思路:简单模拟,在找到最终状态前,洗牌时若出现重复,则说明形成了环,无法达到想要的结果代码如下:#include #include#include#include#includeusing namesp

2016-01-25 22:10:15 386

原创 POJ 3984 迷宫问题(bfs)

题意:定义一个二维数组,它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走要求编程序找出从左上角到右下角的最短路线思路:bfs基础题,在结构体内定义一个数组保存路径即可代码如下:#include #include#includeusing namespace std; int map[10][10], vis[10][10];

2016-01-25 22:02:44 1222

原创 POJ 1426 Find The Multiple

题意:给你一个n,求能整除n的由0和1组成的数,输出符合要求的任意一个数字即可思路:不能有前导0,从1开始暴力枚举,假设搜到k,k不成立的话就搜k*10和k*10+1,这两个数一定是又0和1组成的代码如下:#include #include#includeusing namespace std;typedef long long ll; const int N = 1e5;

2016-01-25 21:58:51 396

原创 POJ3278 Catch That Cow(bfs)

题意:FJ有与牛在同一坐标轴上,告之FJ与牛的坐标FJ有三种移动方式, + 1,- 1,* 2,求抓住牛的最短步数(牛不会动)裸的bfs水题,将三种移动方式依次放入队列即可代码如下:#include #include#includeusing namespace std; const int N = 1e5; int n, k, vis[N + 10];struct

2016-01-25 21:54:08 374

原创 POJ1321 棋盘问题(dfs)

题目链接基础题,一行一行的摆下来,从第一行开始,枚举所有情况,摆放好棋子后,该棋子摆放的列就用vis标记,不能再放置棋子代码如下:#include #include int n, k, ans, sum, vis[10];char map[10][10];void dfs(int x){ if(sum == k) { ans++; return; } if(x

2016-01-25 21:45:28 342

原创 hdu2973 YAPTCHA(威尔逊定理)

题目链接题意:给出n,根据公式求和思路:此处要用到一个数论定理——威尔逊定理题解:这里要用到一个数论定理——威尔逊定理当且仅当p为素数时:( p -1 )! ≡ -1 ( mod p )即:当P为质数时,P可以整除(p - 1)! + 1所以此题只要判断3i + 7是否为质数即可代码如下:#include #include const int N = 3e6 +

2016-01-25 21:38:53 829

原创 POJ2251 Dungeon Master

题目链接题意:L层,R行,C列,S起点,E终点,‘#’障碍,可以走上下前后左右6个方向,走一步一秒,问至少需要几秒,可能无解简单BFS代码如下:#include#include#include#includeusing namespace std;int l, r, c;int s1, s2, s3, e1, e2, e3;int vis[35][35][35];

2015-12-09 22:21:36 478

原创 Educational Codeforces Round 2 D. Area of Two Circles' Intersection

题目链接题意:求两圆相交面积一开始用printf一直输出乱七八糟的东西,然后在结果前面加了(double)就对了但是弄不清楚这些的用cout就好了还有就是求相交面积的方法,最好是分别求两个圆的S扇 - S△,再相加如果三角形是用sin(angle1) * r1 *d这种方式来算的话就会出现精度问题,之前一直WA在test33,cry~~~~(>_代码如下:#includ

2015-12-01 20:51:53 538

原创 UVALive 3971 Assemble(二分 + 贪心)

题意:t 组测试数据,n个零件,b元钱;n个零件的信息:种类、名称、价格、质量;每种零件买一个,组装电脑,电脑性能由所有配件中质量最小的那个决定,求b元钱能组装的电脑的最大性能思路:二分性能范围,然后利用贪心,尽量拿钱数最小的去组合;如果能组合出来,说明最优解在右边,如果不能,说明最优解在左边,直到区间趋近为止代码如下:#include#include#incl

2015-11-30 19:57:17 410

原创 Codeforces Educational Codeforces Round 2 B. Queries about less or equal elements

题目链接题意:a[n] 和 b[m],对于每个b[i], 求a[n]中有几个元素 思路:看到用upper_bound就不会啦~代码如下:#include#include#includeusing namespace std;const int N = 2E5 + 10;int n, m;int a[N], b[N];int main(){ while

2015-11-29 21:02:24 437

原创 Codeforces Educational Codeforces Round 2 A. Extract Numbers

题目链接题意:给你一串字符串 s;‘,’ 和';'作为分隔符,其他被视作word,word可以为空;将这些words分离出来,整数(不包括前导0和浮点数)保存到 string a, 其余保存到 string b;输出 string a, string b,若没有内容,输出'-'思路:将所有‘,’和';'换成空格,用一个string  t从前往后读入遇到空格①t.

2015-11-29 20:52:40 461

原创 Codeforces Round #331 (Div. 2) C. Wilbur and Points

题目链接题意:输入n,然后给出n组 (x, y);给出n 个w[i];要求:将n组(x, y)排序,要求x[i] 并且w[i] = y[i] - x[i]若存在,输出YES以及排序结果否则,输出NO思路:首先判断是否存在一个最佳的序列b[]使得:b[i] = y[i] - x[i] = w[j]再判断序列b[]是否为关于二维点集的一个美观序列。代

2015-11-18 23:23:06 479

原创 zoj3905 Cake (简单dp)

题目链接题意:n个蛋糕(n一定为偶数),第i个蛋糕对A的价值为a[i],对B的价值为b[i],A任取两个蛋糕,B总是把这两个蛋糕中对于他来说价值较大的那个拿走,剩下的一个给A,问A可以拿到的最大价值总和是多少?思路:将蛋糕按b[i]从大到小排序,这保证了对于第i个蛋糕,任何大于i的蛋糕与它匹配时,B必然选第i个;dp[i][j]:A在前i个蛋糕中选了j个,因为A一定是挑B剩下的,这意味

2015-10-24 20:02:28 436

原创 ZOJ 3777 Problem Arrangement(壮压dp)

题目链接题意:给定一个n*n的矩阵,在矩阵中选n个数字(每行每列只能选一个数字),问选出的数字和>=m的方法数思路:设满足条件的方案书为ans, 总方案数为 n!,那么期望就是 n! / ans1、矩阵较小可以状压2、每次转移以 数字和为记录,因为mm,可以视为mdp[i][j][k] 表示前i件物品,在摆成二进制j状态下 和为k 的方法数因

2015-10-10 23:29:59 612

原创 ZOJ 3778 Talented Chef(计算器模拟)

题目链接该题是求三个数之间的加减乘除取余,其实就是模拟计算器,下面给出用stack容器写的普遍通用的代码:#include#include#include#include#include#include#include#include#include#include#define pii pairusing namespace std;typedef long lo

2015-10-10 13:40:07 365

原创 Codeforces Round #323 (Div. 2) C.GCD Table

题目链接题意:用n个数,组成一个n*n的gcd矩阵矩阵元素由这n个数和它们两两之间的最大公约数构成g(i,j) = gcd(a[i], a[j])现给你这个gcd矩阵的所有元素,求这n个数思路:gcd矩阵中最大的那个数一定是所求数之一,因为最大的那个数不可能是另外两个数的最大公约数(最大的那数有多个除外,但是这种情况不影响最终结果)因此,每次只需将剩下的最大的数

2015-10-05 14:31:30 499

原创 CODEFORCES ROUND #321 (DIV. 2) E.Kefa and Watch(线段树+hash)

题目链接题意:给定n, m, k长度为n的数字串m+k个操作1 l r c :把[l,r]的所有字符改成c2 l r d :询问[l, r]的周期是否为d所谓周期 x 就是 (1 ≤ x ≤ |s|), if si  =  si + x for all i from 1 to |s|  -  x)对于每个询问输出YES或NO思路:若字符串S(下标

2015-10-04 20:50:30 426

原创 HDU5478 Can you find it

题目链接题意:给定 C,k1, b1, k2 找出所有的(a, b)满足 ak1⋅n+b1+ bk2⋅n−k2+1 = 0 (mod C)(n = 1, 2, 3, ...)  (1思路:n = 1时,找出(1,C)范围内的满足的(a, b)组合,然后暴力枚举n,把符合的留下代码如下:(1≤a,bC)#include #include #include #includ

2015-09-26 21:29:02 662

原创 Codeforces 580D Kefa and Dishes

题目链接题意:n个点 m条有向边 选恰好k个点下面n个数给出点权下面m行给出边和边权设上一次选的点是u这一次选的点是v,则可以获得边权u->v的价值。问:使得选出的权和最大,问最大的权和思路:显然是状压dp,每个点只有两种情况,选或者不选,dp[i][j]表示选的点状态为i,最后一次选的点是j的最大价值。状态转移方程:dp[(1 代码如下:#includ

2015-09-24 20:59:40 512

原创 Codeforces 580C Kefa and Park(dfs)

题目链接题意:给定n个点的数 常数m下面n个数给出点权(点权为0或1)要求从根走到叶子节点的最短路径上 连续1的个数不超过m个 的叶子节点有多少个思路:dfs搜一遍代码如下:#include#include#include#include#include#includeusing namespace std;typedef long long ll;co

2015-09-24 20:54:22 813

原创 CodeForces 555A Case of Matryoshkas

题目链接题意,俄罗斯套娃,数字小的在里面,数字大的在外面,n个套娃,k组,求将1——n个套娃套在一起的最小步数,简单模拟代码如下:#include#include#include#include#include#includeusing namespace std;const int N = 1e5+10;int n, k, a;int main(){ whil

2015-09-20 10:33:25 422

原创 HDU1231 最大连续子序列

题目链接代码如下:#include#include#include#include#define mem(a, b) memset(a, b, sizeof(a))using namespace std;int dp[10005], num[10005];int main(){ int n, ans, tmp; while(~scanf("%d", &n

2015-09-12 21:05:38 433

原创 hdu 1005 Number Sequence(找规律)

题目链接比较简单的一道找规律题,一开始没优化,果然超内存了...对于公式 f[n] = A * f[n-1] + B * f[n-2] 只有7 * 7 = 49 种可能因为对于f[n-1] 或者 f[n-2] 的取值只有 0,1,2,3,4,5,6 这7个数,A,B又是固定的,所以就只有49种可能值了由该关系式得知每一项只与前两项发生关系,所以当连续的两项在前面出现过循环节出现了,

2015-09-04 21:47:34 441

原创 hdu1003 最大连续子序和

题目链接代码如下:#include#include#include#include#includeusing namespace std;typedef long long ll;const int N = 1e5+10;int n, s, e, k;int a[N];int main(){ int t , j; scanf("%d", &t); for(j =

2015-09-04 16:39:42 414

原创 Codeforces Round #317 A.Lengthening Sticks

题目链接题意:给出a,b,c,L,要求 a+x, b+y, c+z 构成三角形,x + y + z 思路:用容斥来做,结果ans=全部组合的情况 - 不符合三角形定理的情况。1.求全部组合的情况: 当L=0时,res=1; 当L=1时,res=3;所以当L=1时形成的情况为1+3=4 当L=2时,res=6;所以当L=2时形成的情况为4+6=10 当L=

2015-09-03 19:43:02 408

原创 ZOJ1234 Chopsticks

题目链接题意:给定n个筷子的长度,取k+8套筷子,每套有3个,长度分别为A,B,C。求组成k+8套筷子(A-B)^2的和的最小值,输出这个最小值。思路:题目中所给的筷子长度是非降序排列的,所以最小的两个A和B一定是相邻的。先不考虑筷子C,只要留着就行,即(n-j)> (k-i)*3 (加上等号就代表没有预留筷子C)dp[i][j]表示从 j 个筷子中取 i 套筷子的最优

2015-09-01 15:00:40 557

原创 HDU 5400 Arithmetic Sequence

题目链接题意:n个数,两个公差d1, d2求符合要求的子序列 [l, r](1≤l≤r≤n) 数量要求:存在点i(l 思路:枚举每个点,算出每个点向左向右符合条件的数有几个(自己本身算一个)记为 l[i] 和 r[i] l[i] * r[i] 就是以i点为分割点符合条件的子序列个数代码如下:#include#include#include#include#i

2015-08-19 15:32:38 559

原创 HDU2491 Priest John's Busiest Day

题目链接题意:有n个人要进行乒乓球比赛,每个人都一个能力值,每个人出现的次序就是他们住的位置现在要求进行一场比赛,三个人,裁判的能力值在两个选手之间,住的位置也在两个人的之间问这种比赛一共可以进行多少次思路:用树状数组做,否则TLE,先从左到右扫一遍,计算每点左边大的个数和小的个数,再从右到左扫一遍,计算每点右边大和小的个数,然后交叉相乘取和就可以了代码如下:

2015-08-17 23:07:34 692

空空如也

空空如也

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

TA关注的人

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