贪心
Cold_Chair
我XXX就是饿死,死外边,从这里跳下去,也不会再做你九条可怜一个测试点
展开
-
JZOJ 100036 【NOIP2017提高A组模拟7.10】随机
题目大意: 1<=n<=10610^6题解:Ans=min(max(|ai−aj|,j−i+1))Ans = min(max(|a_i - a_j|, j - i + 1)) 假设我们现在的区间长度是m,最小值是min,将右端点右移,m++,min将可能会减小。 我们确定一个左端点l,假设右端点是r,那么一定当r位于m>=min的临界点上max(m, min)菜会最小。 证明:假设现在在临界原创 2017-07-10 19:49:17 · 641 阅读 · 0 评论 -
【CF251D】Two Sets
【CF251D】Two Sets:Philips非常喜欢数字。最近pwecar送给他了一个由n个非负整数组成的集合。Philips非常喜欢和Bing玩。他立即决定把他n个数字中的一部分送给Bing。为了让游戏更加有趣,Philips决定使得给她的数字集合满足如下条件: 我们用x1表示Philips的数字集合的xor值,用x2表示Bing的数字集合的xor值。要使得x1+x2尽可能地大原创 2018-03-26 12:12:12 · 697 阅读 · 0 评论 -
【NOI2018模拟4.2】program
Description:题解:做法真的很巧。假设在开头加了无数个‘>’。一直走,直到出了右边界。记录f,g分别表示第一次从i-1到i的时间,和第一次i到i-1的时间。这样对于一个区间[l..r]就可以求出进来的时间和出去的时间,相减就是答案。f很好求 ,g可能还需要一个链表或者用线段树去求。Code:#include<cstdio>#include<cstring>#define fo(i, x原创 2018-04-15 19:53:53 · 308 阅读 · 0 评论 -
【NOI2018模拟4.3】paint
Description: 1<=n<=100000题解:有一个非常易证但是不显然的结论。答案矩形一定过横轴中线或数轴中线。只考虑数轴中线先,横轴中线翻转一下再做就行了。中线把点分成了两个部分。按x排个序,x相同的只取最接近中线的一个。然后扫,建单调栈,正常的暴力的话每次查询是单调栈的长度的复杂度。但是可以离散+线段树。线段树存的是以这个坐标为左边界,往上下的最长长度,便于统计,还要减去一个横坐标。原创 2018-04-15 20:00:11 · 318 阅读 · 0 评论 -
【gdoi2018 day1】密码锁
题目大意:众人皆知。题解:看到区间问题应该要想到差分。于是这题就变成了水题。差分后,排个序,随便贪一波就行了。Code:#include<cstdio>#include<algorithm>#define ll long long#define fo(i, x, y) for(int i = x; i <= y; i ++)using namespace std;const int N =原创 2018-05-07 21:53:31 · 355 阅读 · 0 评论 -
洛谷 P4704 太极剑
原题链接.这题是THUSC2018 D2 T1 的弱化版。题解:对于一条边给边的两个点染色相同的颜色。考虑在圆当中放若干个点,是相邻的两个点之间没有一种颜色出现超过一次。答案=点数/2+1最显然的做法是暴枚起点,然后扫一遍,复杂度O(n2)O(n2)O(n^2)。题解说找到距离最短的相同颜色的点,设距离为d,枚举它们之间的点为起点,然后我们就知道后面至少隔d个才会出现相...原创 2018-06-30 07:48:22 · 487 阅读 · 0 评论 -
Codeforces 966C Big Secret(greedy)
原题链接.题解:似乎怎么贪都可以过。讲一个较为正确的贪心。从高位到低位的考虑。把每个bbb按最高位分类。对于最高位为iii的,显然我们需要插一些最高位大于iii,且第iii位为0的。如果不够,则无解。够的话,用链表确定下相对顺序,最后搞搞就行了。这个是O(n log C)O(n log C)O(n ~log~C )...原创 2018-06-28 10:17:24 · 404 阅读 · 0 评论 -
Codeforces 966D Aztec Catacombs
原题链接.题解:若直接BFS出的距离小于等于3,则直接输出路径。要么就是: 1.1->x->y->1->n其中y->1本来没有边。2.1->x->y->z->x->n同理。要优化一下完全图。复杂度O(m)O(m)O(m)证明太累了,不想写。Code:#include<cstdio&g...原创 2018-06-28 10:21:09 · 357 阅读 · 0 评论 -
Codeforces 1087 E. Vasya and Templates
传送门.真的是被细节恶心到了,是不是我的方法太麻烦了?要直接s’>=a且s’<=b显然是不好做的,因为要同时考虑两个限制。于是就要睿智,求>=a的最小的s’。那么这就很水了。高位要尽可能的相等,如果不行的话,就回溯,找到最右的一个位置,使它有大于a[x]的选择,然后再把后面填最小的了,注意没有用过的字符给它们匹配一下。Code:#include<cstdio...原创 2018-12-26 21:56:05 · 549 阅读 · 0 评论 -
2019.1.15模拟
T1:给你一个长度为n的序列a,求一个最小n的排列p,使maxi=1n−1(a[p[i]] xor a[p[i+1]])\max_{i=1}^{n-1}(a[p[i]]~xor~a[p[i+1]])maxi=1n−1(a[p[i]] xor a[p[i+1]])最小。题解:不知道为什么想了这么久就是不觉得这题是个贪心。按照位运算贪心的基本思想,肯...原创 2019-01-15 20:42:09 · 292 阅读 · 0 评论 -
【GDKOI2015】星球杯
Description: N≤200, Xi, Yi 的总和小于 2^31。题解:由于比较蠢,比赛时不知道怎么做。这种动态规划遇的很少,在这里总结一下。先给出一种O(n^4)的动态规划。枚举第一组第k大的是多少,设为h。把这些选手以y为关键字从大到小排序。设fi,j,kfi,j,kf_{i,j,k}表示确定了前i个选手,放到一组且大于等于h的有j个,有k个放到第...原创 2018-03-19 20:02:18 · 300 阅读 · 0 评论 -
【NOI2018模拟3.10】占领
Description:题解:第一问是经典的dp。先随便选一个作为根。设fif_i表示i已经被占,占领其子树需要的最少步数。转移就把i的子节点的f值从大到小排序,fi=max(fson+numson)f_i = max(f_{son}+num_{son})之后考虑换根,没有什么区别,维护前缀max,后缀max就行了。第二问的话考场时没有想到,太弱了。把a-b的路径提出来,O(n2)O(n^2)就是枚原创 2018-03-14 20:21:55 · 529 阅读 · 0 评论 -
【NOIP2017模拟8.8A组】Competing Souls
Description:某日,竞赛班的学生来到了一家糖果店。 店里卖着M袋糖果,第i袋糖果里装有i颗糖,价格为i¥。 有N个学生对这些糖果产生了兴趣,于是迅速站成一排,且将他们编号为1到N。其中第i个学生带着a[i]¥。每一轮,他们按顺序买糖果(每一轮每个人只会买一袋)。由于体内的竞争之魂与超乎常人的不服输精神,当前学生买的这袋糖果一定会比上一个人多(当然,第一次可以原创 2017-08-08 16:47:28 · 579 阅读 · 0 评论 -
【GDOI2018模拟9.23】博弈
Description: 1<=n<=10^6题解:首先策略肯定是把Tom逼到一个点,然后去删边,接着取消标记让Tom一步步走到T那儿去。 Tom肯定会往代价最大的地方钻,1/4可以选择封住最大的先,然后Tom往次大的走。 以b为根,建树。 对于不在b->t的路径上的点,求出w,表示往它的子树中走一圈回来的最小代价,dp显然。 现在你可以想像从b->t走,你可以删掉相邻的子树,但是你不知道原创 2017-09-26 12:20:59 · 410 阅读 · 0 评论 -
【NOIP2017提高A组模拟10.7】Repulsed
Description:小w 心里的火焰就要被熄灭了。 简便起见,假设小w 的内心是一棵n -1 条边,n 个节点的树。 现在你要在每个节点里放一些个灭火器,每个节点可以放任意多个。 接下来每个节点都要被分配给一个至多k 条边远的灭火器,每个灭火器最多能分配给s 个节点。 至少要多少个灭火器才能让小w 彻底死亡呢? n <= 10^5, k <= 20, s <= 10^9题解:贪心题都是原创 2017-10-07 16:00:18 · 781 阅读 · 0 评论 -
【NOIP2017提高A组模拟10.5】Ping
题目大意:给出一棵n个节点的树,和一些树上的路径,求最少选出多少个点能使得每条路径里都至少有一个选出的点。 1<=n<=10^5题解:这题的经典版就是树是一条单链。初一的贪心做法是按照右端点排序,然后每次选右端点最前的区间的右端点,把覆盖它的区间delete掉,继续做,证明显然。 除去排序的复杂度,可以O(n)扫一遍做到。树上的话就比较6了。 随便选一个点为根,搞出dfs序,把各条路径的lca原创 2017-10-05 20:22:20 · 344 阅读 · 0 评论 -
【NOIP2017提高A组集训10.28】序列操作
Description:一开始有n个非负整数hi,接下来会进行m次操作,第i次操作给出一个数c[i],要求你选出c[i]个大于零的数并将它们减去1。 问最多可以进行多少轮操作后无法操作(即没有c[i]个大于零的数) 1<=n,m<=1000000题解:对于一个数据结构学傻的人来说,一上来就会上什么平衡树之类的东西。每次去c个,显然取当前最大的c个会优。 但是你发现如果对最大的c个数-1,也许相原创 2017-10-30 19:51:04 · 462 阅读 · 0 评论 -
【NOIP2017提高A组集训10.28】图
Description:有一个n个点A+B条边的无向连通图,有一变量x,每条边的权值都是一个关于x的简单多项式,其中有A条边的权值是k+x,另外B条边的权值是k-x,如果只保留权值形如k+x的边,那么这个图仍是一个连通图,如果只保留权值形如k-x的边,这个图也依然是一个连通图。 给出q组询问,每组询问给出x的值,问此时这个无向连通图的最小生成树权值是多少。1<=n,q<=100000 , n-1<原创 2017-10-30 20:25:33 · 400 阅读 · 0 评论 -
【NOIP2017提高A组集训10.28】三元组
Description:有X+Y+Z个三元组(x[i],y[i],z[i]),请你从每个三元组中挑数,并满足以下条件: 1、每个三元组中可以且仅可以选择一个数(即x[i],y[i],z[i]中的一个) 2、选择x[i]的三元组个数恰好为X 3、选择y[i]的三元组个数恰好为Y 4、选择z[i]的三元组个数恰好为Z问选出的数的和最大是多少 问选出的数的和最大是多少.1<=X+Y+Z<=500原创 2017-10-30 20:03:37 · 395 阅读 · 0 评论 -
【中山市选2010】股票投资
Description:很多人都梦想成为股神,但是股票投资是需要一定基本功的。熟知股票买卖的规则就是其中一件很重要的事情。顾名思义,股票的单位是“股”;但是实际上,在公开交易市场,股票交易的单位是“手”,1手股票等于100股股票。另外,和其他商业买卖一样,股票交易是要纳税的。股票交易的税有两种,一种是交易税,一种是印花税。假设当前股价是P,你要买或者卖X手股票,那么你需要付出或者得到的钱是G=P*1原创 2018-01-04 22:07:41 · 336 阅读 · 0 评论 -
【中山市选2011】辽哥游戏
Description: 张辽是一个长发飘飘的非常聪明的男孩,人人都称他为“辽哥”。辽哥喜欢玩一个有趣的电脑游戏。这个游戏开始的时候有n个碉堡,每个碉堡拥有一个防御值和一个附加值。玩家拥有一个初始的攻击力。如果玩家破坏了一个碉堡,则他能得到1分。每一次,辽哥会选择一个碉堡进行攻击。所有未被破坏的碉堡会联合起来防御,因此为了破坏那个碉堡,辽哥的攻击力必须大于或者等于所有未被破坏的碉堡的防御值之和原创 2018-01-05 18:44:59 · 468 阅读 · 0 评论 -
【PKUWC2019模拟2019.1.15】Square(结论题)
Description:题解:怎么说呢,一道联赛题没有做出来。以后还是要在一开始就想清楚,后面真的是越想越迷。首先需要判断答案是否存在,这非常简单,每次找到一行或一列全是一样颜色的,然后把他们变成通配颜色,如果矩阵能全部变成通配颜色,就可行。不然发现要不每一行都染了,要不每一列都染了,不然会有点染不到。假设每一行都染了,我们不用关心每一行染了什么,只用看最多有多少列完全相同,行的染色...原创 2019-01-16 16:11:17 · 338 阅读 · 0 评论