自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 NOI. 城堡问题

1817:城堡问题 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 1 2 3 4 5 6 7 ############################# 1 # | # | # | | # #####—#####—#—#####—# 2 # # | # #

2018-01-15 18:31:01 523

原创 洛谷P2878 保护花朵

%lyl大佬 这是一道贪心题,具有明显的套路特征,即对于两个相邻的奶牛,互相交换位置对其他奶牛并无影响,所以我们就将总问题转化为子问题,即讨论两头奶牛时的情况。我们可以设两头牛为x,y, 且先牵走x时吃的草比牵走y时的少,即x更优, 则 x.d*y.h*2#include<iostream>#include<cstdio>#include<algorithm>using namespa

2017-10-05 23:25:32 548

原创 洛谷P2014 选课

又是一道树型DP,不过这次是以点带权值,因为根是不确定的,我们可以设个虚根 0 ,因为算是多了一点,所以总点数应该++。 因为是点带权值,所以不用dfs边的数量了,不过有一点虚注意,因为多了一个点,所以j层循环(所选的边数)下界应该是到2的。#include<iostream>#include<cstdio>using namespace std;int n,m,s,x,y,dp[305][

2017-10-03 23:11:36 268

原创 鱼塘钓鱼

【问题描述】 有N个鱼塘排成一排(N<100),在第1个鱼塘中钓鱼第1分钟内可钓到10条鱼,第2分钟内只能钓到8条鱼,……,第5分钟以后再也钓不到鱼了。从第1个鱼塘到第2个鱼塘需要3分钟,从第2个鱼塘到第3个鱼塘需要5分钟,…… 【编程任务】 给出一个截止时间T(T<1000),设计一个钓鱼方案,从第1个鱼塘出发,希望能钓到最多的鱼。 假设能钓到鱼的数量仅

2017-09-01 21:53:17 877

原创 POJ 3252 Round numbers

http://poj.org/problem?id=3252 题意简述:输入的两个整数(包括)之间所有整数,转换为二进制后,0的位数大于等于1的位数的数字个数。 首先要求 l-r 中的数字个数,自然会想到求 [1->r]-[1->(l-1)]; 但是要求的是转化为二进制后0的位数大于等于1的位数的数字个数,我们每次求的都是小于r或者l的数, 所以区间变为(1->r+1)-(

2017-08-30 21:06:27 241

原创 洛谷P3368 树状数组

https://www.luogu.org/problem/show?pid=3368对每个区间中的每个数进行操作,输出某一个数的值。 对区间操作时,应该让 [1-(l-1)]-x, [1-r] +x.#include<iostream>#include<cstdio>using namespace std;using namespace std;int n,m,a[500005],p,x

2017-08-30 19:31:44 470

原创 洛谷P3374 树状数组

https://www.luogu.org/problem/show?pid=3374用树状数组对单个数据操作,然后查询一段区间。 注意:对单个数据操作前应将初始值加入树状数组中。#include<iostream>#include<cstdio>using namespace std;int n,m,a[500005],p,x,y,t[500005];int lowbit(int x){

2017-08-30 19:28:34 1281

原创 洛谷P1122 最大子树和

题目连接:https://www.luogu.org/problem/show?pid=1122 解题思路: 这是一道类似于树形DP的题。 我们可以用求最大字段和的方法求最大子树和,所以问题就转化成了如何在遍历树记录子树和。 我们可以用f[x]数组储存以x为根的子树和,一直搜到它最远的儿子,然后返回时如果当前的值>0就说明能产生影响,就加上,然后标记该点,用ans储存最大的子树

2017-08-19 21:24:00 398

原创 洛谷P1266 速度限制

题目链接:https://www.luogu.org/problem/show?pid=1266解题思路: 1.求最快路线类似于求最短路,想到用spfa解决。 2.和一般的spfa不同,本题的路径中是以距离/速度来更新答案的,并且速度存在两种情况,需要分别分析。 3.既然有了速度这个变量,我们需要用数组来储存记录速度,dis[i][j]表示从到i点时速度为j的最快路线。在更新最短路的时候判断一

2017-08-11 17:32:16 656

