- 博客(105)
- 收藏
- 关注
原创 [codevs1069]关押罪犯 二分图染色
题目←思路: 既然说不用并查集来贪……那二分答案吧Orz 然后就没有了 注意这里二分的是数组下标,L永远指向不可能值,而又因为冲突是可能不产生的,所以L初始应在-1上代码:#include<iostream>#include<cstdio>#include<algorithm>#include<queue>using namespace std;const int MAXN = 10
2017-10-20 19:01:44
450
原创 [codevs2913]建筑抢修
惊喜的发现这道题是可以用不同的贪心策略来解的。1、按结束时间从大到小枚举 这是考场思路。我们知道时间越向后,可选择的任务就越少。在可选范围内选需要时间更少的,这样剩给前面的时间更多 当前推到其他任务的结束时间时,表示有了新的可选任务。这时我们当前做的任务就不一定是最优(需要时间最少)的了,但在后一段时间内它确实是最优目标,所以我们已经实实在在的做了它一段时间,怎么办呢? 处理方法是将任务需要时间 -= 已经
2017-10-20 14:40:43
322
原创 [洛谷P1766]液体滴落
题目←首先需明确题目中“不受影响”的含义 出现两条相交线段的话,液体的运行轨迹应该是这样的:于是发现只需要确定液体从一条线段上落下来后首先落到哪条线段上就可以确定下一个落点了…… 然后?按每条线段较低端点的降序排列->保证液体不会落到之前的线段上; 然后模拟就可以了 注意细节#include<iostream>#include<cstdio>#include<algorithm>usi
2017-10-19 10:57:42
683
原创 [codevs2625]雷达安装
题目←一直是wa,后来看了题解才发现少考虑了一种情况 一直把最右端的圆的右边界记录为边界值,后来的圆左端点大于它就更新 然而存在一种状况,当某圆左端点在上一圆右端,右端点仍在上一圆左端 此时若边界仍为上一圆右端,则可能存在新加入的圆与前一圆并无交点,但答案不更新的情况。 所以需要node[i].r < last时,更新last值以缩小范围#include<iostream>#include
2017-10-19 07:49:36
352
原创 [codevs1615]数据备份
题目←大意: 可以转换成n条线段中选k条端点不重合的线段,要求线段之和最小 发现一条线段选了之后会影响两边的,考虑链表 还有这样一条替代关系: 选择一条长度为v的线段后,两旁的线段不能再选,但若要重选两条线段,可将答案增加lv+rv-v来抵消 其中lv、rv为左右线段的价值综上,选择一条价值为v的线段时,在链表空间中新加入lv+rv-v,代替v的位置 然后继续从小到大贪心就可以了
2017-10-17 18:42:29
318
原创 [题目总结·贪心]
poj 3190 挤奶预订大意: 给出一些线段,求最少分组使线段互不重叠,并求出每条线段所在组的编号思路: 跟线段覆盖是不一样的,一开始想错了 对于每条线段,无论放在哪里,末尾对后面线段的影响是一定的 本着消耗空间最小的原则,将线段放在末端点离它的始端点最近的线段后面 就是让两条线段始末位置间的距离尽量小 故将线段按始端点排序,丢进以末端点为关键字的优先队列中 每放一条线段时,将堆顶末
2017-10-17 18:24:26
332
原创 [codevs4888零件分组][codevs1044拦截导弹]
codevs4888零件分组两道题目都牵扯到了一个问题,一个区间中存在的单调序列的个数 若要求序列单调不增,则序列个数为最长单调递增序列;(导弹拦截) 若要求序列单调不减,则个数为最长单调递减序列;(零件分组)证明摘自某不知名blog: 对于某序列有增有减,则该序列所形成的严格单调递增序列必然为其每个互相完全不相同单调递减序列的某一个元素共同构成,即对于序列100 68 66 56 78 8
2017-10-17 13:18:47
657
原创 [对内测试Day10.16]贪心+读入+DP+小学数学
T1codevs2913建筑抢修大意见链接。先说自己在考场上的思路: 每个任务有结束时间的限制,这点特性很像codevs1052地鼠游戏 然后选择了将时间从后向前枚举,将当前时间所有可选择的任务丢进堆中,每次选择需要时间最小的一定最优(剩余给前面的时间更长) 对于当前可选择的最小任务时间如果无法再下一个时间点(实际的前一个的时间点)完成的话 将该任务进行的时间 -= 已进行的时间,重新扔进堆
2017-10-16 20:46:35
370
原创 [洛谷P3927]一道中档题
题目←洛谷月赛,qbxt考试的时候划水去做了T1 当时没看见多组数据悲惨的wa了 然而题目现在改了?翻提交记录时惊喜的发现当年的0分变成了70? 70分是被int坑了……答案是在longlong范围里的思路: k进制下末尾0的个数即为该数最大可整除的k的次方数 将k质因数分解,统计k的每个质因子在n!中最少被整除的次数#include<iostream>#include<cstdio>
2017-10-14 20:29:58
392
原创 [洛谷P1197]星球大战
题目←打这题的时候状态成迷……好多莫名奇妙的手滑导致wa了三次……顺便题面坑人啊!说好的一开始直接或间接联通呢QAQ思路:离线做法。由删点转为建点 每次建点时遍历点连出的所有边,如果发现连向的点还没被建起来就pass掉 新建点时联通块+1,每遍历到可以连通且不在同一块中的点(已被建的点)连通块 –; 这样新建一个点之后连通块可能比以前更少#include<iostream>#include<
2017-10-14 19:34:15
382
原创 [codevs1507]酒厂选址
题目←一开始想到了前缀和优化,发现是n^2,看数据范围没敢打 于是去搜题解……结果发现有人就是这么过的23333 于是代码↓#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const long long MAXN = 200000 + 50;long long dis1[MAXN],dis
2017-10-14 11:09:05
566
原创 [codevs1995]黑魔法师之门
题目←容易发现题目描述的子图仅能包含强连通分量什么时候出现强连通分量呢?在两个点已经连通后又加了条边的时候,子图数 = 原子图数*2 + 1新增方案数为原子图数 + 1,意义为1、用新添的边替换两点间一条原边产生的新方案2、新添的边产生的新强连通分量#include<iostream>#include<cstdio>#include<algorithm>#define mod 10000000
2017-10-14 11:02:49
372
原创 [codevs2547]东方辉针城
题目←首先一定会往上层移动 既然给出了答案的有限顺序那把搜索顺序改一下第一个dfs到的就一定是最优解了……#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int MAXN = 1000 + 50;bool map[MAXN][MAXN];int n,m;char s[MAXN
2017-10-13 18:30:25
556
原创 [codevs1725]探险
题目←wa了一次,犯了个很经典的错误——直接把R设成了所有体力值的sum 然而check函数里只有mid不合法的时候才会返回false……R指向的永远是不可能的点 下次注意……#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>#define LL long longusing namespace
2017-10-12 21:17:11
992
原创 [codevs1391]伊吹萃香
题目←东方系列的可做题…… 每点有原色 -> 反色两种状态,所以把数组开双倍大 i表示原色,i+n表示与原色颜色相反 注意在路上走也是消耗时间的,到达时目标点已经变色了 建好图之后暴力跑最短路就可以了,最后在n和n + n里取min 其实spfa和dij都能过,一开始T掉是因为数组开小了……#include<iostream>#include<cstdio>#include<algor
2017-10-11 12:53:02
664
原创 [codevs1099]字串变换 双向BFS
题目←qbxt里双向BFS的例题…… 网上好多题解用的是STL黑科技?抱着练码力的心态手写了队列+find+replace; 顺便map大法好啊#include<iostream>#include<cstdio>#include<algorithm>#include<cctype>#include<cstring>#include<map>using namespace std;c
2017-10-11 08:51:47
447
1
原创 [codevs1418]愚蠢的矿工
题目←之前听过思路,胡搞了一下…… 左儿子右兄弟写起来简单些(枚举次数并不少)转移: dp[i][j]为到第i个点剩j人的最大可获价值 节点上留人则可由左儿子和右兄弟的和+自己转来; 节点上不留人只能由右兄弟转来#include<iostream>#include<cstdio>#include<algorithm>#include<cstring>using namespace s
2017-10-10 21:50:28
708
原创 [openjudge666]放苹果
题目←一道入门级的搜索题,但条件的限制也需要动脑子 所以这道题被安利是因为神奇的题号?#include<iostream>#include<cstdio>using namespace std;int n,m,ans;void dfs(int k,int sy,int pre){ if(k == 1) { ans ++; return;
2017-10-10 20:51:32
550
原创 [codevs1243]网络提速
题目←这叫……分层建图? n <= 50,最多50*(50 - 1) = 2450条边,m <= 10,把所有可能经过的边都建出来最差24500条 密集图,所以跑dij…… 也可能是codevs数据水所以过了……#include<iostream>#include<cstdio>#include<algorithm>#include<queue>#define INF 21474836
2017-10-10 19:00:37
477
原创 [qbxt考试Day6]小学数学 + Hash
T1 求不超过n的因子最多的数n <= 10^16 现在才知道反素数是什么东西…… 1、因子个数与质因子大小无关 2、设X = P1^a1 * P2^a2 * P3^a3,因子数 = (a1 + 1) * (a2 + 1) *(a3 + 1) 综上,爆搜质因子指数,小的质因子指数>=大的质因子指数可保证答案不会变差#include<iostream>#include<cstdio>
2017-10-06 21:31:49
446
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人