[luogu-2877]noip2016-day2-T2 蚯蚓 题解

来源:互联网 发布:哪里买淘宝小号安全 编辑:程序博客网 时间:2024/05/20 20:04

题目传送门
题意解析:题目给了你n条蚯蚓,然后让你每次找出一条长度最长蚯蚓,然后把它切断,而且每次切断的位置都会告诉你(每次切开都是按照一个比例来的)。然后蚯蚓就会向你所知道的一样变成两节(为什么是瞬间恢复的?而且长度为0也是一种特殊的存在,居然还不死)。最后这次砍断结束后,除了这次被砍断的蚯蚓,都会长长q的长度(长得真快)。


My opinion:虽然这题有很多的槽点,但是我们还是得去做是不是,因为每次蚯蚓都会变长,所以我们是不可能直接出答案的。然后我就想到了,既然是每次找出最大值,那么是不是可以用堆,然而n有七百万,所以堆明显要被卡常(更别说我这种还把堆写错,强行从log变成n^2的人了)。所以只能使用O(n)处理这个问题,这样的话,我们只有一个办法了那就是单调队列,我们每次维护一个初始队列,把切开的两个分别在放在两个队列里。
总结:
1、输入。
2、单调队列维护。
3、输出。


神奇的代码:

#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define rep(i,a,n) for (int i=a;i<=n;i++)#define per(i,a,n) for (int i=a;i>=n;i--)#define Clear(a,x) memset(a,x,sizeof(a))#define ll long long#define INF 2000000000#define eps 1e-8#define db doubleusing namespace std;ll read(){    ll x=0,f=1;    char ch=getchar();    while (ch<'0'||ch>'9') f=ch=='-'?-1:f,ch=getchar();    while (ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();    return x*f;}const int maxn=100005,maxm=7000005;int n,m,q,u,v,t;int x[maxn],y[maxm],z[maxm];int tx,ty,tz,wy,wz,mark;bool cmp(int a,int b){    return a>b;}int work(int i,int s){    int k=0,tmp=-INF;    if (tx<n&&x[tx+1]+mark>tmp){        tmp=x[tx+1]+mark;        k=1;    }    if (ty<wy&&y[ty+1]+mark>tmp){        tmp=y[ty+1]+mark;        k=2;    }    if (tz<wz&&z[tz+1]+mark>tmp){        tmp=z[tz+1]+mark;        k=3;    }    if (i%t==0&&(i/t!=s/t)) printf("%d ",tmp);        else if (i%t==0) printf("%d",tmp);    if (k==1) tx++;    if (k==2) ty++;    if (k==3) tz++;    return tmp;}int main(){    n=read(),m=read(),q=read(),u=read(),v=read(),t=read();    rep(i,1,n) x[i]=read();    sort(x+1,x+n+1,cmp);    rep(i,1,m){        int tmp=work(i,m);        int X=floor((db)tmp*u/v);        int Y=tmp-X;        mark+=q;        y[++wy]=X-mark;        z[++wz]=Y-mark;    }    puts("");    rep(i,1,n+m)        work(i,n+m);    puts("");    return 0;}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 刚出生的小羊不吃奶怎么办 羔羊走路不稳不吃奶怎么办 新生儿喝奶老是呛到怎么办 宝宝吃母乳呛到怎么办 宝宝一直睡觉不吃奶怎么办 3个月婴儿不吃奶怎么办 新生婴儿晚上不睡觉怎么办 宝宝肚子胀不吃奶怎么办 宝宝25天不睡觉怎么办 50天婴儿不吃奶怎么办 儿子关在房间玩电脑怎么办? 宽带拨号上网账号密码忘了怎么办 双眼皮割的太宽怎么办 营业执照异常名录移除注销怎么办 工商局注册后骚扰电话怎么办 单位工作失误医保断交7年怎么办 大门对大门怎么办?巧用天官赐福 委托书公司名称打错了怎么办 招行ubank不对账怎么办 信贷公司利息高不合理怎么办 衣服上的logo掉怎么办 ui设计师接不到私活怎么办 微信打开很慢怎么办 小泰迪感冒加身上结痂怎么办 法斗眼睛肿了怎么办 地图鱼身上有白点怎么办 人被广告牌砸了怎么办 小米手机出现繁体中文英文怎么办 雅思考试把姓名写错了怎么办 房贷的流水账假怎么办 报到证报道期限过期了怎么办 注销公司公章丢了怎么办 家里的猫太调皮怎么办 孩子纹身了我该怎么办 46天婴儿感冒了怎么办 狗病了不吃东西怎么办 幼儿急诊见风了怎么办 哺乳期乳房有硬块而且疼怎么办 哺乳期乳头破裂乳房似针扎怎么办 回奶胀痛的厉害怎么办 淡水龟的壳变软了怎么办