自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ramay7

https://ramay7.github.io/

  • 博客(82)
  • 资源 (2)
  • 收藏
  • 关注

原创 Tips

To Learn More

2016-03-11 08:43:53 558 1

原创 POJ 2029 Get Many Persimmon Trees(二维树状数组)

题目链接: POJ 2029 Get Many Persimmon Trees 题意: 给一个width*height的方格,然后有n个点x[i]和y[i]表示在对应的方格位置上有一个点,问在方格中画一个row*col的矩形最多能圈住多少点?数据范围:width、height<=100,n<=500. 分析: 用二维树状数组存点的数量,然后遍历每一个点就好了。二维dp也能做。//388k

2016-03-31 22:06:44 345

原创 POJ 3067 Japan(树状数组)

题目链接: POJ 3067 Japan 题意: 左列有n个点,右列有m给点。点的编号都是从1开始,然后有k条线段a–b,表示连接左列的a和右列的b, 问这些线段的交点一共有多少?保证交点处有且仅有两条线段相交。 分析: 按照对m端点编号降序排列,m端点编号相同对n端点编号降序排列。 从0到k遍历这些线段,树状数组中保存n端点信息,对于线段i只需要查询树状数组中n端点<=a[i]的线段

2016-03-30 17:22:25 433

原创 HDU 3466 Proud Merchants(01背包/按limit-price从小到大排序)

题目链接: HDU 3466 Proud Merchants 题意: 有nn个商品和预算mm元。每个商品有个价格priceprice,购买限制limitlimit和价值valval,必须在手中剩余的金额大于limitlimit时才能购买这件商品.(limit>price)(limit>price)问在预算条件下最多能购买的商品价值是多少? 分析: 典型的01背包。一开始是按照limitli

2016-03-30 16:24:42 508

原创 UVA 562 Dividing coins(01背包)

题目链接: UVA 562 Dividing coins 题意: 给出n个数,将这n个数分成两堆,使这两堆和尽可能接近,输出两堆和之差的绝对值。 分析: 记n个数的和为sum,则其中一对和一定是<=sum/2,而另一堆和>=sum/2。 那么就可以转化成这个问题:由这n个数组成不大于sum/2的最大数是多少?//0K 13MS#include <cstdio>#include <cs

2016-03-30 14:58:34 521

原创 UVA 624 CD(01背包/记录路径)

题目链接: UVA 624 CD 题意: 给出n个物品和总价值P,每个物品有一个价值,输出由这些物品组成价值和最接近P的价值(不能超过P)和和这些物品编号。 如果有多种方案任意输出一种。 分析: ①:先用类似01背包的思路对小于等于P的价值和进行可行性分析,然后找到最大能组成的合法价值和。根据这个价值和对原来的物品 dfs搜索。 ②:在找最大价值的过程中记录组成价值和的最后一件商品编

2016-03-30 14:51:58 498

原创 HDU 2955 Robberies(01背包/对象转移)

题目链接: HDU 2955 Robberies 题意: 有个robber要去抢银行。抢每个银行会获得金额val[i],同时也会有cost[i]的概率被抓住,问在最大允许被抓住概率为p的情况下可以抢到的最大金额。 分析: 01背包的套路。只不过背包容量换成了被抓住的概率,因为概率是double型的,那就没办法枚举了。 可以倒过来想枚举抢到金额的成功的概率。成功的概率是概率相乘。//46M

2016-03-30 14:37:02 402

原创 POJ 2481 Cows(树状数组)

题目链接: POJ 2481 Cows 题意: 有n个区间,定义区间[a,b]大于区间[c,d]的条件为:a<=c且b>=d且b-a>d-c。 对每个区间输出大于这个n个区间中大于这个区间的区间个数。 分析: 按照区间右端点从大到小排序,相同右端点的按照左端点从小到大排序。 树状数组中保存左端点的信息,对于每个区间只要在树状数组中查找左端点<=自身左端点的区间个数就行了。 一个左端点

