自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 hdoj 5933 ArcSoft‘s Office Rearrangement(贪心,模拟)

题目地址:点击打开链接一开始读错题,以为可以合并任意两个区间。。其实是只能合并相邻的。思路:分情况讨论,每次判断当前点是比avg大还是小,如果大的话就把多余的部分放到下一个点上,拆操作是商-1次。余数merge到下一个的操作是2次(一次拆,一次merge),如果小于平均的话就全merge到上一个去。 当然考虑当前和下一个的和能不能作为一次。代码:#inclu

2016-11-30 23:50:56 425

原创 hdoj 1517 A Multiplication Game(博弈)

看了第二个解释,感觉对解决博弈问题有了更好的理解。 讲的很好!!转自:点击打开链接题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1517 题意:2 个人玩游戏,给定一个数n,从 1 开始,轮流对数进行累乘一个数(2~9中取), 直到第一次等于或超过n为赢.思路

2016-11-30 20:19:35 373

原创 hdoj 4791 Alice's Print Service(二分)

题意:现在你要打印一些东西,比如需要99张纸,打印100张以下时话费10元每张,100张及100张以上时需要5元每张,此时你可以选择打印100张,使得花费更小。现给一个数字n,表示n个区间段,然后有s1,p1,s2,p2......sn,pn,表示打印纸张大于等于s1而小于s2时,每张纸话费p1元,现有m个询问,问每次给你x张纸,所需的最小花费是多少。思路:可以从后往前做一个O

2016-11-29 17:08:18 453

原创 hdoj 3499 Flight(最短路)

