摘要: //插入void insert(char *s,char *s1){ for(int l=strlen(s),x=0,i=0;i<l;i++){ if(!trie[x].son[s[i]-'a'])trie[x].son[s[i]-'a']=++cnt; x=trie[x].son[s[i]-'a']; if(i==l-1)strcpy(trie[x].hash,s1); }}//查找int find(char *s){ for(int l=strlen(s),x=0,i=0;i<l;i++){ if(!trie[x].... 阅读全文
posted @ 2014-03-04 20:48 forever97 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 题解:在路边有一行树,给出它们的坐标和高度,先按X坐标排序。记录排名,记为rankx,再按它们的高度排序,记录排名,记为rankh。两颗树i,j的差异度为fabs(rankx[i]-rankx[j])*min(rankh[i],rankh[j])最后求出任异两颗树差异度的和。题解:首先,需要解决的是min(rh)的问题,对于这个问题,只要离散化之后按rh从大到小排序顺序求解即可,然后用树状数组维护之前出现rx比当前值小的个数与总和,那么同时就可以计算rx比当前大的个数和总和了,那么就可以依次计算出答案了。#include #include #include using namespace st 阅读全文
posted @ 2014-03-04 20:42 forever97 阅读(363) 评论(0) 推荐(0) 编辑