2016-03-30 13:35:12 412

原创 HDU 2546 饭卡(01背包)

题目链接: HDU 2546 饭卡 题意: 中文题意。 分析: 问题的核心就是在钱总数小于5之前尽可能的使金钱总数最小,然后用生下的>=5的钱去购买最贵的物品。 先将所有商品按价格排序,然后将最贵的保留,因为一定会购买它!而且最优的情况是用5元钱购买它! 所以问题就变成如何用v-5元钱去购买剩下的n-1件商品来获得最大总价值,这就是典型的01背包了。 注意: 当初始v<5时,什么都

2016-03-28 15:37:30 427

原创 POJ 3624 Charm Bracelet(01背包)

题目链接: POJ 3624 Charm Bracelet 分析: 跟上一题一样。//508K 297MS#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int MAX_N=35000;//数组需要开大点,3500RE...int n,v;int val[MAX_N],

2016-03-28 14:35:54 319

原创 HDU 2602 Bone Collector(01背包)

题目链接: HDU 2602 Bone Collector 注意: 单个背包的重量和总容量允许为0。#include <cstdio>#include <cstring>#include <algorithm>#include <climits>using namespace std;const int MAX_N=1010;int T,n,v;int val[MAX_N],cos

2016-03-28 14:18:14 280

原创 Codeforces 474 D Flowers(DP)

题目链接: Codeforces 474 D Flowers 题意: 有两种花可以吃,white花只能连续吃k个,red花不受限制,当吃a到b朵花时一共有多少种吃法?也就是: a朵花时的吃法+(a+1)朵花时的吃法+…+b朵花时的吃法。分析: 用dp[i][0]和dp[i][1]分别表示吃第i朵花时是white和red的情况。用dp[i][0]和dp[i][1]分别表示吃第i朵花时是w

2016-03-27 11:19:25 398

原创 POJ 2886 Who Gets the Most Candies?(线段树、模拟)

题目链接: POJ 2886 Who Gets the Most Candies? 题意 : 【懒得自己写了,直接抄网友的了o(╯□╰)o】 N个熊孩子围成一个圈,从第K个开始淘汰,每淘汰一个,出示手中的数字,决定下一个淘汰者,正数表示左手第n个,负数反之。每个人可以拿到的存活回数的因数个数的糖果,求拿到最多糖果数的孩子的名字以及糖果数。 分析: 先通过打表的方法得到每个区间里的拥有最大

2016-03-26 22:50:55 261

原创 Codeforces 545 C Woodcutters(贪心/DP)

题目链接: Codeforces 545 C Woodcutters 题意: 有n棵树,每棵树都有位置坐标xixi和高度hihi,每棵树可以向左砍倒或者向右砍倒,也可以不砍,但是砍倒不能重复占用位置,每棵树本身占一个位置,问最多能砍多少棵树?/**************DP Solution**************/#include <cstdio>#include <cstring

2016-03-26 22:33:10 750

原创 POJ 1195 Mobile phones(二维树状数组)

题目链接: POJ 1195 Mobile phones 题意: 一个S∗SS*S的矩阵,主要有种操作: ①:x,y,a将s[x][y]增加a,a可能为负值①:x,y,a 将s[x][y]增加a,a可能为负值 ②:L,B,R,T,查询L<=x<=R,B<=y<=T的所有元素和。②:L,B,R,T,查询L<=x<=R,B<=y<=T的所有元素和。 要求对每次查询输出结果。 分析: 题目

2016-03-26 14:40:45 329

原创 HDU 1542 Atlantis(矩形并的面积)

题目链接: HDU 1542 Atlantis//1628K 0MS#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <climits>#include <algorithm>#define lson(x) (x<<1)#define rson(x) ((x<<1)|1)u

2016-03-26 12:13:53 348

原创 HDU 1255 覆盖的面积(矩形交的面积)