原创 洛谷P2341 受欢迎的牛

题目链接:https://www.luogu.org/problem/show?pid=2341解题思路: 1.首先可以想到在一个联通块内的牛都可以成为明星奶牛(互相喜欢)。这样我们就可以把它们缩成一个点。 2.对于已经缩点完毕的图来说,如果有且仅有一个点出度为0,说明它受所有牛喜欢,输出这个联通块内的点的个数。如果存在两个及以上的点出度为0,说明不可能有明星牛了,输出0.#include<io

2017-08-11 17:13:12 395

原创 物理题。。。

解题思路: 首先,后方的灯泡一定不会影响前面的结果,也就是说灯泡放的方案数是递推的,符合无后效性原则,因此我们可以用动态规划的思想来解决。 我们可以先按照每种灯泡的瓦数排序,然后根据题意开f[i][j]数组,表示第i个位置选了j的方案数。 1.考虑边界。f[0][]显然0号点选什么方案都是1,DP是从这里开始的。 2.状态转移。因为灯泡最多只能连续a[].num个,所以状态转移的循环为

2017-08-09 11:03:03 538

原创 拯救小tim

【问题描述】 小tim在游乐场,有一天终于逃了出来!但是不小心又被游乐场的工作人员发现了。。。 所以你的任务是安全地把小tim护送回家。 但是,A市复杂的交通状况给你除了一个难题。 A市一共有n个路口,m条单行马路。但是,每条马路都只有一段时间是开放的。为了 安全,你必须选择一条护送路线,使得小 tim在路上的时间最短,即到家的时刻减去离开游 乐场的时刻最短。 【样例解释】

2017-08-09 10:30:02 822

原创 洛谷P2434 SDOI 区间

题目链接:https://www.luogu.org/problem/show?pid=2434#sub解题思路: 这道题就是简单的模拟啊。不过愣是没有模拟对,看来还需要加强代码实现能力。。。 先按照左端点从小到大排序,每次验证当前区间左端点是否大于设置的右端点,如果大于,说明不相交,就输出设置的左右端点,如果小于等于,说明有相交的部分,不断更新右端点。#include<iostream>#i

2017-08-08 15:45:44 407

原创 洛谷P2707 Facer帮父亲

链接:https://www.luogu.org/problem/show?pid=2707#sub 解题思路: 一道非常有趣的数学题。 首先可以得出门票的收益=x*(ai-bi*x,0); 如果枚举每个可能的x的话肯定会超时。我们观察式子 -b*x*x+a*x 发现是个二次函数,那它一定有最高点,即x的最大范围,因为x必须取整数,这里的技巧是max+0.5取整。 并且二次函

2017-08-08 14:43:06 373

原创 2017日照夏令营 day3 t2 小z搭积木

题目描述: 小 Z 喜欢搭积木。小 Z 一共有 n 块积木,并且积木只能竖着一块一块的摞,可以摞多列。小 Z 的积木都是智能积木,第 i 块积木有一个情绪值 Xi。当摞在该积木上面积木总数超过 Xi 时,i 号积木就会不高兴。小 Z 情商这么高,肯定不希望有积木不高兴。但是他又希望每块积木都被用上,并且摞的积木列的总数最少。你能帮帮萌萌的小 Z 吗?解题思路: 既然希望每块积木都被用上,那自然是

2017-08-08 09:37:13 2169

原创 2017日照夏令营 day2 t1 debt

题目大意: 小 G 有一群好朋友,他们经常互相借钱。假如说有三个好朋友 A,B,C。A 欠 B 20 元,B 欠 C 20 元,总债务规模为 20+20=40 元。小 G 是个追求简约的人,他觉得这样的债务太繁杂了。他认为,上面的债务可以完全等价为 A 欠 C 20 元,B 既不欠别人,别人也不欠他。这样总债务规模就压缩到了 20 元。 现在给定 n 个人和 m 条债务关系。小 G 想找到一种

2017-08-07 12:05:12 503

原创 2017日照夏令营 day1 t3 等式 洛谷P1955 程序自动分析

