离散化学习心得
来源:互联网 发布:ipv4和ipv6无网络访问 编辑:程序博客网 时间:2024/04/28 23:02
例如,poj2528,是个线段树问题,但是由于数据量非常大,所以如果不离散化的话就一定会MLE,所以我们这里要用到离散化。
就拿2528的离散化来说吧,因为我们只需要他的左右支点坐标,他就是把每个点映射在坐标上,然后将他们排序,排序过后就分别给他们赋值(注意,只能给不同的赋值,相同的赋值一次就好了),这样原来很大的值就被缩小了:
就2528来说,离散化操作的代码如下:
a[mx ] [2] //a[i][0],a[i][1]分别表示左右节点;
struct ss
{
int weizhi; //为他标上一个序号
int point; //输入的值
}san[mx*4]; // 结构体,用于存储输入的数据
bool cmp(ss a1,ss a2)
{
return a1.point<a2.point;
}
for(i=0;i<n;i++)
{
scanf("%d %d",&a[i][0],&a[i][1]);
san[i*2].point=a[i][0];
san[i*2+1].point=a[i][1];
san[i*2].weizhi=-(i+1); //左支记为 --(i+1);
san[i*2+1].weizhi=i+1;
}
sort(san,san+n*2+1,cmp); //将他按大小顺序排序
int temp=san[0].point;
int cnt=1; //计算不同点的个数
for(i=0;i<n*2;i++)
{
if(temp!=san[i].point)
{
cnt++;
temp=san[i].point;
}
if(san[i].weizhi<0)
{
a[-san[i].weizhi-1][0]=cnt;
}
else a[san[i].weizhi-1][1]=cnt;
}
- 离散化学习心得
- 离散化学习
- Java对象序列化学习心得------对象…
- java 串行化学习
- testng参数化学习
- .NET序列化学习
- Android插件化学习
- java 序列化学习
- java 序列化学习
- html5语义化学习
- 正则化学习总结
- iOS组件化学习
- java序列化学习
- 场景化学习 git
- iOS 组件化学习
- Android 插件化学习
- 前端语义化学习
- Redis持久化学习
- SQL语句-创建表
- 解决 linux下编译.sh文件报错 “[: XXXX: unexpected operator” 问题
- Centos 7 安装 pptp vpn
- VB API手册 索引 目录
- 利用Hibernate配置文件生成数据库
- 离散化学习心得
- [ACM] sdut 2878 Circle (高斯消元)
- hdu3555(数位DP)
- java 递归实现循环比赛日程
- UBOOT 内存映射以及修改问题
- shell在线中文手册abs,shell中文教程,shell中文教程 - 脚本之家
- java泛型受限
- (转)运维经验分享:Hadoop管理员的十个最佳实践
- redis PHP非常有用的文章