题目链接: HDU 1255 覆盖的面积//1832K 280MS#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <climits>#define lson(x) (x<<1)#define rson(x) ((x<<1)|1)us

2016-03-26 12:12:02 386

原创 POJ 1177 Picture(矩形并的周长)

题目链接: POJ 1177 Picture//926K 16MS#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <climits>#define lson(x) (x<<1)#define rson(x) ((x<<1)|1)us

2016-03-26 12:10:07 462

原创 HDU 1540 Tunnel Warfare(单点更新,区间合并)

题目链接: HDU 1540 Tunnel Warfare 吐槽:if(goal<=segtree[rson(cur)].left+segtree[rson(cur)].left_max-1)这一行代码起初少写了一个"−1""-1",WA到吐血!!!!!!//4012K 327MS#include <cstdio>#include <cstring>#include <cmath>#in

2016-03-25 22:53:43 351

原创 POJ 2352 Stars(树状数组)

题目链接: POJ 2352 Stars 题意: 每个星星的level是纵坐标小于等于它并且横坐标小于它的星星的数量。按照y从小到大,其次x从小到大的顺序给出n个星星的坐标,输出level从0到n-1的星星的数量。 分析: 由于给出的坐标是优先按照y排序的,那么直接对每个星星查找x的树状数组值然后更新就好了。//556K 375MS#include <cstdio>#include <

2016-03-25 22:49:32 344

原创 POJ 2299 Ultra-QuickSort(逆序对数,线段树/树状数组/归并排序)

题目链接: POJ 2299 Ultra-QuickSort/*************Segment Tree Solution**************///19700K 1282MS#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#define lson(x) (x<<1)#def

2016-03-25 19:13:24 340

原创 CF 629D Babaei and Birthday Cake(线段树单点更新)

题目链接: CF 629D Babaei and Birthday Cake 题意: 给出n个圆柱形蛋糕的半径和高,设两个蛋糕的序号分别为i,j,体积分别为val[i]和val[j],当i>j并且val[i]>val[j]时,第i块蛋糕可以放在第j块蛋糕上面;给出n个圆柱形蛋糕的半径和高,设两个蛋糕的序号分别为i,j,体积分别为val[i]和val[j],当i>j并且val[i]>val[j]

2016-03-24 18:53:53 431

原创 三月校赛1006 wuli通通和Fibonacci (a[n]=f[n]*(n^m)的前k项和)

题目链接: 校赛 1006 wuli通通和Fibonacci 题意: 计算a[n]=f[n]∗(nm)的前k项和mod23333。f[n]是Fibonacci数列,f[1]=f[2]=1,k<=1e9,m<=40计算a[n]=f[n]*(n^m)的前k项和mod 23333。f[n]是Fibonacci数列,f[1]=f[2]=1,k<=1e9,m<=40 分析: 这样明显的复杂递推公式

2016-03-24 18:08:13 632

原创 UVALive 6555 Playing Fair with Cryptography(细节处理)

题目链接: UVALive 6555 Playing Fair with Cryptography 题意: 先给出一行字符,可能有空格,标点符号,数字,大小写英文字母等,按照英文字母出现的顺序建立一个5行5列的大写英文字母表格, (I和J占同一格子,且输入保证不会有J或j)然后第二行也是同样的输出,对于每相邻两个英文字母按照题目中的要求在表中找到相应的英文字母输出。 分析: 一定要仔细读

2016-03-24 17:11:58 509

原创 HDU 1005 Number Sequence(基础矩阵快速幂)

题目链接: HDU 1005 Number Sequence//HDU 1005 15MS 1424K#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;const long long mod=7;long long A,B,n;struct Matrix{

2016-03-24 16:52:02 365

原创 POJ 1308 Is It A Tree?(判断是否是一棵树)