题目大意: 对于每一个式子,要么是 xi = xj 的形式,要么是 xi ̸= xj 的形式。现在我给出这 n 个式子,你要告诉我,这 n 个式子是否可能同时成立。解题思路: 1.首先,如果被要求相等的式子在后面被要求不相等显然是不合法的,不相等同理。 2.我们可以想到用并查集维护等式的关系,如果被要求相等就加入并查集,然后用并查集验证不等的情况,如果式子在相等的集合中,就输出NO。 3.小

2017-08-07 11:53:37 1783

原创 2017日照夏令营 day1 t2 洛谷P2652 同花顺

题目大意: 所谓同花顺,就是指一些扑克牌,它们花色相同,并且数字连续。 现在我手里有 n 张扑克牌,但它们可能并不能凑成同花顺。我现在想知道,最少更换其中的多少张牌,我能让这 n 张牌都凑成同花顺? 思路: 首先要求最少更换多少张牌,我们可以求最多能留下多少张牌。 题中数据可能会有重复的情况,应该先用unique()去重,注意在去重前一定要用sort排序!!!按花色

2017-08-07 11:18:36 640

原创 洛谷P2015 二叉苹果树

一道树型DP,不过这道题是按照边来做的,和点略有不同,因为累加的是边的权值,并且取m条边,那对于每个子树而言,它选的边肯定是 min(k,m),k表示子树中的边数,所以要dfs 找边数。 接下来是树型DP的常用套路了 dp[i][j]表示以i为根选j条边产生的值,状态为 根 与 子树,还需要加上权值。 详情见代码#include<iostream>#include<cstdio>using

2017-08-05 22:08:03 181

原创 2017日照夏令营 day6 t3 exist

有一个集合 ,游戏开始时里面有一些数 ,xyx每次可以选择集合中的两个数 (这两个数可以是同一个数)相减,把它们的差的绝对值放入集合中(如果集合中已存在该数则不放入),经过任意次这样的操作后 ,xyx会给出一个数字k ,问它 是否能存在在集合中,如果能 ,那么游戏成功 ,反之失败。 (换句话说 ,xyx想知道这样不断操作下去 ,是否能凑出数字k ) xyx有一个数列a ,他每次会给出三个数l

2017-08-05 22:06:45 681

原创 TYVJ P4366 整数拆分

一道非常好的搜索题目。 要将任意一个数拆分成斐波那契数的和,想到用搜索从前往后依次拆分验证,因为输出要求,我们可以巧妙地用字符串的形式储存结果。 考虑到dfs的可行性和最优性剪枝,我们可以增加一个变量t储存当前已经拆分的个数,如果当前拆分的个数已经大于了所求的最小值,那就没必要再搜索了,具体细节见注释。 小技巧:用读入流stringstream 进行整数到字符串的转化#inclu

2017-08-05 21:41:47 285

原创 2017日照夏令营 day6 t1 fac

题目大意: 有一个与阶乘有关的游戏,给出两个整数n ,m ,令t=n!,每轮游戏的流程如下 1.如果 m不能整除t ,即 t mod m !=0 ,跳到第三步;如果能整除,跳到第二步 2.令t=t/m,xyx的得分+1并返回第一步 3.游戏结束 xyx共进行T轮游戏,他想知道每轮他的得分是多少 特别注意,m,n<10e9; 解题思路: 先理解一下题意,其实就是找n中有多少个

2017-08-05 09:14:32 563

原创 洛谷P1197 星球大战

解题思路: 由判断联通问题想到并查集维护,但是如果每次询问都删去点跑dfs的话,显然是超时的。于是想到反着做,将删点问题转化为连边。 首先先处理出全部询问的星球被毁的联通块数,然后倒着加入询问,将与询问点联通的点遍历,记录联通块数。 输出技巧,因为是倒着处理的,可以将结果压入栈中。用栈储存结果。 详见代码#include<iostream>#include<cstdio>

2017-08-04 23:41:56 386

原创 洛谷P1460 健康的荷斯坦奶牛

解题思路: 首先想到的是搜索,搜索使用哪几种符合条件的饲料,找最小的花费。由于dfs的特点,先找到的方案一定是字典序最小的。 但是暴力搜索会超时,需要剪枝,详见注释#include<iostream>#include<cstdio>#include<cstring>using namespace std;int n,m,v[35],a[35][35],ans=1e9,cnt,t

