自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 cf739b 前缀和好题

题目大意:给一棵树,节点u可以控制节点v的条件是 dis(u,v)pair可以用于lower_bound,如果想按只某个变量查找,make_pair的时候,对应变量的位置写为-1.并且搜索的时候只能是make_pair(ll,int)不能是(ll,ll)代码:#include#include#include#include#define ll long longusi

2018-01-31 23:22:37 407

原创 hdu5714 排序+前缀和

首先需要知道视角就是平时理解的视角(角度),题目中说垂直河岸容易误导。然后需要注意的是看到完整的船只。思路:对于每条船,能观察到它完整的观测点区间为(y-z,x+z),把区间存储。接下来的排序比较关键:先按点的位置从小到大排,如果位置相同则前端点排前面(对于向右船只的区间,左端点为前端点;向右的区间,右端点为前端点。 这样算出来的才能是区间重叠的最大值,这里需要想一想),如果前面二者都相等,则向右

2018-01-30 23:30:44 498

原创 LIS&LCS 线性结构dp

LIS 最长不下降子序列。递推式:dp[i]=max(dp[j])+1;(jhdu1160 题目是说老鼠的速度与其体重成反比,所以需要你输出一堆老鼠,它们的速度递减但是体重递增。思路:首先对速度从大到小排序,接着对排序后的数组的体重求lis,路径输出需要熟练。#include#include#include#include#includeusing namespace std

2018-01-30 00:33:05 287

原创 树上的dp总结

这几天做了些树状dp的题目,现在总结i一下。树的最大独立集:这类题目大概是碰到最多的。独立集是指,一个图中的子点集,集合中的点都不相邻。题目一般会描述成给你一个树状关系,然后下属和上司不能同时出现,选出最多的人参加活动。递推式:dp[root][1]=Σdp[son][0],dp[root][0]=Σmax(dp[son][1],dp[son][0])+1(0表示该节点不选,1表示选择),如果节点...

2018-01-30 00:12:47 447 1

原创 图的最大独立集poj1419

模仿树的独立集写了一波,发现路径输出有点 困难。然后就上网看了看好像都是用特别的算法做的,写码一下,以后有空回啦看这个算法。只输出了最大独立集的个数,#include#include#include#include#include#include#includeusing namespace std;const int maxn=200;int m,k,n,cnt_id,

2018-01-26 18:45:34 253

原创 uva12186

这题,细思极恐,这么短的代码就实现了,参考了别人的代码写出来的,感觉比紫书上的代码好懂,看来要好好训练dfs+dp的这种解法。#include#include#include#include#include#include#includeusing namespace std;const int maxn=1e5+50;int n,t,no,ans;double perce

2018-01-26 11:24:48 422

原创 poj1661 dp+dfs好题

对于dp加dfs的题目,一直不太熟练,要训练一下才行。这题思路不难想到,关键是怎么编程实现。思路:从每块板(把最上面的点想象成一块长度为0的板)往下掉的的最短时间,必然是左边的下降的时间和右边下降时间取最短,然后递推式简单谢啦就是dp[seg_id][0]=min(dp[seg_id+1][0],dp[seg_i][1])+平台下落之间的时间+下降后跑到下一个平台一端的时间。(这个地方写的时候

2018-01-26 09:43:28 224

原创 dp好题 hdu1176

这道题,网上很多代码都是错的(dp[loc][time]=max(dp[loc-1][time-1],dp[loc+1][time-1],dp[loc][time])+cake[loc][time]仔细一想就会发现,如果根本没有走到那个位置,而那个位置又会有馅饼掉下来,根据这个式子是会有记录的,然而实际上不应该有记录),虽然能AC。。。可能真的是数据太水了。正确的思路是把这个问题化为数塔。(详

2018-01-25 18:29:01 221

原创 数独hdu1426

思路:首先输入的时候记录每一个空缺的位置,然后dfs每个空缺的位置。注意输出格式#include#include#include#include#include#include#include#include#define inf 0x3f3f3f3fusing namespace std;int sudoku[15][15];char temp; bool v

2018-01-24 10:51:08 342

原创 poj3040 贪心好题

题目大意:农场主给一个小弟发工资,每周至少需要发c元,现在FJ有一堆硬币,这些硬币面值的最大公约数相同即它们成倍数关系。问FJ最多能给多少个星期的工资?这道题开始两次都想错了,后来看了别人的思路,感觉和装箱问题有点类似。1、先排除掉大于等于C的面值,这些面值可以单独发一个星期;2、从剩下的面值中从大到小挑选出最大不大于C的面值组合,然后从小到大填补空缺,允许超出一点。(这里有点

2018-01-24 00:08:44 427

原创 poj2393

题目大意:给出生产酸奶的当前星期的成本和当前星期酸奶的需求量,问如何用最少的成本满足需求量。(可以提前生产酸奶,然后把酸奶贮藏到仓库中,仓库一个星期收取费用s元),注意上面的费用都是单位酸奶的费用。这道题贪心的策略很明显:每次找当前星期及以前生产的最低成本。不过如果直接这样写查找的复杂度o(n^2) 会TLE,仔细一想会发现,只需要比较上个星期的最优解和当前星期的成本,取最小就可以了。(这

2018-01-22 17:52:01 468

原创 poj1017贪心好题

题目大意是:一家工厂的产品有1*1、2*2、3*3、4*4、5*5、6*6六种尺寸,现在要对它们包装,但公司只有6*6的盒子,问最少需要多少个盒子可以把所有产品装好。对于立体的问题思考起来难免不方便,所以我们把讨论立体的问题投影到面积上来,则问题可以变成:给出上述几种尺寸的木板,问最少需要裁剪多少张6*6的木板来获得它们。很容易想到每次选一块板,用剩余的面积裁剪能裁剪的最大的面积的板子,但

2018-01-22 17:19:09 307

原创 poj3617

也是一题贪心的水题,贪心的策略很简单:每次选开头和结尾较大者放入新的字符串的末尾,不过需要注意的是,当首尾相同时需要比较前后的下一个(即左边的右边一个和右边的左边一个)的大小,下一个是较小的那个放入新的字符串,详情可以自己模拟。这道题比较厉害的是编程的技巧吧,试想如果两边一直相等,直到最中间才出现不同,一般的想法可能是递归,但是数太大,递归肯定不行,这里提供了一个方法,非常棒一定要学会。#

2018-01-21 11:48:58 1786 1

原创 hdu1257贪心水题 list.sort应用

这题比较简单,主要是list.sort的运用,策略:先将导弹的射程高度从大到小排序,之前需要记录导弹发射时时间上的相对位置。然后对排好序的list遍历,每次找到所有比开头导弹射程高度小的最大的导弹,删除这些导弹,设置一个拦截,然后重复,直到list为空。这题主要时list 的运用不太熟练,首先时删除的时候iterator要自加,详情看代码。然后突然想起昨天的一题TLE会不会也是这个原因?可是找

2018-01-21 11:38:59 298

原创 西安icpc签到题。。

嗯,签到题都做不出来,思路我觉得应该没错,贪心:每次根据a[i]在b中找大于等于k-a[i]的最小的数,存在则加一,并把它移除然后接着查找,然而TLE了。。。难道用线段树?https://nanti.jisuanke.com/t/20750

2018-01-21 00:35:18 331

原创 java api之calendar首用

wannafly8的A题。。。看到首先想到java api 但是不知道哪里错了。。90%的通过率。。。先贴着,有空回来研究,但是calendar的用法还是值得一记!import java.math.BigInteger;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util

2018-01-21 00:30:35 222

原创 贪心——区间选点

区间选点详情可以参照刘汝佳的紫书中的描述。这里大概叙述一下这类题目的做法。区间选点:给出n个区间,问至少用多少个点使得每个区间至少有一个点。做法:1、对n个区间按右端点从小到大排序,如果右端点相等则按左端点排序。 2、然后从排序后的第一个区间出发,设置当前覆盖区间右侧为该区间的右边。  3、只有当下一个区间的左端点大于当前被覆盖的右端点时,点数才加1.(注意刚开始放了一个点) poj1328:给一...

2018-01-21 00:26:18 363

原创 poj3414 bfs+路径打印

題目大意:给出2个水杯和目标的容量,输出经过fill drop pour三种操作的最少步数。这题思路还是比较清晰的,可是就是不知为什么mle了,找不出来问题,先码着放这里,有空回来看。mle:#include#include#include#include#include#include#include#define inf 0x3f3f3f3fusing namesp

2018-01-19 10:06:12 234

原创 素数环(剪枝)nyoj488

这题的数据比较厉害,如果不进行剪枝的话肯定会TLE的,剪枝:如果素数环元素的个数为奇数时一定是围成不了的,因为如果是奇数个元素,说明奇数的数字比偶数的数字1个,所以一定不可以形成奇偶相隔的情况,也就是说会出现两个奇数相邻,而奇数+奇数=偶数,不为素数。代码:#include#include#include#includeusing namespace std;int n,cas

2018-01-19 09:58:22 337

原创 poj3279 子集枚举+状态压缩暴力

题意:给你一个n*m的棋盘,有的棋子正面向上(0),有的棋子反面向上(1),问最少需要多少遍才能把所有的棋子变成正面向上?按字典序输出每个位置翻转的次数。这题刚开始想的时候,是想着dfs的,毕竟出现在dfs的专题里面,原本的想法是记录下为1的位置,那么翻肯定就要在它们的附近翻,然后遍历所有的翻法,可是在写的过程发现,这种写法最后很难判断是否存在解,而且复杂度也很高。后来看了看大神的代码,恍然大悟。

2018-01-17 23:37:38 280

原创 回溯水题训练

BNUOJ 1440这题其实就是变相的简单的n皇后问题,(不同的地方在于n皇后问题是每一行每一列都只摆放一个皇后,而这里可以不摆放)不过遍历时有个小技巧就是每走到一个位置都从此时的行出发往下遍历所有的行和列,这样,如果某一行不拜访,则可以通过循环直接下一行,无需再次递归,再次递归会TLE。#include#include#includeusing namespace std;

2018-01-14 02:58:08 235

原创 三维bfs

poj2251其实和普通的bfs没有太大区别,就多了上下两个方向,不过初始化数组时一定要注意哪一维对应那一层。#include#include#include#include#include#define inf 0x3f3f3f3fusing namespace std;const int maxn=35;int l,r,c,mins;char g[maxn][maxn

2018-01-14 02:56:12 361

原创 java BigIntegr类 水

之前一直不知道java api里自带实现了的BigIntegr类。现在知道了,很好用,不过如果是大数开方就要自己另外写了。然后水了几题,熟悉了函数的用法。https://vjudge.net/contest/142681#overviewA:import java.math.BigInteger;import java.util.*;public class Main{ pu

2018-01-10 23:40:03 371

原创 回溯: n皇后

算法详细解释参照刘汝佳竞赛入门。#include#include#include#includeusing namespace std;int cnt;int lo[3][20],n,record[15];bool ok;int dfs(int cur,int n){ if(n==cur){ return ++cnt; } for(int

2018-01-10 12:58:42 178

原创 蓝桥杯 剪格子(dfs回溯水题)

思路:判断一下和是奇数还是偶数,奇数的话肯定不行,然后,从左上角开始dfs回溯。em。。。因为不太喜欢递归的写法所以一直想要用栈实现,最后发现水平有限,实现不了。目前看来栈dfs的写法只适用于不回退的算法中,像回溯的还是要递归实现,不过其实不难,对dfs有更深的理解后.以后要多训练回溯和动态规划,感觉这是基本算法中最弱的两部分。代码:#include#include#include

2018-01-09 23:13:06 392

原创 AtCoder Beginner Contest 085 最后一题

em....atcoder beginner的题是真的挺水,稍微有一点点难度就最后两题,感觉不能ak都不好意思说出来。还是做一下总结吧,下一次努力ak!!!Katana Thrower:https://abc085.contest.atcoder.jp/tasks/abc085_d题目大意我翻译过来是:给你n个工具,任一个工具可以选择“扔掉”和“擦掉”两种方式中的一种,擦掉的话可以重复利用

2018-01-08 13:23:30 309

原创 ACM-ICPC Asia-Chennai Onsite Replay Contest 2017 第三题

题目大意是:给你n个数(x(i))和一个数e,然后问是否存在p(i),使得p(1)x(1)+p(2)x(2)+...+p(n)x(n)=e,且p(1)+...p(n)=1,如果有则输出对应p值,否则输出-1;思路:我的思路是直接把这个问题看成是解一个方程组即:p(1)x(1)+p(2)x(2)+...+p(n)x(n)=e和p(1)+...p(n)=1。判断其有解还是无解。然后运用一个vect

2018-01-07 14:08:19 381

原创 ACM-ICPC Asia-Chennai Onsite Replay Contest 2017 第二题(打表水题)

题目链接:https://www.codechef.com/CHN17ROL/problems/MINSTR题目大意是:给你一串ab串(只有a,b,ab,ba,aa,bb六种情况),然后串之间相互组合,若相邻的字母相同则只保留一个字母,问最终可以把字符串缩短到最小是多少个字母。em...感觉啊三的icpc题目读起来比较简单,不过可能也因为是送分题吧(也只能做送分题了......)。思路

2018-01-07 14:01:17 332

空空如也

空空如也

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

TA关注的人

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