题目链接: POJ 1308 Is It A Tree? 题意: 给出若干点对a, b,表示a指向b,以0 0结尾。判断这些点对能否组成一颗树。 分析: ①:空树是一棵树 ②:点对中不能出现自己指向自己,这时不是一棵树 ③:不能对于每一个点最多只有一个点指向它,而一个点可以指向多个点,这里可以用并查集判断。 主要是考虑a->b是否有b->a的情况。 ④:是否是森林,也就是有多个根节

2016-03-24 11:51:17 535

原创 ZOJ 3261 Connections in Galaxy War(逆向处理)

题目链接: ZOJ 3261 Connections in Galaxy War 题意: 有n个点,每个点有权值,然后给出m条无向边。有两种操作: query a.表示从a出发的能到达的所有点权值最大的点的编号(相同取编号最小,而且权值要比自己大) 如果存在这样的点输出最大权值,否则输出-1. destory a,b 表示删除连接a,b的边 按照操作输入顺序,输出每次查询的结果。两个测

2016-03-24 11:49:00 392

原创 FZU 1911 Construct a Matrix(矩阵快速幂+找规律)

题目链接: FZU 1911 Construct a Matrix 题意: 将Fibonacci数列前n项求和后%m得到res,问存不存在这样的一个res*res阶矩阵, 矩阵中每个元素只能是-1,0或者1,并且矩阵的每行每列和都不一样。如果存在输出任意一种矩阵的构造方式。 分析: 求出res的过程用矩阵快速幂很好解决。主要是构造矩阵这个东西比较麻烦。我是先用dfs跑了一下,void d

2016-03-22 22:28:42 520

原创 UVA 1386 Cellular Automaton(循环矩阵)

题目链接: UVA 1386 Cellular Automaton 题意: 给一个n个数组成的数环,每次取每个数左右范围d的所有数(包括本身和距离是d的数)相加和mod m生成新的数, 问操作k次后的数环是怎样的? 分析: 主要是n太大了,n<=500,拿样例 5 3 1 1 1 2 2 1 2 来说。可以构造矩阵,其中d=1.| 1 1 0 0 1 || 1 1 1

2016-03-21 20:46:38 468

原创 UVA 11551 Experienced Endeavour(矩阵快速幂)

题目链接: UVA 11551 Experienced Endeavour 题意: 给出n个数的数列,每次会由上一次数列的某些数相加生成新的新的数列(每一个数都是如此),然后给出每个数据由上一个数据的那些树得到,问重复r次得到的新数列是什么? 分析: 相当于给出了中间变化矩阵的具体方式,读入每个数的生成方式,r相当于幂,矩阵快速幂很裸的。//0K 26MS#include <cstdio

2016-03-21 16:26:35 486

原创 HDU 4565 So Easy!(矩阵快速幂+数学)

题目链接: HDU 4565 So Easy! 题意: ┌x┐┌x┐是向上取整的意思,如┌3.14┐=4┌3.14┐=4。给出a,b和n,ma,b和n,m计算SnSn. 分析:首先需要想到(a+sqrt(b))^n的结果能写成A+B*sqrt(b)的形式。n=1时是a+1*sqrt(b) ; A=a, B

2016-03-21 15:56:29 734 2

原创 CF 489 C Given Length and Sum of Digits...(水题)

题目链接: CF 489 C Given Length and Sum of Digits… 题意: 给出m和s找到位数为m各位上数字和为s的最大数和最小数,不要前导0,如果找不到输出-1. 1<=m<=100,0<=s<=3001<=m<=100,0<=s<=300. 分析: 贪心思想。最大值一定是9尽量靠前,最小数一定是9尽量靠后,但是要保证首位至少为1.最大值不存在那就是每位上数字

2016-03-20 21:58:04 616

原创 HDU 2795 Billboard(线段树,单点查询)

题目链接: HDU 2795 Billboard 题意: 有个高为h宽为w的墙用于贴宣传海报,每张海报高为1,宽为wi,每张海报在能张贴的情况下优先选择最上面的最左面; 共有n张海报,问贴每张海报所在的行,如果贴不下,就输出-1. 分析; 建立区间为[1,h]的线段树,叶子结点即表示相应层。线段树中存储当前所有层中的最大剩余长度, 查询和更新操作其实放在一起了。 玩玩没想到的是,题目