链接:点击打开链接题意:可以让一条边的花费减半,求起到到终点的最短路。思路:可以从起点和终点分别求一次最短路,dis1数组记录从起点到各点的最短路,dis2数组记录从终点到各点的最短路。然后再枚举每一条边,判断这条边花费减半后加上起点到这条边左端点的最短路再加上终点到这条边的右端点后的总花费是否更少, ans = min(ans, dis1[u]+dis2[v]+w/2

2016-11-27 22:07:19 416

原创 hdoj 1796 How many integers can you find(容斥原理)

题目地址:点击打开链接题意:给定n和一个大小为m的集合,集合元素为非负整数。为1…n内能被集合里任意一个数整除的数字个数。n解题思路:容斥原理地简单应用。先找出1...n内能被集合中任意一个元素整除的个数,再减去能被集合中任意两个整除的个数,即能被它们两只的最小公倍数整除的个数,因为这部分被计算了两次,然后又加上三个时候的个数,然后又减去四个时候的倍数.

2016-11-23 23:02:29 530

原创 Codeforces Round #380 (Div. 2) D. Sea Battle (贪心)

题意:问你最少开几枪至少命中一条船。思路:枚举可能船的区间,并记录区间的末尾,不能记开头,最后区间数减去船数就是可能射空的数量,再加一就必中一条船了。代码:#includeusing namespace std;const int maxn = 2e5+5;int n, a, b, k, book[maxn], ans[maxn];char str[maxn];

2016-11-21 00:01:10 466

原创 Codeforces Round #380 (Div. 2) B. Spotlights (模拟)

题意:剧场舞台是尺寸为n×m的矩形场。导演给你舞台的计划,谁的演员会遵循。对于每个单元格,在计划中说明在该单元格中是否有一个actor。你会在舞台上放置一个聚光灯在一个良好的位置。聚光灯将投射光在四个方向之一(如果你从上面看舞台) - 左,右,上或下。因此,聚光灯的位置是它被放置的单元格和它发光的方向。如果两个条件成立,则位置是好的:在单元格中没有放置聚光灯

2016-11-20 23:46:55 450

原创 bzoj 4300 绝世好题(dp)

题意:给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0。n≤100000,ai≤10^9。思路:dp[i]表示处理到当前数,第i位不为0的最优长度,注意得到最优长度后要给每位为1的地方的dp都赋值成最优长度,因为与他下一个可以相邻的数只要任意一位相与是1即可。可以参考博客:点击打开链接, 点击打开链接, 点击打开链接

2016-11-20 21:42:25 506

原创 lightoj 1036 A Refining Company(dp)

链接:点击打开链接题意:在一个n∗m(n,mR矿石只能被向北移动的履带车挖取,U矿石只能被向西移动的履带车挖取,并且履带车不能交叉, 给出你每个地点的R矿和U矿的数量, 求最大运送的矿石数目(履带车会一直走到边界)思路:(1)若一旦确定取该格子的矿U矿,则该格子左侧的都要取U矿;(2)若一旦确定取该格子的矿R矿,则该格子上侧的都要取R矿;知道这两个关

2016-11-20 21:10:41 507

原创 Codeforces Round #118 (Div. 2) C. Plant (找规律)

题目链接:点击打开链接问你第n个大三角形中有几个小三角形是朝上的,每个朝上的小三角形下一年会变成三个朝上一个朝下,每个向下的小三角下年会变成三个朝下一个朝上。我们可以设第i年朝上的是ai个朝下的是bi个,因此可以得到递推式:ai = 3*ai-1 + bi-1, bi = 3*b*-1 + ai-1, 可以看到这个式子很像,两者做差得到ai-bi = 2*(ai-1 - bi-

2016-11-19 15:18:32 926

原创 Codeforces Round #304 (Div. 2) D. Soldier and Number Game(筛选素因子,前缀和)

题目链接:点击打开链接题意:两个整数a, b。求出a, a - 1, a - 2........b +1这些整数最多能被拆分成多少个数相乘。思路:数量最多,当然都要拆成素数。因为是要查1e6次区间,所以自然能想到前缀和。要计算每个数最多拆成几个素因子,可以筛出来,然后再计算前缀和。记得以前写过筛素因子...结果一时没能想起来...代码:#includeusing na

2016-11-18 20:21:19 425

原创 hdoj 2588 GCD (欧拉函数)

题目链接:点击打开链接题意:题意很简单,问你1-N中有多少个和N的gcd是大于等于M的。思路:让 n = a * b,x = a * d(b >= d),若gcd(x, n)  = a ,那么 b 和 d 一定互质 ,而此时 x的个数即 b 的欧拉函数。 这样问题就变成 在满足 b >= m 的情况下 , 对应n / b 的欧

2016-11-18 17:34:49 585

转载 欧拉函数

转自:点击打开链接欧拉函数      对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。例如euler(8)=4,因为1,3,5,7均和8互质。     Euler函数表达通式:euler(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…(1-1/pn),其中p1,p2……pn为x的所有素因数,x是不为0的整数。euler(1)=

2016-11-18 16:34:21 367

原创 Codeforces Round #379 (Div. 2) C. Anton and Making Potions (二分)

题意:要制作n瓶药水,有m种魔法A,k种魔法B;每制作一瓶药水需要的标准时间是x,共有s点魔法值;对于魔法A来说,花费b[i]点魔法值能把药水的标准时间降为a[i];对于魔法B来说,花费d[i]点魔法值能直接完成c[i]瓶药水;A和B都只能使用一次,即只能使用A的一种方案和B的一种方案;求制作n瓶药水的最小时间是多少;

2016-11-17 17:41:58 462

原创 hdoj 5667 Sequence(矩阵快速幂、费马小定理)

看着就像是要用矩阵做,但是有个a^b,不知道怎么去推递推式。思路:对两边取对数,就可以得到loga(fn) = c*loga(fn-1) + loga(fn-2) + b,然后令Fn = loga(fn), 可以得到Fn = c*fn-1 + fn-2 + b之后构造矩阵快速幂就行了,得到Fn, fn = a^(Fn), 要mod p,指数又特别大,所以需要用到

2016-11-16 17:45:33 546 1

原创 poj 1006 Biorhythms (中国剩余定理)

摘录了一些讲解中国剩余定理的博客,感觉他们写的很好 易懂。看完这三篇 对中国剩余定理应该也是能够对他有些了解了。题目链接:点击打开链接该题代码:#includeusing namespace std;int a[4], m[4] = {23, 28, 33}, d;void ex_gcd(int a, int b, int &x, int &y){ if(

2016-11-16 15:42:22 489

原创 hdoj 5584 LCM Walk(数学,逆推)

题意:在位置(x, y),可以走到(x+lcm(x, y), y) 或(x, y+lcm(x, y))或者不移动。给定终点位置,求可能的起点位置数。思路:设当前在(x, y)处,下一步可以是(x+lcm(x, y), y)或(x, y+lcm(x, y)). 令gcd(x, y) = k, x = m*k, y = n*k, 则(m*k+m*n*k, n*k)或(m*k, n*

2016-11-14 23:46:52 492

原创 poj 2823 Sliding Window(单调队列模板)

介绍单调队列不错的博客:点击打开链接还有这题输出用printf G++交会T,C++就能过.....而用cout两个都能过..好坑....代码:#includeusing namespace std;const int maxn = 1e6+5;int n, k, ansMin[maxn], ansMax[maxn], queMax[maxn], queMin[m

2016-11-14 20:43:45 434

原创 hdoj 5686 Problem B(Astar Round1)递推

f(n)表示n个1可以构成的方案数。则加一个1的时候,前面n种仍然成立 f(n+1)=f(n)+*; 第n+1个1和第n个1相加构成2,前面n-1个1可以组合的个数。 f(n+1)=f(n)+f(n-1);没说要取模,所以肯定要用到大数了。代码:import java.math.BigInteger;import java.util.Scanner;pub

2016-11-14 13:56:34 395

转载 Java 类与继承

对于面向对象的程序设计语言来说,类毫无疑问是其最重要的基础。抽象、封装、继承、多态这四大特性都离不开类,只有存在类,才能体现面向对象编程的特点,今天我们就来了解一些类与继承的相关知识。首先,我们讲述一下与类的初始化相关的东西,然后再从几个方面阐述继承这一大特性。以下是本文的目录大纲:  一.你了解类吗?  二.你了解继承吗?  三.常见的面试笔试题  若有不正之处,

2016-11-11 18:56:23 298

原创 android 解决Failed to install *.apk on device 'emulator-5554': timeout 超时问题

ADB连接超时的时间默认为5000ms,当app比较大的时候可能五秒还没好,所以会报出timeout。为了避免这个问题,我们可以设置ADB连接超时的时间久一点。用的是Eclipse的话可以在Window -> Preferences -> Android -> DDMS里设置ADB连接时间。

2016-11-11 12:51:08 3418

原创 poj 1190 生日蛋糕(dfs, 剪枝)

剪枝....参考博客点击打开链接由于深度一定(m),所以使用深度优先搜索,自上而下的设定蛋糕序号,最顶层的为第1层,……,最底层的蛋糕为第m层,很明显满足题目条件的前i层的(从顶层(也就是编号为1的层)开始计数)最小面积mins[i]和体积minv[i]是在该层的半径以及高度都为i时取得,如果采用一般的神搜肯定会超时,所以这题还需要剪枝,剪枝条件有(从m层向上搜,假设前dep层的体

2016-11-10 17:55:49 404

原创 hdoj 2553 N皇后问题

学到了对角线标记的方法。↖对角线的规律是列-行都是相同的,因为会存在负数,所以都加上n即可。↗对角线的规律是行+列是相同的。代码:#includeusing namespace std;const int maxn = 25;int ans[maxn], n, sum;bool vis[3][maxn];void dfs(int cur){

2016-11-10 15:40:05 434

原创 uva 11149 Power of Matrix(矩阵幂的和,同poj3233)

题目:点击打开链接思路见上一篇博客.代码:#includeusing namespace std;const int mod = 10;typedef long long ll;ll n, k;struct node{ ll s[100][100]; void init(void) { memset(s, 0, sizeof(s)); }};n

2016-11-10 13:37:10 405

原创 poj 3233 Matrix Power Series(矩阵幂的和,矩阵快速幂)

此题要求的是A+A^2+A^3...+A^k,当然逐个求出作和n^3*k复杂度肯定是要超时的。 所以可以构造一个矩阵Sk = I(单位矩阵) + A + A^2 + A^3...+ A^k-1,Sk = Sk-1 + Ak-1.所以就可以构造出矩阵快速幂的形式:每个方格就是一个n*n的矩阵。 要求A+A^2+A^3...+A^k就是要求Sk+1 - I,

2016-11-10 12:01:47 454

原创 android MediaPlayer的一些用法

android Mediaplayer各种属性和方法简单介绍:主要涉及类:MediaPlayer (1) 当一个MediaPlayer对象被创建或者调用reset()方法之后,它处于空闲状态,调用release()方法后处于结束状态 1,一个MediaPlayer对象调用了reset()方法后,再调用其它方法可能会触发OnErrorListener.onError()事件,未调用res

2016-11-09 23:28:21 929

原创 hdoj 5685 Problem A(逆元)

问题是求区间积。可以预处理前缀积h[i],现在要求(h[b]/h[a-1])%mod, 所以需要用到逆元-->h[b]*(h[a-1]^-1)%mod.这题求逆元的方法有很多,扩展gcd,费马小定理,线性求逆元。方法一,扩展gcd:#includeusing namespace std;const int mod = 9973;const int maxn = 1

2016-11-08 22:47:47 858

原创 poj 1061 青蛙的约会(扩展gcd)

设所需时间为x,由题意可以写出同余式:(mx - nx) = y - x ) (modl)所以(m-n)*x + l*y = y - x,  x有解得情况是(y-x)能被gcd(m-n, l)整除。有解的话可以用扩展gcd求出x.代码:#include#includeusing namespace std;typedef long long ll;

2016-11-06 17:15:11 428

原创 poj 2531 Network Saboteur(dfs)

题意:有n个点,把这些点分别放到两个集合里,在两个集合的每个点之间都会有权值,求可能形成的最大权值。n看网上还有用NP、随机化什么什么的。。。都不会 等学了再回过来看看吧代码:#include#include#includeusing namespace std;const int maxn = 25;int d[maxn][maxn], a[maxn],

2016-11-05 23:10:22 411

原创 poj 3734 Blocks (递推,矩阵快速幂)

原来矩阵还能解决这样的题。。真是长知识了让我们试着从左边开始染色。设染到第i个方块,红绿都是偶数的方案数是ai,红绿方块数为一奇一偶的方案数是bi,红绿方块数都为奇数的方案数是ci;我们就可以得到这样的递推式:ai = 2*ai + bibi = 2*ai + 2*bi + 2*cici = bi + 2*ci所以就可以构造出矩阵了。。代

2016-11-05 17:43:19 432

原创 poj 2676 Sudoku (dfs)

解数独..暴搜即可一开始傻逼的以为没必要把格子还原为0,wa了半天还坚信这不用还原...长记性了。。还有这题正搜和反搜时间差好多,正搜要400ms反搜只需16ms....代码:#include#include#includeusing namespace std;char tpic[15][15];int pic[15][15], book_row

2016-11-05 12:18:26 497

原创 hdoj 4198 Quick out of the Harbour(bfs,优先队列)

一个裸的bfs+优先队列,居然还MLE两次,WA两次,哎MLE:忘记book[tx][ty] = 1了,还找了半天哪里会MLE啊。。。WA:没考虑到S就在边界的情况。。。代码:#includeusing namespace std;const int maxn = 505;int row, col, d, sx, sy;char pic[maxn][

2016-11-04 22:49:50 513

原创 poj 1014 Dividing(多重背包/母函数)

典型的均分问题,最简单的方法是用多重背包,当然也可以用母函数解决,但是这题n很大,最大是20000,所以用母函数必须剪枝。但是不会剪枝,看到有好多剪枝方法...最多的一个是将数量6作为分界线。。虽然也没怎么看懂。。。贴地址:剪枝方法多重背包代码:#include#include#includeusing namespace std;const int maxn

2016-11-04 20:01:08 654

原创 hdoj 5113 Black And White(dfs, 剪枝)

搜索好写,但是需要剪枝,。此题的剪枝是设剩下需要need个要填,此时各个颜色还要ci个,若某个ci大于need的一半(即ci > (need+1)/2)肯定会有相邻的同色,所以可以剪去这种情况。代码:#includeusing namespace std;const int maxn = 10;int row, col, k, pic[maxn][maxn], c

2016-11-04 19:22:53 365

原创 Codeforces Round #378 (Div. 2) C. Epidemic in Monstropolis(模拟)

题意:给你一串长度为n数列,数字大的可以吃掉比他小的数字(要严格大于)然后这两个数合并成一个数,更新队伍。再给你一串长度为k的数列。让你进行上述操作使原来序列变成现在这串数。如果不能输出“NO”,可以的话输出“YES”然后输出操作过程,比如x位上的数吃掉左边的则输出x L,右边的则是x R,不吃则不输出。当然结果可能有多个,输出任意一个。每个bi对应一个a数组的区间

2016-11-04 18:26:11 323

原创 Codeforces Round #357 (Div. 2) C. Heap Operations(模拟,优先队列)

三个操作,简单模拟,让不合法的操作变成合法即可。insert x — put the element with value x in the heap;getMin x — the value of the minimum element contained in the heap was equal to x;removeMin — the minimum eleme

2016-11-04 12:24:45 441

原创 hdoj 2209 翻纸牌游戏(翻转问题)

从左往右翻,如果当前牌左边为1,此时必须翻牌。一直翻到最后一张,最后判断最后一张是否朝上即可判断是否能成功。但是有个问题,第一张牌前面没牌,可翻也可不翻,分类讨论下即可。代码:#includeusing namespace std;const int INF = 0x3f3f3f3f;char str[25];int len;int solve(int

2016-11-01 23:13:14 2056

空空如也

空空如也

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

TA关注的人

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