- 博客(14)
- 收藏
- 关注
原创 codeforces 742d D - Arpa's weak amphitheater and Mehrdad's valuable Hoses
题意有n个女孩,每个女孩有一个体重和颜值,并分为k个朋友团队。两个女孩x,y在同一个团队的条件是存在a1(x), a2, ..., ak(y) 其中ai 和 ai + 1 是朋友( 1 ≤ i < k).每个团队要么全取,那么取不超过。问在总重量不超过w的情况下能取到的最大颜值和。思路并查集+背包
2016-12-09 11:16:44
738
原创 codeforces 742c Arpa's loud Owf and Mehrdad's evil plan
题意给定一个有向图,每个点出度为1,各个边长度为1。求一个最小的k,使得对于每个点,经过k长度到达y,从y出发经过k到达原点。思路如果存在k,那么有向图一定由多个环组成。k即为每个奇数环长度和每个偶数环1/2长度的最小公倍数。
2016-12-09 11:10:52
747
1
原创 codeforces 739c Alyona and towers
题意给定一个序列,求最长的严格先递增后递减区间长度。有m次区间加修改,每次修改后输出答案。思路线段树。diff[i] = a[i] - a[i - 1],diff[1] = 0.这样每次的区间加就就变成了单点修改,即l点加k,r+1点减k。需要注意当l为1或者r为n时无需修改。
2016-12-01 15:38:43
960
原创 codeforces 735d Taxes
题意将n拆成k个数(k可以为1),使得每个拆分后的数的最大因子相加最小。思路数学结论,哥德巴赫猜想。分成自身为质数,大于2的偶数,大于2的奇数,需要注意奇数中拆分出2的情况。
2016-11-28 17:48:53
435
原创 codeforces 735c Tennis Championship
题意有一个比赛,输者淘汰,两个进行过的比赛数差不超过1的人能互相比赛,问n个人中最后胜者最多进行多少次比赛。思路快速幂+二分。f[x] 表示胜者赢x场至少需要的参赛人数,f[x]=f[x - 1] + f[x - 2].
2016-11-28 17:43:00
566
原创 NEU 11月组队赛D题 QUERY ON THE TREE
题意给定一个树,每个点有个权值v,vi=v(fa)*i%20161119,m个询问u,k,问以u为根的子树中abs(vj - k)最小值。connection思路先dfs一遍求出dfs序和每个节点的权值,将问题转化为求区间中大于k的最小值和小于k的最大值。离线线段树即可。
2016-11-27 20:33:18
353
原创 codeforces 739b Alyona and a tree
题意给定一棵树,每个节点有一个值a(u),每条边有一个权值w,定义节点u控制节点v当且仅当dis(u,v) <= a(v)。要求每个节点控制的点数。链接思路首先求出每个节点到根节点的前缀边权和pre[u],那么dis(u,v) = dis[v] - dis[u] -> dis[v] - dis[u] <= a[v] -> dis[v] - a[v] <= dis[u].问题转化为了求树上节点的子
2016-11-27 20:21:29
892
原创 codeforces379a Alyona and mex
题意给定一个n个数的序列和m个子序列,问没在m个子序列中出现过的可能的最大的数是多少(类似sg值),并输出任意一个符合要求的序列。题目链接思路构造。。最大值取决于最短区间,只要保证最短区间是0 - len-1 即可,所以只要0-len-1循环即可。
2016-11-27 20:11:41
411
原创 codeforces 738c road to cinema
题意给定n辆车,每辆车有租费和上限油量。已知一辆车普通速度跑一公里要一单位油,费时2min,加速跑一公里要2单位油,2min。现在要在t min内从1跑到s,已知在路中有g个加油站,车通过加油站油量即补充到上限油量,加油不花费时间。问在不迟到情况下最小费用。思路二分。
2016-11-21 11:53:03
382
原创 codeforces 738d sea battle
题意给定一个1*n的矩形,里面有a个长度为b的船,已知有k个格子为空,问至少还要打几个格子才能一定打到船。思路贪心。首先根据已知的格子将矩形分成几个连续段,每一段左右端点为l,r,长度为k,那么每段最多能容纳k/b个船,剩余段所能容纳的最多船为所有段相加为tmp。每次打格子,最坏情况下我们只能排除b个格子没船,即打在一个段的右端点以左第b个格子(或左往右)。所以只要当前tmp>a,我们就排除b个格
2016-11-21 11:47:42
454
原创 Codeforces 738e subordinate
subordinate题目链接题意已知一个n节点的树中每个节点的祖先数和根节点编号,问至少要修改几个点可形成一个合法树。思路节点祖先数即节点深度,判断非法树即根到最大深度中有空层。所以枚举最大深度,对于最大深度k,需要修改的点数即max(0-k中空层数,k+1 - maxn中节点数+祖先为0的非根节点数)。最后如果根节点祖先不为0,ans++。代码#include <stdio.h>#incl
2016-11-21 11:36:52
468
原创 Codeforces 699e LRU
codeforces 699e LRU题目链接题意给你n个视屏和一个大小为k的缓存区,每次选取一个视屏询问,如果视屏不在缓存区中,则加入缓存区,如果缓存区中视屏超过k个,则删除最早询问的视屏。给你每个视屏被询问的概率,每个视屏被选取的概率独立,问在10^100询问后每个视屏仍在缓存区内的概率。思路考虑到只有最后仍在缓存区中的视屏只有k个,所以对结果有影响的只有最后k次选取,即前10^100 - k。
2016-11-20 13:30:51
1545
原创 hdu5072 coprime 容斥 和睦三元组
容斥的一个经典题型的变形。忘记ans清零怒WA七发。。可以用改进的素数筛快速求出n个数中每个数的不互素数个数,效率大概是max(a[i])log(max(a[i]))。虽然数据很水用暴力遍历每个数因数分解再进行容斥的方法也能过。。。#include #include #include using namespace std;int num[100100],good[100100],
2015-12-15 19:35:48
989
原创 hdu4424 Conquer a New Region
记录下自己的思路。。题意大概就是N个点N-1条边,两个点之间的运输量记录为两点路径上边权的最小值,求从哪一点出发到剩下点得运输量和最大,输出最大的运输量总和。首先很明显这些点构成一棵树,那么每一条边都可以把原树分成两个部分。可以把最开始的树看成一个集合,在把所有边从小到大排序,那么当前插入的边可以把所在的集合分成两个集合,而两个集合中的点的运输总量分别增加插入边权值*对方的集合点数。相
2015-11-09 17:11:09
528
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人