为了让编译器更好地优化循环,应该尽量让循环中减少判断,方法之一是将判断语句整合进表达式。还是这个例子:
for (int i = 0; i < 1000*10; i++)
{
sum += data[i/1000][i%10];
}
假如我们需要加一个判断,只有非负整数才需要作求和运算:
for (int i = 0; i
{
if (data[i/10...
分类:
编程语言 时间:
2014-05-13 23:01:28
阅读次数:
324
给了你n个村庄把,然后m条路径,q个询问,问你两个点之间的最短距离
分析:由于按照题意来说本图是没有环的,所以求a,b的最近公共祖先 到他们的各自的距离之和就是 那个他们的最短路啦,用的是tarjan来做的,我的方法定义了一个dis数组来随时记录路径的长度,其它大神各有自己的神奇之法
#include
#include
#include
#include
#include
#inclu...
分类:
其他好文 时间:
2014-05-13 07:48:39
阅读次数:
303
堆排序分为两个阶段:1、将原始数组组装成一个堆;2、从堆顶逐个取出元素并得到排序结果。(如果是最大堆,则是重复删除最大元素,然后从后往前放入到数组。)
用sink()只需扫描数组中的一半元素。
堆排序可以不需要额外的空间,最优的利用空间和时间。可用于嵌入式系统。缺点:无法利用缓存,影响缓存命中。...
分类:
其他好文 时间:
2014-05-13 05:43:27
阅读次数:
207
whileCONDITION;dostatementdone进入循环:条件满足退出循环:条件不满足untilCONDITION;dostatment...done#!/bin/bash#read-p"Inputsomething:"STRINGwhile[$STRING!=‘quit‘];doecho$STRING|tr‘a-z‘‘A-Z‘read-p"Inputsomething:"STRINGdone#!/bin/bash#read-p"Inputsomething:..
分类:
系统相关 时间:
2014-05-13 03:58:53
阅读次数:
343
Linux0.11,内存最多支持16M,其中0-1M是内核去,实际内核使用是从0-640k,从640k-1M的区域,分别是显存,bios区域,高速缓冲区,1-16M是是主内存区域。在内存内核区域当中,从0开始,首先存放的是页目录表,占4kb,之后的3个是页表,每个4kb,每个页表包含一个数组,每个数组共..
分类:
系统相关 时间:
2014-05-13 03:39:16
阅读次数:
419
集合基础知识数组:长度固定,可存基本数据和对象。集合:只能放对象,不固定。容器也有共性,不断抽取成一个体系,集合框架。参阅顶层创建底层。顶层是collection。collection里有两个常见的接口,List和Set。常见集合有Arraylist,linkedlist,vector,hashSetTreeSet.为什么..
分类:
其他好文 时间:
2014-05-13 03:35:07
阅读次数:
371
环境windows系统需求通过ping监控网络状态解决DOS中添加一个loop循环,以便监控ping状态,并命名一个文件名,注意根据需要给log.txt添加目录。:topecho%time%>>log.txtping-n1IP Address|findstr"TTL">>log.txtgototop注意:命名的文件名称一定不可..
分类:
其他好文 时间:
2014-05-13 03:23:55
阅读次数:
391
分享两个使用函数:php循环删除目录及目录下的文件和仅删除指定目录下的文件,不删除目录文件夹!代码一:php循环删除目录及目录下的文件<?php//循环删除目录和文件函数functiondelDirAndFile($dirName){if($handle=opendir("$dirName")){while(false!==($item=readdir($han..
分类:
Web程序 时间:
2014-05-13 01:47:25
阅读次数:
410
在字符串中,寻找第一个只出现一次的字符,如str=“abddgdbacdd", 结果是c
三种方法:
1. 使用字符字典数组,每个元素是一个结构体,第一个字段记录字符出现的次数,第二个字段记录该字符在字符串中第一次出现的位置,
先遍历一遍字符串,对字符字典数组赋值,然后遍历一遍字符字典数组,找到第一个字段为1,且位置最小的字符即为需要寻找的字符。如下:
struct node{
int...
分类:
其他好文 时间:
2014-05-12 23:39:49
阅读次数:
422
给了你n,然后n个数字在一个数组中,接下来m个询问,每个询问三个数字 t,x,y,若t==0,那么修改区间[x,y]的每一个值,变为原来每个位置上的数 开根号取整,若t==1,那么对区间[x,y]求和
由于n,m,很大,所以树状数组铁定超时,若直接用线段树来做区间修改,那么也是超时,这类题目没别的方法了,静心剪枝,发现题目给的数据范围为2^63,有没有发现,2^63开根号 绝对不需要开1...
分类:
其他好文 时间:
2014-05-12 23:01:59
阅读次数:
479