水题
zyy_2017
这个作者很懒,什么都没留下…
展开
-
hdu 4004 贪心 二分查找
HDU 4004题目大意:有一条河,宽为L,河里有N个石墩,第i个石墩距离河东岸为ai。现在有一只青蛙,要从河东岸跳到河西岸。青蛙可以一步跳到终点,也可以跳到石墩上,但是只能跳M次。然后问,青蛙至少要跳多大的距离才能保证在跳不超过M次后跳到终点。大致思路:这实际是一个线性问题,一般的线性问题都可以用二分来解决。对于这道题,我们可以知道青蛙最坏情况下是直接一步跳到终点(其原创 2017-08-16 23:12:03 · 541 阅读 · 0 评论 -
差分数组
给你一个序列,现在进行多次操作(很多),操作分两种,一种是在(x,y)区间内加减某个数,另一个操作是查询(x,y)内的所有数的和。看到这种题,我们第一想到的就是树状数组和线段树,如果暴力做,那肯定会tle。现在把这种题型改一下,改成先进行区间修改操作,最后再查询。那么现在就可以使用差分数组代替树状数组和线段树来更简单的求解。注意:差分数组只能解决先区间修改再查询的题。设a数组为原创 2017-12-01 17:09:18 · 381 阅读 · 1 评论 -
bfs 三维标记
做训练赛遇到的一道题,感觉很好。大致题意:现在给你一个地图n*m,' . '代表是空格子,' * '代表是有柱子阻隔。现在你站在a点,要走到b点。走的时候要遵循一个规则:必须走相邻的格子,如果相邻的格子为有柱子格子,那么这个格子与有柱子的格子相邻的边起火,如果一个有柱子的格子的两条或者多条不同的边起火了,那么这个格子就会变成空格子。现在问你,你是否能从a点走到b点。n大致思路:原创 2017-11-29 19:59:24 · 238 阅读 · 0 评论 -
hdu 1532 最大流水题
#include#include#include#include#include#define inf 0x3f3f3f3fusing namespace std;int dis[205];int flow[205][205];int n,m;int bfs(){ memset(dis,-1,sizeof(dis)); dis[1]=1; queueQ原创 2017-09-21 17:12:28 · 252 阅读 · 0 评论 -
hdu 3549 最大流 水题
这应该是最简单的最大流问题了,直接套模板。。。。#include#include#include#include#include#include#include#include#define inf 0x3f3f3f3fusing namespace std;int dis[20];int flow[500][500];int n,m;int bfs(){原创 2017-09-18 19:35:05 · 385 阅读 · 0 评论 -
2017 ACM-ICPC 亚洲区(西安赛区)网络赛 Coin 二项式定理
题意:你有一枚硬币,然后抛出,落在地上,正面朝上的概率是p/q。现在你扔k次,问你正面朝上的次数是偶数次的概率。。。。这道题做到崩溃,和队友一直再推偶数项概率和,可是就不会。赛后看下题解,一下子就懂了,顿时想扇自己两个耳光。。。赤裸裸的二项式性质。。。我们设朝上的概率是b,朝下的概率是a。那么(a+b)^k恒等于1;(a+b)^k的展开式是Ck0 a^k b^0 + Ck1原创 2017-09-16 22:18:00 · 199 阅读 · 0 评论 -
hdu 2256 4565 矩阵快速幂
矩阵快速幂专题+题解: 点击打开链接hdu 4565 代码:#include#includeusing namespace std;#define ll long longll mod;struct Ju{ ll x[4][4];};Ju operator *(const Ju& a,const Ju& b){ Ju c; for(int i=0;i<原创 2017-09-07 18:21:31 · 215 阅读 · 0 评论 -
hdu1575 TrA 矩阵快速幂
HDU 1575 点击打开链接很裸的一道矩阵快速幂题,直接裸模板。#include#includeusing namespace std;const int mod=9973;int n,k;struct Ju{ int x[15][15];};Ju operator *(const Ju& a,const Ju& b){ Ju c; for(in原创 2017-09-05 21:13:32 · 498 阅读 · 0 评论 -
hdu1757 A Simple Math Problem 矩阵快速幂 水题
HDU 1757点击打开链接大致题意:给出一个函数f(x),当x当x大于等于10时,f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10);现在给出k和m,让你求出f(k)%m。大致思路:矩阵快速幂。构造矩阵 st==:a0 a1 a2 a3 a4 a5 a6 a7 a8 a91原创 2017-09-05 20:45:49 · 215 阅读 · 0 评论 -
poj2965 The Pilots Brothers' refrigerator 枚举 暴力 递归
这道题和poj1753基本上是一毛一样的,只不过是当你变一个把手时,要将这个把手的所在行和所在列的把手都变了。然后输出多加了操作,那也好办,我们将成功的组合数保存下来,最后输出的时候转换一下行和列就ok了。。。代码:#include#includeusing namespace std;int st[17];int lab[17]= {0,1,2,3,4,5,6,7,8,9,1原创 2017-08-23 13:16:14 · 158 阅读 · 0 评论 -
hdu 5933 贪心 思路 水题
HDU 5993大致题意:给你N堆娃娃,第i堆娃娃数是ai,你有两个操作,一是将相邻的娃娃堆合并成一个,二是将一个娃娃堆分成两堆,这两堆娃娃个数可以不等。现在要求你用这两个操作将N堆人变成k堆人,并且每堆人数要相等,问需要的最少操作数,如不能达成,则输出-1。大致思路:首先我们能知道,变化后每堆娃娃数肯定是原娃娃总数对k的平均数。如果不能整除,那么要输出-1;如果能整除,我们就原创 2017-08-16 13:53:21 · 402 阅读 · 0 评论 -
UVALive - 7635 暴力 水题 思考
大致题意:在一个二维平面上,有n个点。有Q个询问。每次询问,会给出一个半径r。然后每个点以自己为圆心,以r为半径画圆。将这些圆内包含的点的个数加和。然后求出总和/n。大致思路:假如当我们算a点时,我们要看a与其他点(设为b点)的距离是否不大于r,如果不大于,那么我们可以b点算在内。那我们可以预先处理,开一个数组num,然后将每两个点的距离算出来,假如a和b的距离为2,那原创 2017-09-03 21:42:30 · 195 阅读 · 0 评论 -
树状数组区间修改区间查询
#include#include#include#includeusing namespace std;long long num[200050];long long c[200050];long long c2[200050];long long n,q;long long lowbit(long long i){ return i&(-i);}void add(原创 2017-12-01 20:22:20 · 177 阅读 · 0 评论