2016-03-20 20:14:50 297

原创 HDU 4965 Fast Matrix Calculation(矩阵结合律)

题目链接: HDU 4965 Fast Matrix Calculation 题意: 分别给出一个n∗kn*k和k∗nk*n 的矩阵A和B,两矩阵相乘得到矩阵C,求出矩阵C的n∗nn*n次幂矩阵M, 输出将矩阵M中每个元素%6后的元素和。其中n<1000,2<=k<=6. 分析: 因为n实在太大了,开不了1000*1000的矩阵,但是可以利用矩阵相乘的结合律, A∗B∗A∗B∗A∗

2016-03-20 15:06:36 435

原创 UVA 10870 Recurrences(构造矩阵和快速幂)

题目链接: UVA 10870 Recurrences 题意: 给出递推式: f(n)=a1∗f(n−1)+a2∗f(n−2)+a3∗f(n−3)+...+ad∗f(n−d),n>df(n)=a1*f(n-1)+a2*f(n-2)+a3*f(n-3)+...+ad*f(n-d),n>d 其中a1,a2,a3...ada1,a2,a3...ad以及f(1),f(2),f(3)...f(3)f

2016-03-20 12:43:45 298

原创 UVA 10655 Contemplation! Algebra(构造矩阵和快速幂)

题目链接: UVA 10655 Contemplation! Algebra 题意: 给出a+b和ab值以及n求出a^n+b^n。数据long long 。 分析: 构造矩阵和快速幂。| 0 -1 | * | a^(n-2)+b^(n-2) | = | a^(n-1) + b^(n-1) | |-ab a+b | | a^(n-1)+b^(n-1) | |

2016-03-20 11:41:31 316

原创 UVA 10518 How Many Calls(求计算Fibonacci数列第n项时递归调用次数)

题目链接: UVA 10518 How Many Calls 分析: 根据公式 Cnt[i]=Cnt[i−1]+Cnt[i−2]+1Cnt[i]=Cnt[i-1]+Cnt[i-2]+1,且Cnt[0]=Cnt[1]=1Cnt[0]=Cnt[1]=1. 然后用矩阵快速幂构造矩阵解决就行了。 注意: 输出必须用”%lld”输出,用”%I64d”无限WA,简直了。。。。o(╯□╰)o//0K

2016-03-20 10:58:38 1799

原创 UVA 11149 Power of Matrix(矩阵幂和)

题目链接: UVA 11149 Power of Matrix 分析: 二分解决。例如计算S(7)=A+A2+A3+A4+A5+A6+A7S(7)=A+A^2+A^3+A^4+A^5+A^6+A^7可以改写为 S(7)=(A+A2+A3)+A4+A4∗(A+A2+A3)=A4+A4∗(E+A+A2+A3),S(7)=(A+A^2+A^3)+A^4+A^4*(A+A^2+A^3)

2016-03-20 10:21:08 438

原创 UVA 10689 Yet another Number Sequence(Fibonacci数列)

题目链接: UVA 10689 Yet another Number Sequence 题意: 裸的菲波那切数列#include <cstdio>#include <cstring>#include <cmath>#include <climits>#include <algorithm>using namespace std;struct Matrix{ int row,c

2016-03-20 10:12:40 505

原创 模版--矩阵快速幂

#include <cstdio>#include <cstring>#include <cmath>#include <climits>#include <algorithm>using namespace std;const long long mod=(long long)(1e9+7);struct Matrix{ int row,col; long long d

2016-03-19 23:05:32 284

ACM--状态压缩

ACM--状态压缩(天津大学·周伟)

2016-09-15

状态压缩by天津大学·周伟

2016-09-13

空空如也

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

TA关注的人

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