常用代码技巧--新手区(不定期更新)

1.结构体的一些使用

  以前用结构体,定义函数都是裸的

using namespace std;
struct node {int x};
node t;//定义

  后来看到各位神犇都是这样装逼的

using namespace std;
struct node
{
    int x;
    node(){}//常定义函数
    node(int x):x(x){}//方便定义
};
node t;//常定义
node x=node(tmp);//方便定义

2.链表的使用

  以前老师教我们vector大法,从此稀疏图空间再也不用怕.

#include<stdio.h>
using namespace std;

struct edge
{
    int from;
    int to;
    int len;
    edge(){}
    edge(int from,int to,int len):from(from),to(to),len(len){}
}//参数设定

void insert(int from,int to,int len)
{
    n[from].push_back(edge(from,to,len));
    n[to].push_back(edge(from,to,len));
}//插入

for(int i=0;i<n[i].size();i++)
{}//使用

  后来被一道POJ的LCA题目(Housewife Wind (POJ No.2763))给搞了,从此用上静态链表,时间也不用怕

using namespace std;

struct edge
{
    int from;
    int to;
    int len;
    int next; //类似于指针
    edge()[}
    edge(int from,int to,int len,int next):from(from),to(to),len(len),next(next){}
}; 

int cnt;       //全局空间位置(指向最后一个被利用的空间)
int head[maxn];//每个点所连边的首地址
void insert(int from,int to,int len)
{
    n[++cnt]=edge(from,to,len,head[x]);
    head[x]=cnt;
    n[++cnt]=edge(from,to,len,head[y]);
    head[y]=cnt;
    //每次都给新的边一个新的空间,并传入之前的首地址作为next指针
    //并更改首地址
}    for(int i=head[x];i;i=n[i].next){}//使用

3.unique函数的使用(离散化大法,去重大法)

  先来介绍一下unique函数

  algorithm中的函数,作用是将一个数据结构中指定区间(首地址,尾地址)的所有相邻相同元素都挪到这个结构的后面并返回处理后不重复区间的最后一个位置

  例如 a[6]=1 1 3 2 5 2

    对于这个数组使用unique(a,a+6);

    unique会将1 1这个连续重复排列消除,将后者移到数组末端

    2虽然出现了两次,但是不连续出现,所以不做处理

    数组变成 1 3 2 5 2 1 并返回最后一个地址,即a+5

  看看两种由此得来的简洁方法

  1)离散化大法

    

#include<algorithm>
using namespace std;
时间: 2024-08-27 11:32:04

常用代码技巧--新手区(不定期更新)的相关文章

PHP常用代码大全(新手入门必备)

发布:dxy 字体:[增加 减小] 类型:转载 PHP常用代码大全(新手入门必备),都是一些开发中常用的基础.需要的朋友可以参考下. - - 1.连接MYSQL数据库代码 <?php $connec=mysql_connect("localhost","root","root") or die("不能连接数据库服务器: ".mysql_error()); mysql_select_db("liuyanben&q

常用算法设计和优化策略(本蒟蒻不定期更新)

常用算法设计和优化策略(本蒟蒻不定期更新) 下面是紫书上讲的常用算法设计策略和优化策略: 分治法:将问题分成相同的独立子问题求解.拆分出的问题必须有最优子结构性质(子问题求出的是最优解) 动态规划.本质是:对于一个问题,通过划分阶段,定义状态与状态间的关系,来分解问题.利用单阶段问题之间的联系,或者同一阶段状态之间的联系,一个一个阶段往下决策,最终解决问题. 拆分出的问题必须满足最优子结构性质和无后效性(当前阶段以前的状态不会影响以后的状态,只与当前阶段有关).动归的目的是避免重叠子问题.递推和

Eclipse中的快捷键快速生成常用代码(例如无参、带参构造,set、get方法),以及Java中重要的内存分析(栈、堆、方法区、常量池)

Eclipse中的快捷键快速生成常用代码(例如无参.带参构造,set.get方法),以及Java中重要的内存分析(栈.堆.方法区.常量池) 以上就是Eclipse中的快捷键快速生成常用代码(例如无参.带参构造,set.get方法),以及Java中重要的内存分析(栈.堆.方法区.常量池)的全部内容了,更多内容请关注:CPP学习网_CPP大学 本文固定链接:CPP学习网_CPP大学-Eclipse中的快捷键快速生成常用代码(例如无参.带参构造,set.get方法),以及Java中重要的内存分析(栈.

godot新手教程2[godot常用代码用法]

Godot概念: 在godot内,使用的语言是GDScript,大部分代码风格是和python一样. 在GDScript内代码段结束是换到下一行即可,不需要也不能添加”;”号,(注意:代码段结束后不能在同一行继续书写另外的代码行”#”后面的除外). (print()在func _ready函数内)函数结束时需要在下一排写上”pass”每一个函数圈套内的代码段前面都要比上层函数多四个空格或一个tab键 Godot常用代码: Print(“学习文档”):         #输出类 Print()会在

Android Studio常用操作技巧

这段时间一直在用Android Studio做一些Demo的开发,一开始从Eclipse中转向这个开发工具,各种不适应,希望此博文可以一直更新,还有网友可以分享出自己方便更好更快开发的一些技巧. 首先我讲一些经常用到的快捷键吧,网上很多都只说一个大概,很模糊,也不知道什么时候才会用到.我们尽量让这篇博文有作用而不是纯粹的Copy吧! 虽然说Android Studio可以直接一键把所有快捷键设置成Eclipse的快捷键,但是想到你身边的同事,有可能不一定会设置成Eclipse,这样有的时候你如果

85种网站常用JavaScript技巧

40+45种网站常用Javascript技巧转载自网络,地址不详. 1. oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键 <table border oncontextmenu=return(false)><td>no</table> 可用于Table 2. <body onselectstart="return false"> 取消选取.防止复制 3.

js常用代码大全

Javascript常用代码大全 //打开模式对话框 <body><script language=javascript> function doSelectUser(txtId){ strFeatures="dialogWidth=500px;dialogHeight=360px;center=yes;middle=yes ;help=no;status=no;scroll=no"; var url,strReturn; url="selUser.a

ListView常用优化技巧(Android群英传)

内容是博主照着书敲出来的,博主码字挺辛苦的,转载请注明出处,后序内容陆续会码出. 前言:ListView--列表,它作为一个非常重要的显示方式,不管是在Web中还是移动平台中,都是一个非常好的.不开或缺的展示信息的工具.在Android中,ListView控件接管了这一重担,在大量的场合下,我们都需要使用这个控件.虽然在Android 5.X时代,RecyclerView在很多地方都在逐渐取代ListView,但ListView的使用范围依然非常的广泛,它这万年老大哥的地位也不是轻易就能撼动的.

[Android新手区] SQLite 操作详解--SQL语法

该文章完全摘自转自:北大青鸟[Android新手区] SQLite 操作详解--SQL语法  :http://home.bdqn.cn/thread-49363-1-1.html SQLite库可以解析大部分标准SQL语言.但它也省去了一些特性并且加入了一些自己的新特性.这篇文档就是试图描述那些SQLite支持/不支持的SQL语法的.查看关键字列表. 如下语法表格中,纯文本用蓝色粗体显示.非终极符号为斜体红色.作为语法一部分的运算符用黑色Roman字体表示. 这篇文档只是对SQLite实现的SQ