Description
小时候的雨荨非常听话,是父母眼中的好孩子。在学校是老师的左右手,同学的好榜样。后来她成为艾利斯顿第二代考神,这和小时候培养的良好素质是分不开的。雨荨的妈妈也为有这么一个懂事的女儿感到高兴。一次期末考试,雨荨不知道第多少次,再次考了全年级第一名。雨荨的妈妈看到女儿100分的成绩单时,脸上又泛起了幸福的笑容,作为奖励,她给雨荨买了n个布娃娃。细心的雨荨发现,第i个布娃娃有一个耐心值P[i]以及一个魅力值C[i],并且还有能够忍受的耐心值的上限R[i]以及下限L[i]。当一个布娃娃j满足L[j]<=P[i]并且P[i]<=R[j],那么布娃娃j喜欢布娃娃i。雨荨还发现,一个布娃娃有可能喜欢它自己。每个布娃娃心中都有一个谜团,具体来说就是:第i个布娃娃想知道喜欢它的布娃娃中,魅力值第i大的布娃娃的魅力值是多少,并且称这个布娃娃的谜团答案为这个魅力值的大小,如果不存在,那么这个布娃娃的谜团答案为0。鉴于雨荨的上司栋栋不让题目的数据过大,下面给出数据的生成方法:给出16个参数:
Padd, Pfirst, Pmod, Pprod, Cadd, Cfirst, Cmod, Cprod, Ladd, Lfirst, Lmod, Lprod, Radd, Rfirst, Rmod, Rprod。

P[1] = Pfirst % Pmod, P[i] = (P[i-1] Pprod + Padd + i) % Pmod (i > 1)。

对于C、L、R数组也有类似的得到方式, %代表取余运算。注意:L和R数组生成完之后,如果某个布娃娃的忍耐度上限小于下限,那么交换它的上限和下限。当然,雨荨也不会让你告诉她每个布娃娃的谜团答案,因为那样会使输出数据很大。所以雨荨希望你告诉她,所有布娃娃谜团答案的和除以19921228的余数是多少。

Input
输入的第一行有一个整数n,代表布娃娃的个数。
输入的第二行有16个用空格隔开的整数
分别代表Padd,Pfirst,Pmod,Pprod,Cadd,Cfirst,Cmod,Cprod,Ladd,Lfirst,Lmod,Lprod,Radd,Rfirst,Rmod,Rprod。
16个参数均为1到100,000,000中的整数。

Output
输出一个整数,代表所有布娃娃谜团答案的和除以19921228的余数。

Sample Input
3
2 3 4 3 1 4 5 2 3 6 9 1 1 2 3 4

Sample Output
4

题面补充:n<=10^5

分析:
一眼主席树
但是需要注意的是“喜欢ta”的布娃娃,不是“ta喜欢”的布娃娃

简化了一下题意
给出一堆点,和一堆线段
求覆盖某一点的所有线段中权值第k大的线段

我们把每条线段分成加入和删除两个操作
按照x排序
建立权值线段树,记录C(魅力值)
每个线段树节点中,我们维护几个信息
l,r 左右端点
ml,mr 实际的C值
s在这个节点所管辖的区间内有几个数

P按照从小到大排序
从左向右扫
如果当前的线段端点 < 当前查找的P
则加入权值线段树

在查找的时候,如果当前节点的s根本达不到k,直接return 0
如果>=k我们就分成左右两个节点
如果右节点的s <= k,直接进右儿子
否则 k-=右儿子的s,进入左儿子
(有点像主席树)

我们在这里学到了一个新知识,

建立权值线段树查找第k大的时候
需要记录一下区间内的元素个数,
进行类似主席树的查找

tip

注意:L和R数组生成完之后,
如果某个布娃娃的忍耐度上限小于下限,那么交换它的上限和下限
然而第一次写的时候,我是一边写一边换的,jj

将P排序时,要保存一下原先的排名
因为原先的排名就是查找是需要用的k

我又犯了个zz的错误,
第i个布娃娃想知道喜欢它的布娃娃中,魅力值第i大的布娃娃的魅力值是多少
要找的是第k**大**

爆炸oj日常爆炸

