哈希表以及在结构体里乱搞....

哈希表(csp-s模拟测试53 v)

struct map_hash{
       struct node{int to,n;double val;int len;}e[31000001];
       int tot=0;
       int head[MAXN];int len=0;
       double &operator[](int state){
              int st=state*len%mod+1;
              for(int i=head[st];i;i=e[i].n){
                  if(e[i].to==state&&e[i].len==len)
                  return e[i].val;
              }
              e[++tot].to=state;
              e[tot].val=-1.0;
              e[tot].len=len;
              e[tot].n=head[st];
              head[st]=tot;
              return e[tot].val;
       }
}f;

二元组加和和比较大小

struct node{
    int fir;int sec;
    friend node operator +(node a,node b){
        return (node){a.fir+b.fir,a.sec+b.sec};
    }
};
inline node minn(node a,node b){
    if(a.fir==b.fir)return a.sec<b.sec?a:b;
    return a.fir<b.fir?a:b;
}

原文地址:https://www.cnblogs.com/Wwb123/p/11607131.html

时间: 2024-08-03 10:06:59

哈希表以及在结构体里乱搞....的相关文章

读陈浩的《C语言结构体里的成员数组和指针》总结,零长度数组

原文链接:C语言结构体里的成员数组和指针 复制如下: 单看这文章的标题,你可能会觉得好像没什么意思.你先别下这个结论,相信这篇文章会对你理解C语言有帮助.这篇文章产生的背景是在微博上,看到@Laruence同学出了一个关于C语言的题,微博链接.微博截图如下.我觉得好多人对这段代码的理解还不够深入,所以写下了这篇文章. 为了方便你把代码copy过去编译和调试,我把代码列在下面: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <stdio.h>

宏定义放在结构体里

#include<stdio.h> struct node { #define Max(a,b) a>b?a:b//个人感觉宏定义放在结构体里和放在放在最上面是没有区别的,可能是为了读代码方便 int x,y; }; struct node2 { int x,y; }; int main() { node a; node b; scanf("%d%d",&a.x,&a.y); scanf("%d%d",&b.x,&b

C语言结构体声明中冒号的使用(占位符) &amp; C结构体的乱序初始化

有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可.为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为"位域"或"位段".所谓"位域"是把一个字节中的二进位划分为几 个不同的区域,并说明每个区域的位数.每个域有一个域名,允许在程序中按域名进行操作.这样就可以把几个不同的对象用一个字节的二进制位域来表示.一.位 域的定义和位域变量的说明位域定义与

C语言结构体里的成员数组和指针

struct test{ int i; char *p; }; struct test *str; int a = 1; char *b = "ioiodddddddddddd"; str = (struct test *)malloc(sizeof(struct test));//结构体指针不为null str->i = a; str->p = b; printf("%s\n",str->p); //输出ioiodddddddddddd retu

c结构体里的数组与指针

/* 訪问成员数组名事实上得到的是数组的相对地址.而訪问成员指针事实上是相对地址里的内容 */ struct buf_str { int length; char buf[0]; }; struct foo { buf_str* pbuf; }; void test_funny() { foo f = {0}; printf("%x\n", f.pbuf); printf("%x\n", &f.pbuf->length); printf("%

结构体里的“位域”(bit-field)结构

首先看一个题目: 1 #include <iostream> 2 using namespace std; 3 #include <string.h> 4 typedef struct AA{ 5 int b1:5;//第一个字节的低5位,即b0:b4 6 int b2:2;//b5:b2 7 }AA; 8 9 int main(int argc, char** argv) { 10 AA aa; 11 char cc[100]; 12 strcpy(cc,"012345

语言中结构体变量和结构体类型的定义

1.结构体类型定义 定义方式1: Typedef struct  LNode {    int  data;  // 数据域    struct LNode   *next;  // 指针域 } *LinkList; 定义方式2: struct  LNode {    int  data;  // 数据域    struct LNode   *next;  // 指针域 }: Typedef struct  LNode  *LinkList; 以上两个定义方式是等价的,是将*LinkList定义

深入Java基础(四)--哈希表(1)HashMap应用及源码详解

继续深入Java基础系列.今天是研究下哈希表,毕竟我们很多应用层的查找存储框架都是哈希作为它的根数据结构进行封装的嘛. 本系列: (1)深入Java基础(一)--基本数据类型及其包装类 (2)深入Java基础(二)--字符串家族 (3)深入Java基础(三)–集合(1)集合父类以及父接口源码及理解 (4)深入Java基础(三)–集合(2)ArrayList和其继承树源码解析以及其注意事项 文章结构:(1)哈希概述及HashMap应用:(2)HashMap源码分析:(3)再次总结关键点 一.哈希概

从C过渡到C++须注意的几个知识点(结构体、引用、重载运算符)

一.结构体和类(class) 下面一个使用结构体类型的例子 1 #include <iostream> 2 using namespace std; 3 struct Point{ // 声明Point结构体类型 4 double x; // 成员变量,没有使用private和public时系统默认为公有类型成员变量 5 double y; 6 }; 7 int main() 8 { 9 Point p; // 定义的p在c里称为结构体变量 10 p.x = 3.2; // 因为x是公有类型可