【NOIP2002】【codevs1098】均分纸牌
题解显然纸牌总数必为n的倍数,否则无解(题目也说了每个人和平均数(最后的纸牌数)差多少,就要从旁边的人手中拿多少张牌。即使某个时刻某人手中的牌是负数也没有关系,可以认为是他a[i]从a[i+1]手中拿牌发生在a[i-1]…
题解显然纸牌总数必为n的倍数,否则无解(题目也说了每个人和平均数(最后的纸牌数)差多少,就要从旁边的人手中拿多少张牌。即使某个时刻某人手中的牌是负数也没有关系,可以认为是他a[i]从a[i+1]手中拿牌发生在a[i-1]…
solution直接sort按原声数最大,字幕数第二排序即可。codes#include#includeusingnamespacestd;constintmaxn=200010;intb[maxn],c[maxn];m…
C++奥赛一本通刷题记录(贪心)2017.11.15Bygwj1139177410书不见了,占坑待填。AnEasyProblempoj2453//贪心,将最右边第一个01改成10并将其右边的1都往右移到最低位#inclu…
题面完全背包题解#includeusingnamespacestd;constintmaxn=100010;intn,m,c[maxn],w[maxn],f[maxn];intmain(){cin>>m>>n;for(i…
题面01背包注意输入线体积再物品个数题解//f[i][j]:当前在选第i个物品,剩余体积为j时能获得的最大价值。#includeusingnamespacestd;constintmaxn=1010;intn,m,w[m…
题面传送门传送门2题解如果没有相邻限制的话,我们开一个大根堆每一次取最大的就行了,但是如果存在限制,我们就加入一个后悔操作,来做调整贪心。首先如果我们选择了一个点i,那么其相邻的点i−1,i+1,都不能选了,所以我们删除…
题面已知一个数列,你需要进行下面三种操作:1.将某区间每一个数乘上x2.将某区间每一个数加上x3.求出某区间每一个数的和题解区间修改+区间查询。维护两个LazyTag#include#includeusingnamesp…
题面已知一个数列,你需要进行下面两种操作:1.将某区间每一个数数加上x2.求出某一个数的和题解1单点查询+区间修改。-。-说了树状数组模板那就用树状数组。树状数组维护差分数列即可(差分前缀和是逆操作,树状数组原先的区间查…
题面维护一个数列,提供以下两种操作:1、查询操作:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。2、插入操作:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固…