这里写代码片
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>using namespace std;const int mod=19921228;
const int N=100010;
struct node{int x,y,ff;
};
node li[N*3];
int Padd,Pfirst,Pmod,Pprod,Cadd,Cfirst,Cmod,Cprod,Ladd,Lfirst,Lmod,Lprod,Radd,Rfirst,Rmod,Rprod;
int L[N],R[N],C[N],n,tot=0;
struct nd{int l,r,ml,mr,s;
};
nd t[N<<3];
struct po{int x,id;
};
po P[N];int cmp(const node &a,const node &b)
{if (a.x!=b.x) return a.x<b.x;else return a.ff<b.ff;  //先删后加
}int cmp2(const po &a,const po &b)
{return a.x<b.x;
}void update(int bh)
{t[bh].s=t[bh<<1].s+t[bh<<1|1].s;
}void build(int bh,int l,int r)   //权值线段树(魅力值C)
{t[bh].l=l; t[bh].r=r;t[bh].ml=C[l]; t[bh].mr=C[r];if (l==r) return;int mid=(l+r)>>1;build(bh<<1,l,mid);build(bh<<1|1,mid+1,r);
}void add(int bh,int mb,int val)
{if (t[bh].l==t[bh].r) {t[bh].s+=val;return;}int mid=(t[bh].l+t[bh].r)>>1;if (mb<=mid) add(bh<<1,mb,val);else add(bh<<1|1,mb,val);update(bh);
}int ask(int bh,int k)
{if (t[bh].s<k) return 0;if (t[bh].l==t[bh].r) return t[bh].ml;if (t[bh<<1|1].s>=k) return ask(bh<<1|1,k);else return ask(bh<<1,k-t[bh<<1|1].s);
}int main()
{scanf("%d",&n);scanf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",&Padd,&Pfirst,&Pmod,&Pprod,&Cadd,&Cfirst,&Cmod,&Cprod,&Ladd,&Lfirst,&Lmod,&Lprod,&Radd,&Rfirst,&Rmod,&Rprod);P[1].x=Pfirst%Pmod; C[1]=Cfirst%Cmod; P[1].id=1;L[1]=Lfirst%Lmod; R[1]=Rfirst%Rmod;for (int i=2;i<=n;i++){P[i].x=(P[i-1].x*Pprod+Padd+i)%Pmod; C[i]=(C[i-1]*Cprod+Cadd+i)%Cmod; P[i].id=i;L[i]=(L[i-1]*Lprod+Ladd+i)%Lmod; R[i]=(R[i-1]*Rprod+Radd+i)%Rmod;}for (int i=1;i<=n;i++){if (L[i]>R[i]) swap(L[i],R[i]);tot++; li[tot].x=L[i]; li[tot].y=C[i]; li[tot].ff=1; tot++; li[tot].x=R[i]+1; li[tot].y=C[i]; li[tot].ff=-1; }sort(li+1,li+1+tot,cmp);sort(C+1,C+1+n);sort(P+1,P+1+n,cmp2);build(1,1,n);int j=1;int ans=0;for (int i=1;i<=n;i++){while (li[j].x<=P[i].x)add(1,li[j].y,li[j].ff),j++;ans+=ask(1,P[i].id);ans%=mod;}printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/wutongtong3117/p/7673317.html

bzoj2161 布娃娃相关推荐

  1. unity3d布娃娃2

    没事就看了一下布娃娃,布娃娃一般是做人物角色的死亡效果的,我之前按着教程绑定并且把人物y轴拉高了,但是人物一直不下落,弄了半天我把人物上面的动画去掉了,人物就掉下来了,呵呵,很逼真的~~~~~一下也是 ...

  2. unity3d中布娃娃系统

    转自: http://forum.mirax.com.tw/unity/viewtopic.php?f=133&t=221 关于unity3d中布娃娃系统使用的教程不多,下面是一篇比较详细基础 ...

  3. 【转载】Ragdoll布娃娃组件

    原文地址:Ragdoll布娃娃组件 作者:RayYang 因为自己瞎弄着玩的时候,弄了一个出来,好像没见过有人说过关于布娃娃组件的,分享给大家,希望大家喜欢! 首先我们先要有一个3DMax做的人物模型 ...

  4. 两分钟学会Unity3D布娃娃的使用

    在RPG游戏中,为了让人物的死亡更加真实,unity创建布娃娃系统,搞的跟真的一样,尼玛我差点就相信那是真的了. 1.首先打开unity,创建地形,导入已经准备好的人物模块. 2.project下选中 ...

  5. Unity3D教程:布娃娃系统

    首先,将你3Dsmax的角色和Bipes汇出成FBX档,设定如下即可.(注意不可以有中文路径喔否则无法正确汇出) 打开Unity3D, 可以看见我的场景内只有:摄影机.人物(Man).灯光.地板. 在 ...

  6. Unity 布娃娃插件Ragdoll Mecanim Mixer入门使用介绍以及一些坑

    1.入门使用主要两个脚本 RagdollConstructor 主要配置角色Ragdoll 的数据和每个关节的碰撞体 RamecanMixer 对布娃娃系统物理效果的控制 相对比unity自带的布娃娃 ...

  7. 游戏开发中的物理之布娃娃系统

    游戏开发中的物理之布娃娃系统 介绍 设置布娃娃 创造物理骨骼 清理骨架 碰撞形状调整 关节调整 模拟布娃娃 碰撞层和遮罩 介绍 从3.1版开始,Godot支持布娃娃物理.Ragdolls依靠物理模拟来 ...

  8. Android版as布娃娃系统zip,布娃娃摧毁一切

    布娃娃摧毁一切(Destroy It All! With BLOOD!)是款3D风格的休闲游戏,玩家可以使用各种武器来破坏雕塑,找到他们的弱点,一次完成破坏.石头.炸弹.手榴弹都可以,逼真的物理效果, ...

  9. 布娃娃物理系统(英文:ragdoll physics)

    布娃娃物理系统(英文:ragdoll physics)是用在游戏的物理引擎中代替传统静态动画的可变性角色动画系统. 简介[] 在早期电脑游戏中,开发者通过手工制作一组按动作顺序的角色图像,并接连显示出 ...

最新文章

  1. loadrunner脚本设计:检查点(断言)及web_submit_data函数使用示例
  2. [react] 你知道的react性能优化有哪些方法?
  3. 【Linux】【Services】【Cache】使用Sentinel搭建高可用Redis
  4. 63. (FileInputStream)输入字节流
  5. 使用VS2017和Qt编译OpenCV
  6. PMP培训内容有哪些?
  7. SPDY协议 - v3
  8. 基于单片机的有害气体/空气质量监测系统设计(#0422)
  9. ENL3010 浪涌电流测试系统
  10. Redis 源码解析(8) AOF持久化
  11. [血泪整理]为何加载EDEM和FLUENT耦合接口显示ERROR126
  12. ArtWork+并查集二维
  13. java集成kettle 9.2.0开发
  14. MySQL子查询的优缺点_浅谈mysql的子查询
  15. 怎么提高android播放器的网络带宽,使用GSYVideoPlayer增加显示实时网速
  16. linux查询日志命令加过滤,日志查看技巧之筛选[linux命令集][排查篇]
  17. 人生感悟--条条经典
  18. 假设检验之z-检验,t-检验,卡方检验
  19. 2020年粮食收成如何,卫星遥感交答卷
  20. 黄陈晨是我最重要的决定

热门文章

  1. blob jdbc mysql,JDBC能否处理Blob和Clob?
  2. 基于python的系统构建_利用python构建一个简单的推荐系统
  3. basler相机 ip linux,Linux环境中连接Basler相机(Pylon软件的安装),ROS环境中连接Basler相机...
  4. 【thymeleaf】Access to request parameters is forbidden in this context
  5. 【weblogic】部署jfinal编写的应用
  6. 在linux+nginx+mysql+php环境下安装 phpmyadmin
  7. 舞力全开加速_国行舞力全开评测:丝滑得不像是育碧服务器!
  8. mysql+br_mysql有哪几种索引
  9. python2和python3关系_升级python2至python3解决依赖关系
  10. 50个linux指令,每天学一个 Linux 命令(50):date