
stl
zhhx2001
这个作者很懒,什么都没留下…
展开
-
bzoj1208(set或splay,改天用它练splay的模板)
就是一个set的运用,同时熟悉了一下set的用法 这里介绍一下lower_boundlowe_bound在有序数组中二分查找,大于等于它最小的数的位置1通过--来找小于它的第一个数做这道题时也意识到:做完觉得对,肯定会有bug的,要以一种思考本质的方式审视自己的思路很有可能存在小的问题所以做完不要忙着交,检查检查再检查,让它成为习惯,一致于考场的发挥以免失误 #in原创 2016-07-09 19:46:50 · 823 阅读 · 0 评论 -
c++ operator的学习
priority_queue 对于基本类型的使用方法相对简单。他的模板声明带有三个参数,priority_queueContainer, Functional>Type 为数据类型, Container 为保存数据的容器,Functional 为元素比较方式。Container 必须是用数组实现的容器,比如 vector, deque 但不能用 list.STL里面容器默认用的是 vector.原创 2016-04-30 11:51:32 · 457 阅读 · 0 评论 -
c++字符小写转大写
小写转大写#include#include#include#includeusing namespace std;string s;int main(){ cin>>s; for (int i=0;i<s.length();i++) s[i]=toupper(s[i]); cout<<s; return 0;}原创 2016-04-27 22:07:44 · 2174 阅读 · 0 评论 -
c++需注意语法汇总
10字符串函数 stringCin,scanf 输入一个单词;Getline(cin,s);输入一行;string str;原创 2016-04-26 22:00:50 · 500 阅读 · 0 评论 -
c++ random_shuffle()
random_shuflle( a,a+n+1);生成一个前闭右开区间的随机序列,注意这里序列是需要附初始值的。并且并不只是数字,字母等也是可以的。 random_shuffle()定义在标准的头文件原创 2016-09-03 18:35:31 · 7658 阅读 · 0 评论 -
丑数usaco ,好吧,承认不会,承认今天好颓
对于一给定的素数集合 S = {p1, p2, ..., pK}, 来考虑那些质因数全部属于S 的数的集合。这个集合包括,p1, p1p2, p1p1, 和 p1p2p3 (还有其它)。这是个对于一个输入的S的丑数集合。注意:我们不认为1 是一个丑数。你的工作是对于输入的集合S去寻找集合中的第N个丑数。longint(signed 32-bit)对于程序是足够的(这告诉我还是用long原创 2016-05-22 09:47:02 · 382 阅读 · 0 评论 -
bzoj1216(堆,呵呵的模拟)
就是堆的应用,实现的时候会有点奇怪的技巧now作为当前时间,顺序枚举每一个进程的到来,注意在每一个进程来之前要处理完成前面的所有进程!注意放一个哨兵元素lev为-inf,rest为inf,防止bug,#include#include#include#include#include#includeusing namespace std;const int inf原创 2016-08-20 16:10:06 · 362 阅读 · 0 评论 -
bzoj1610(代码实现技巧+stl的一点运用)
n个点,求最多有多少个经过两点的直线,他们互相是不平行的。实际上就是要求有多少个不相同的斜率。double害怕被卡精度,所以这里通过排序,处理正反相同的情况,再gcd用pair最简比斜率来表示。 主要这里用最简比表示斜率,排序,和pair在这里灵活的使用,方法值得积累。 #include#include#include#include#include#includ原创 2016-09-10 22:57:00 · 433 阅读 · 0 评论 -
bzoj2151(贪心,stl->堆和pair
这题贪心解决问题的思想和方法值得学习。其实就是我们先去掉一个物品和它旁边的物品,然后加入一个新的“物品”,其权值为A[2]+A[4]-A[3],代表同时选2,4,删去3.这样,在选了3之后再选这个新物品,功效就相当于刚才所说的,把A[3]换成A[2]+A[4]。这两者是等效的,这种等效转化的思路,十分巧妙总结: ①我们在做题的过程中,可以先将它简化成一个较原创 2016-08-20 10:38:50 · 444 阅读 · 0 评论 -
codeforces 365
A:略B:给出n个点,所有的点要以1>2>3.....n>1,的连接道路成为一个环,这n个点当中有k个capital,这k个capital必须和所有的点有直接通道,每一个点有一个权值,每一条道路的权值为两端点u,v的权值之积。问总的权值之和先把每个点围成的环形的道路的值算出来,再枚举每一个capita,计算这个点和除了相邻点连接的路的权值之和,其实就是总权值减去当前点相邻点原创 2016-08-05 14:49:17 · 303 阅读 · 0 评论 -
bzoj3578(xor集合哈希+stl的利用)
用字符串读入字符,便于处理输入迭代器的利用,注意erase后不能直接++,--了#include#include#include#include#include#include#includeusing namespace std;typedef long long ll;int n,m,q;map mp;set s;set::iterator it;ll key原创 2016-07-21 11:43:07 · 615 阅读 · 0 评论 -
字符串hash判重/trie树判重(poj3007)
利用了c++ stl的优势1.s.erase(s.begin(),s.end());//set全部清空的方式2. memset(b2,0,sizeof(b2));//char数组全部清空 ,中间0表示ascall码#include#include#include#include#include#include#include#define debug(x) cou原创 2016-07-21 09:54:03 · 1728 阅读 · 0 评论 -
poj3277city,离散化+线段树 或 stl的multiset
#include#include#include#include#includeusing namespace std;typedef long long ll;struct aa{ int l,r,h;}a[4*100000+9];int n,nn;int x[100009],y[100009],h[100009];int q[100009];void build(i原创 2016-07-14 21:00:58 · 362 阅读 · 0 评论 -
第一场cf
我的第一场,虽然是教育厂,但还是留下做个纪念把第二题,给出n个数,求两数之和是2的幂次方的数对个数:这题最后想出了map,但是感觉自己弱到爆了,map用的方法不对,wa。。。。(这题我本来想卡时卡过去,可十万的数据范围直接不可能,一万都不好卡,100000根本不行,毕竟两层循环在那里了)#include#include#include#include#inc原创 2016-07-30 09:24:02 · 308 阅读 · 0 评论 -
bzoj1058无限TLE(人傻自带常熟大的splay)
T了5个点的splay好吧,突然发现方法好像错了,不过学了一个splay_tree结构体的定义#include#include#include#include#include#include#include#define debug(x) cout<<#x<<"="<<x<<endlusing namespace std;const int N=1500010;con原创 2016-07-24 21:36:14 · 939 阅读 · 0 评论 -
曾经不了解的set的知识
5.元素检索:find(),若找到,返回该键值迭代器的位置,否则,返回最后一个元素后面一个位置。 set s; set::iterator it; it=s.find(5); //查找键值为5的元素 if(it!=s.end()) //找到 cout原创 2016-04-26 21:59:17 · 279 阅读 · 0 评论