map容器结构体离散化
小数坐标离散化:
#include"string.h"
#include"stdio.h"
#include"iostream"
#include"algorithm"
#include"queue"
#include"stack"
#include"stdlib.h"
#include"map"
#include"string"
#include"math.h"
#define inf 10000000
#define INF 0x3f3f3f3f
const double PI=acos(-1.0);
const double r2=sqrt(2.0);
const int M=100;
const int N=1010*502*2;
const double g=9.8;
#define eps 1e-10
using namespace std;
struct node
{
double x,y;
node(){}
node(double xx,double yy)
{
x=xx;
y=yy;
}
bool operator<(const node &b)const
{
if(fabs(x-b.x)<eps)
return y<b.y;
else
return x<b.x;
}
};
int main()
{
int n,i;
while(scanf("%d",&n)!=-1)
{
map<node,int>mp;
int cnt=0;
for(i=1;i<=n;i++)
{
node e;
scanf("%lf%lf",&e.x,&e.y);
if(!mp[e])
mp[e]=++cnt;
}
double a,b;
while(scanf("%lf%lf",&a,&b)!=-1)
{
node t(a,b);
printf("%d\n",mp[t]);
}
}
}
整数二维坐标离散化:
#include"string.h"
#include"stdio.h"
#include"iostream"
#include"algorithm"
#include"queue"
#include"stack"
#include"stdlib.h"
#include"map"
#include"string"
#include"math.h"
#define inf 10000000
#define INF 0x3f3f3f3f
const double PI=acos(-1.0);
const double r2=sqrt(2.0);
const int M=100;
const int N=1010*502*2;
const double g=9.8;
#define eps 1e-10
using namespace std;
struct node
{
int x,y;
node(){}
node(int xx,int yy)
{
x=xx;
y=yy;
}
bool operator<(const node &b)const
{
if(x==b.x)
return y<b.y;
else
return x<b.x;
}
};
int main()
{
int n,i;
while(scanf("%d",&n)!=-1)
{
map<node,int>mp;
int cnt=0;
for(i=1;i<=n;i++)
{
node e;
scanf("%d%d",&e.x,&e.y);
if(!mp[e])
mp[e]=++cnt;
}
int a,b;
while(scanf("%d%d",&a,&b)!=-1)
{
node t(a,b);
printf("%d\n",mp[t]);
}
}
}
同理三维多维也可以:
#include"string.h"
#include"stdio.h"
#include"iostream"
#include"algorithm"
#include"queue"
#include"stack"
#include"stdlib.h"
#include"map"
#include"string"
#include"math.h"
#define inf 10000000
#define INF 0x3f3f3f3f
const double PI=acos(-1.0);
const double r2=sqrt(2.0);
const int M=100;
const int N=1010*502*2;
const double g=9.8;
#define eps 1e-10
using namespace std;
struct node
{
int x,y,z;
node(){}
node(int xx,int yy,int zz)
{
x=xx;
y=yy;
z=zz;
}
bool operator<(const node &b)const
{
if(z==b.z)
{
if(y==b.y)
return x<b.x;
else
return y<b.y;
}
else
return z<b.z;
}
};
int main()
{
int n,i;
while(scanf("%d",&n)!=-1)
{
map<node,int>mp;
int cnt=0;
for(i=1;i<=n;i++)
{
node e;
scanf("%d%d%d",&e.x,&e.y,&e.z);
if(!mp[e])
mp[e]=++cnt;
}
int a,b,c;
while(scanf("%d%d%d",&a,&b,&c)!=-1)
{
node t(a,b,c);
printf("%d\n",mp[t]);
}
}
}
map容器结构体离散化的更多相关文章
- map中结构体做关键字的注意事项
序: 今天做一道题,由于递归函数比较恶心,如果用记忆化搜索,数据范围极大却又用不全(二维数组存的话直接炸).所以决定干脆使用stl::map存储(反正有O2优化),但是执行insert的时候,编译器却 ...
- go 数组(array)、切片(slice)、map、结构体(struct)
一 数组(array) go语言中的数组是固定长度的.使用前必须指定数组长度. go语言中数组是值类型.如果将数组赋值给另一个数组或者方法中参数使用都是复制一份,方法中使用可以使用指针传递地址. 声明 ...
- c++中数据表如何转成业务实体--map和结构体的相互转换
应用场景:如何把数据库表中的一行转换成一个业务实体结构体,c#和java中都有实体框架,表到实体的转换很方便,c++中缺少这些框架,但是有一些折中的办法去做.其实问题的本质是:map如何转成结构体. ...
- (三十八)golang--json(对切片、map、结构体进行序列化)
JSON(javascript object notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成.key-val JSON是在2001年开始推广的数据格式,目前已 ...
- std::map使用结构体自定义键值
使用STL中的map时候,有时候需要使用结构题自定义键值,比如想统计点的坐标出现的次数 struct Node{ int x,y; }; ...... map<Node,int>mp; m ...
- C:结构体
结构体 构造类型:就是有基本的类型组成的 1.结构体 结构体是一种自定义的数据类型 和 int float 是一样的都可以定义变量 数组 只能存放一种类型的容器 结构体 可以存放多种数据类型 ...
- 用set、map等存储自定义结构体时容器内部判别各元素是否相同的注意事项
STL作为通用模板极大地方便了C++使用者的编程,因为它可以存储任意数据类型的元素 如果我们想用set与map来存储自定义结构体时,如下 struct pp { double xx; double y ...
- Qt中文件操作遇到的(变量,容器,结构体)
咳咳!总结了一下我在使用QT文件操作时所用到的,再接再厉!再接再厉!! 1.保存到文件: QFile file("test.txt"); if (!file.open(QIODev ...
- c++ STL map 结构体
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...
随机推荐
- 给border在加上图片
.div_top .div_menu li a:hover{ border:2px; height:24px; border-image:url(../img/bg-line-1.png) 0 0 7 ...
- 关于Java获取文件路径的几种方法
第一种:File f = new File(this.getClass().getResource("/").getPath()); System.out.println(f); ...
- ViZDoom安装
官网:https://github.com/mwydmuch/ViZDoom/blob/master/doc/Building.md 环境:ubuntu16, python2.7, Anaconda2 ...
- postman从入门到精通
今天总监让我给测试同事们培训postman,使用过postman的朋友应该知道,这个简直就是前后端接口调试神器.根据平时的经验以及自己到网上看了相关的帖子,对于postman又有了新的认识. post ...
- haproxy+tomcat实现负载均衡以及session共享(linux centos7环境)
一.安装HAProxy 1.进入home目录,下载最新haproxy安装包. cd /home wget http://haproxy.1wt.eu/download/1.4/src/haproxy- ...
- MathType公式编辑器快捷键操作
快捷键操作是最常见的操作方式,MathType软件系统提供大量的快捷键操作供用户使用.使用MathType公式编辑器快捷键操作可节省大量的操作的时间,本教程将详解MathType快捷键操作. 放大或缩 ...
- error C2065: “m_Pic”: 未声明的标识符
public: CPicture m_Pic; 要写在头文件里! 而不能是cpp文件的public里!
- Navicat for Mysql 如何备份数据库
Navicat for Mysql 如何备份数据库 打开界面如下 打开自己的的数据库 点击需要备份的数据库名 未完!!! 文章来自:http://jingyan.baidu.com/article/f ...
- mysqldump备份时,--master-data选项的作用是什么?
需求描述: 今天在研究mysql的备份和恢复,使用mysqldump备份数据库时,用到--master-data选项, 在此,测试并记录选项的作用 测试过程: 1.不使用--master-data进行 ...
- 第四章 Spring.Net 如何管理您的类___让对象了解自己的容器
我们在开发中,经常需要让对象了解自己所在的容器的信息,例如,有时我们需要让对象知道,对象所在容器的引用是什么,或者是对象在容器中的名称是什么 .Spring.Net 中提供了两个接口,我们使用这两个接 ...