2017-08-04 22:35:53 637

原创 2017 日照夏令营 day5 t2 tree

题目大意: 给定一棵 个节点的树,树上的每个节点 有一个权值 ,每次操作中你可以选择一个包含1号节点的连通子树,将这个连 通子树上所有节点的权值加上(或减去)一个相同的非负整数,要求将所有节点变为0,且最小化所有加上(或减去)的 非负整数之和 树形DP f[i]表示把以i为根的子树都变为0时在i上的最少累加值 g[i]表示把以i为根的子树都变为0的在i上的最少累减值 f[

2017-08-04 11:39:37 395

原创 2017日照夏令营 day5 t1 backpack

题目描述 Blice和阿强巴是好朋友 但萌萌哒Blice不擅长数学,所以阿强巴给了她一些奶牛做练习 阿强巴有 头奶牛,每头奶牛每天可以产一定量的奶,同时也需要一定量的草作为饲料 对于第 头奶牛来说,它每天可以产 升的奶,同时需要 千克的草作为饲料 现在来自蚯蚓国的九条可怜想借一些奶牛,使借走的这些奶牛每天的总产奶量最大,但九条可怜很穷,每天最多只能提供 千克的草作为饲料,而且她还需要对付

2017-08-04 10:36:19 459 2

原创 codevs 2546奇偶游戏

奇偶 【题目描述】 给定一个M格排成一行的储藏柜,每个格子能放一个物品;再给出N个条件,每个条件形同如下:A B odd/even,表示第A个格子到第B个格子之间(包括两端)放了奇数(odd)个物品或者偶数(even)个物品。 现在给出这N个条件,请你求出K,使得第1个条件到第K个条件全部能满足,而K+1不能满足。(K显然唯一) 【输入格式】 第一行一个整数M。 第二行一个整数N。 接

2017-08-03 15:54:05 501

转载 洛谷P1119 灾后重建

出处 http://blog.csdn.net/harlow_cheng/article/details/52262956通过这道题加深了对floyd的理解,通过中间点k去更新与之相连的点。原理讲的很清晰,必须点赞:)代码做了微调#include<cstdio> #include<cstring>#include<iostream>using namespace std; str

2017-07-22 15:26:18 354

原创 洛谷P1525 关押罪犯

先按照怨气值从大到小排序,最大的当然不能让他们在一起了,将他们分到两个监狱,而与当前的合并的是他的敌人的敌人,合并过程中发现竟然到了一个集合里,说明此时的状态不能再分了,输出怨气值即可#include<iostream>#include<cstdio>#include<algorithm>using namespace std;struct node{ int x,y,z;}a[1

2017-07-21 18:08:25 283

原创 洛谷P2814 家谱

查询祖先的题目,自然是要用到并查集了,不过在输入,数据的处理上要注意细节,名字的前面’# + ?’等字符显然是分类的,可以先输入一个字符,然后判断后分别处理。还有map关联两个字符串就可以了,不用再进行编号-字符的转换,并查集时一定要注意祖先的初始化。#include<iostream>#include<cstdio>#include<map>#include<cstring>using n

2017-07-21 17:57:59 334

原创 商品名称 map

输入商品名称和价格,然后按商品名称的字典顺序,输出各商品的价格!输入数据第一行一个数字n,表示商品个数,以下n行,每行一个字符串和一个整数,分别表示商品名称和该商品价格。 输入样例INPUT 5 ranran 23 linlin 43 yuanyuan 59 qianqian 88 linlin 5 输出样例OUTPUT linlin 48 qianqian 88 ranran

2017-07-21 17:48:52 571

原创 洛谷P1052 过河

读完题目想到的应该是动态规划,状态转移方程为f[i]=min(f[i],f[j]+v[i]) (v[]表示当前点的石头,j∈[i-s,i-t]),但是转移的是每个点,而数据范围有1000000000那么大,只动规是不行的。考虑到每次跳跃的范围1 <= S <= T <= 10,我们可以想象(╯▽╰)到每一步越小,肯定跳的越密集,而越大就越稀疏,最大的情况是S=9,T=10,此时我们通过列举可以发现,

2017-07-20 17:48:57 621

原创 洛谷P2969 音符

首先先预处理出第i个音阶的终点(i∈[1,n]),我们对于每个时间询问属于哪一段区间,用二分查找。#include<iostream>#include<cstdio>using namespace std;int n,q,b[50005],x,a;int find(int x){ int l=1,r=n; while(l<r){ int mid=(l+r)/2

2017-07-19 15:59:36 301

原创 POJ 3321 Apple tree

一看数据范围便能猜到要么是O(n),要么是n*log(n)的算法,并且这个查询和更改操作使人很自然地想起了树状数组,但是树状数组只能对区间进行操作,而题目的数据给出的是树的形式,需要将根节点和它的子树这个范围变成[ , ]区间的形式。我们可以从根节点出发用时间戳st[]记录开始位置,用end[] 记录结束位置,dfs根节点,求出每个点的区间,然后就变成了对区间的操作,查询区间操作依然是用r-(l-

2017-07-19 15:00:12 229

原创 朱迪过河

朱迪过河 (river.pas/c/cpp) 【问题描述】 兔警官朱迪历经千辛万苦,终于找到了被狮市长关押的伙伴们,打算马上把她们带回去与家人团聚。 兔警官朱迪带着被她解救出来的 N 个小伙伴打算过一条河,但她们仅有的渡河工具就是一个木筏。 由于其她小伙伴都不会划船,在整个渡河过程中,兔警官朱迪必须始终在木筏上。在这个基础上,木筏上的小伙伴数目每增加1个,朱迪就得花更多的

2017-07-18 21:52:28 463

原创 洛谷P2296 寻找道路

要满足条件1可以从终点开始走,反向建边,将图遍历一遍,用v[]记录终点能到达的点,不能到达的删去 删边时用used[]记录能用的边,然后求最短路径自然是用SPFA求符合条件的边的最小值。注意此时应该再正向建立链表,如果用一个数组的话应该将之前的清空,尤其是计数边的变量!!!。 还有一种特殊情况此时4点显然不符合条件,但是只能删除3,判断used[s]并没有什么卵用,所以最后SPFA的时候,走到终

2017-07-17 16:34:11 346

原创 洛谷P1078 文化之旅

要求最多能赚多少钱,我们自然是希望以最低价格购买,以最高价格卖出。 所以可以从起点出发,用SPFA求出能够到当前点的所有点最小值,因为要到达终点,所以从终点开始倒着走一遍SPFA,找到从当前点到终点中所有点的最大值(先买再卖)

2017-07-17 15:31:52 329

原创 洛谷P2819 图的m着色问题

题目链接: https://www.luogu.org/problem/show?pid=2819 思路: 要求每条边的两个定点着不同颜色,可以按照点来dfs,如果与之相连的点已染上一种颜色,那当前点就不染了 #include<iostream>#include<cstdio>using namespace std;int n,k,m,g[105][105],b[205],an

2017-07-11 19:47:28 544

原创 洛谷P1582 倒水 二进制运算

题目连接 https://www.luogu.org/problem/show?pid=1582 因为无论怎么倒水瓶中水只会是1,2,4,8,16…的状态,想到用二进制表示状态。 1表示瓶中有水,0表示没有,只要让N中的1变成K个就可以了; 在计数N中的一时用到(n&-n),然后每次要去掉最后的1,这时n+(n&-n);#include<iostream>#include<cstdio>

2017-07-10 17:40:36 547

原创 洛谷P2668 斗地主 贪心+搜索

题目连接 https://www.luogu.org/problem/show?pid=2668 只要出去顺子后,剩下的牌出的最优顺序是固定的,可以用贪心从四带2对,四带2张,三带1对,三带1张,剩下的对子和单张依次打出去,再特判一下王炸算一次出去就可以了。 然后就是对顺子进行搜索,单顺子,双顺子,三顺子一次搜索与回溯。 在搜索顺子过程中可以剪枝,如果当前出牌次数大于

2017-07-10 17:32:18 757

空空如也

空空如也

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

TA关注的人

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