STL
左佥都御史
这个作者很懒,什么都没留下…
展开
-
Gym - 101196D -BFS+优先队列
你是一个翻译官,翻啊翻译官。 给定n,n个目标语言, 求你把英语翻译成其他语种的最小花费, 并且要求距离英语最近。。(经过一个第三方翻译,就是两层),直接翻译就是一层。由于第二个条件的限制,所以不是最短路啦。 但是在比赛的时候,我觉得可以先用dinic跑一下层数,然后再跑一下spfa,在判断是否为松弛操作的时候,加一个限制条件,那就是层数必须小。 但是很可悲的wa了。应该是有数据卡。 第原创 2017-03-27 21:20:42 · 311 阅读 · 0 评论 -
HDU5972-bitset的应用或者shift-and
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cstdlib>#include <bitset>using namespace std;const int maxn=1e6+50;char str[5*maxn];bitset<1005> s[20];bits原创 2017-06-12 21:38:19 · 257 阅读 · 0 评论 -
hdu1434-优先队列里对字符串排字典序-优先队列模拟
中文题意: https://vjudge.net/problem/HDU-1434 错的几次有点尴尬。。。。 输出的时候判空一下也挺好。万一卡这里呢。。 (虽然并没有) 说好了左偏树呢。。结果查不到,模板上也没有这种写法。。 就用优先队列瞎搞了。。。#include <iostream>#include <queue>#include <cstdlib>#include <cstd原创 2017-06-28 14:39:57 · 515 阅读 · 0 评论 -
51nod1163-优先队列-最高的奖励
地址http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1163#include <iostream>#include <string.h>#include <algorithm>#include<algorithm>#include <queue>#include <bits/stdc++.h>/*我开始的想法,是原创 2017-08-09 16:55:22 · 232 阅读 · 0 评论 -
HDU4546-优先队列|搜索-比赛难度
acm.hdu.edu.cn/showproblem.php?pid=4546 中文题意。 给定m个数,求这m个数组成的集合中第k小的数是多少。 首先,暴力这么多集合是不可行的, 可以从空集开始,维护一个集合,其结果由集合中最大的一个数和 其他数构成的前缀组成 那么在生成集合的过程中,有两种操作。1 抛弃其他数。最大那个数为总和,2 往后累加更大的。(见图示,图中a#include <原创 2017-08-11 18:55:06 · 277 阅读 · 0 评论 -
hdu6168-多校9&stl&模拟- Numbers
http://acm.hdu.edu.cn/showproblem.php?pid=6168 不说了。。too young。。 每次找最小的。然后删掉和a集合中每个数构成的和。 (能够保证每个数的配对都够) 开始用 muliset写的,erase全删除完了,。。发现了一个技巧,挺好用#include <bits/stdc++.h>using namespace std;vector<in原创 2017-08-22 19:13:22 · 335 阅读 · 0 评论 -
_STL使用技巧_(不定时更新)
1 关于取整的函数 坐标 math 用法: ceil(x)返回不小于x的最小整数值(然后转换为double型)。 floor(x)返回不大于x的最大整数值。 round(x)返回x的四舍五入整数值。 给个例子test.c:[cpp] view plain copy#include &lt;stdio.h&gt; #include &lt;math.h&gt; i...原创 2017-07-31 16:51:35 · 381 阅读 · 0 评论 -
hdu6181-启发式搜索A*|次短路模板|最短路枚举-Two Paths
acm.hdu.edu.cn/showproblem.php?pid=6181 我是用次短路板子做的。。初始化得多点不然得超时。 ①求次短路的思路是维护到达x点的最小距离和次小距离。(dij和spfa应该都可以,都做一下板子) ② 用A*,即启发式搜索,先求出F(X)即x点到目的点的代价,在求S(x),即初始点到x点的代价,然后找第k小的。用muliset或者优先队列都行,(multiset写原创 2017-08-28 12:39:42 · 444 阅读 · 0 评论 -
hdu6180-贪心&互不重叠的线段的组数-Schedule
http://acm.hdu.edu.cn/showproblem.php?pid=6180 贪心的策略是 让每份时间的间隔尽可能的小。 1 维护一个 multiset,里面放的是各个机器的最后运行时间。 然后每一个时间段,查找最近的比这个时间段时间小的 机器最后时间,如果没有的话,即所有的最后运行时间都比他的大,那么就再开一个机器,否则的话,把最近的那个机器时间给更新了,然后继续。#incl原创 2017-08-28 16:59:54 · 375 阅读 · 0 评论 -
Codeforces Round #430 (Div. 2)-搜索&STL-Ilya And The Tree
http://codeforces.com/contest/842/problem/C 给定一个树,树上每个点有一定价值。 这个点上的魅力值是 从1到这个点的路径 上的所有点价值的gcd。 你有一个操作,可以选择是否要把其中一个点的价值变成0。也就是不影响他的gcd。可以理解为每次求 一个点的魅力值时,都是独立的(也就是你在求一个点的时候,可以把一个点变成0,再求另一个点的魅力值时,可以选择其原创 2017-09-01 11:46:15 · 176 阅读 · 0 评论 -
hdu5918-kmp|队列模拟- Sequence I
https://vjudge.net/problem/HDU-5918 题意:给定两个序列,一个为主串,一个为模式串,问主串中 间隔长度为p一个一个取构成了p个子串,问你包含模式串的数量有多少个。。 思路:事后看来,直接kmp就行。。就是把那么多子串取出来而已。然后用一下kmp的板子。。这简直是模拟题。。。 当时我的想法就是把等于模式串的第一个数入队列,然后用优先队列一个一个找。后原创 2017-10-09 12:38:34 · 231 阅读 · 0 评论 -
zoj&2017CCPC秦皇岛站C-蛮力&erase细节&STL-Crusaders Quest
http://acm.zju.edu.cn/onlinejudge/showContestProblem.do?problemId=5613 应该不久就放题了吧qwq 给定9个血槽,有三种物品,每次可以把连续相同的物品抵消掉,但是只有把连续三个的物品抵消才有价值,问你用哪种方案,能够使获得的价值最大。 暴力就行,总有6种方案,维护一个最大值即可。 但是写的时候出了一点问题,我用vector存原创 2017-10-29 19:15:05 · 490 阅读 · 0 评论 -
Educational Codeforces Round 31-k叉哈夫曼&优先队列&好题-D. Boxes And Balls
http://codeforces.com/contest/884/problem/D 给定一个n。 然后是n个不同颜色的球的数目。 开始这些球都在第一个盒子里。 你有下面的操作方法 ① 把某一个不空盒子种的球拿出来。 ② 把这些球按颜色装到3个或者2个盒子里,不同颜色可以装在一起。 而每次这种操作的花费为 你第一个操作拿出的球的数目。 问你如何操作,能够使花费最小。一点都不显然,这原创 2017-11-01 11:56:39 · 323 阅读 · 0 评论 -
hdu5884-二分&k叉哈夫曼队列优化-Sort
https://vjudge.net/problem/HDU-5884 第一次遇见这种题。。然而却是板切题qwq 给你m个序列的长度,每次可以把k个排好序,然后合成一个,然后继续,知道所有的序列都排好序并且成为一个大长串串,每次的花费这k个长度的加起来的和。问你最小的k,可以使总花费不超过lim。 k叉哈夫曼,结论见我的上一个博客, 然后就二分+k叉,t了。 后来用各种读入挂,都是t。原创 2017-11-01 19:52:05 · 207 阅读 · 0 评论 -
HDU-5437-模拟-优先队列
以前模拟题总是不好好应对,看完题解就喵懂,正向思维就gg。 其实比赛的时候连题都没读懂,但是觉得应该是一个模拟。 关键就是根据钱和来的地方进行排序吧。 先输入,然后在根据他们来到的时间和金钱。 根据开门的次数确定吞吐数量。 有一个技巧,就是设定当第n个人来到时,设定应该进去的人数为n 这样就可以解决最后那些还没进去的人的去留问题了。感觉特别好, 不然还得保存当前进人的值。 加一个入栈原创 2017-06-11 20:40:02 · 275 阅读 · 0 评论 -
hdu5695-优先队列&拓扑排序-Gym Class
https://vjudge.net/problem/HDU-5695 第一次以为直接用优先队列就行。 报要求的数,优先级放在那个数后面 对于相同优先级的数,比较他们的大小,大的在前,小的在后 (因为大的在前可以保证这样子结果大) 。。 都没想到 拓扑排序那里面去。、如果这种关系出现了图形的结构,那么只用这种方法怎么行么。。 附上我的错误代码。。 aaa数组 ,我保存的,如果是一个数原创 2017-07-01 21:21:01 · 300 阅读 · 0 评论 -
hdu5477-模拟-A Sweet Journey
https://vjudge.net/problem/HDU-5477 给定len长度的路,有n个区间,n个区间内每米要花费 x,其他地方要获得n,行走的过程中不能为负。问你最少需要带多少能量。 模拟。注意对开头的处理。#include <bits/stdc++.h>using namespace std;vector<pair<int,int> >k;int main(){ int原创 2017-06-30 20:26:07 · 219 阅读 · 0 评论 -
Gym - 101196B Foosball Dynasty【模拟】
题意: 一种比赛,给定n个人 前n个分别是 白色进攻,黑色进攻,白色防守,黑色防守; 如果白色进攻得胜了,那么白方互换位置 黑方的防守方换人,进攻方变成防守方,新来一个人当进攻方 用队列模拟, 注意,传奇队的顺序是按照出场的前后顺序来的,我还以为是按照第一个是进攻方,第二个是防守方的。如果这样写的话,那么只要更换游戏一下就好了#include <cstdio>#include <cs转载 2017-03-28 21:18:57 · 383 阅读 · 0 评论 -
Aizu - ALDS1_3_C-list的使用-双向链表
挑战程序设计竞赛 上的题 list的练习题; 有一个地方卡了,在用迭代器找的时候,如果不用break就卡了。。 样例都过不了。。其实我感觉都差不多。 因为list是双向链表,不停止就没完没了。。。。 王阿川教授还说list方便删除和插入,但是如果查找的话,和数组几乎是一样的,链表的用处不大,不过可以用于其他数据结构的建立。。#include <iostream>#include <cst原创 2017-03-29 11:40:30 · 379 阅读 · 0 评论 -
hdu1702-简单stl运用
链接 https://vjudge.net/problem/HDU-1702 多组数据, 给一组,若是fifo,就用队列,filo就用栈; break和continue,搞迷糊了。。。#include <iostream>#include <queue>#include <stack>#include <cstdio>#include <cstdlib>#include <cstr原创 2017-03-29 11:43:44 · 268 阅读 · 0 评论 -
upper_bound初探
#include <iostream>#include <algorithm>#include <cstdio>using namespace std;bool cmp(const int &a,const int &b){ return a>b;//jiangxu}int main(){ int a[20]={10,20,30,30,30,40,50}; int原创 2017-03-22 17:47:44 · 969 阅读 · 0 评论 -
UVA11997:K Smallest Sums--stl
给定一个整数k,在给一个k*k的矩阵,然后每一行取一个元素,能生成 总共k*k个和,问最小的前k个和多少,倒数第一,倒数第二,倒数第k, 有一个性质要看到,那就是倒数第一的和的各部分,他的k-1行的元素,也是在k-1这个矩阵范围中最小的,所以,把每一行的所有最小的元素相加一定是倒数第一小,倒数第二小肯定是有一行中的倒数第二小的数代替了倒数第一行,成了第二小,并且一定是一个不是多个,是一个(假定矩阵原创 2017-03-29 20:57:19 · 208 阅读 · 0 评论 -
map初始化的两种方法
1 用普通的方法,同时赋值; 2 用pair类型#include <iostream> #include <map> #include <string> using namespace std; int main() { map<string, int> map1; map1[string("tttt")] = 1; map1[stri转载 2017-04-08 23:29:16 · 13007 阅读 · 0 评论 -
Gym - 101196E-kmp+string类
给一个字符串,可以用一个字符代替 模式串,然后求最小的长度 最小的长度要加上模式串的长度。 WNEENWEENEENE 这里面 三个een,所以13-9(三个een)+3(用一个字符替代,挽回三个)+3(een的长度)=10; kmp模板。。#include <iostream>#include <cstdlib>#include <cstdio>#include <cstring原创 2017-03-27 22:07:27 · 429 阅读 · 0 评论 -
C++中unique(),unique_copy()和erase()
函数1 unique()的用法, unique()两个参数,第一个是首地址,第二个是末地址(stl区间默认为左闭右开), 他的原理是通过相邻比较(这就要求在处理之前用sort排序)删除重复的元素,但是不会真正的删除,而是会放到尾地址后面(为了这个套路,不会返回真正的尾地址,尾地址前面都是不重复的元素),就是酱紫;可以用来比较数字,不只是字符串。 2 而unique-copy的方法作用是将得到的原创 2017-04-12 17:57:46 · 1928 阅读 · 0 评论 -
Codeforces Round #410 (Div. 2)-B. Mike and strings-string的使用和取模
给定一些字符串,每次把对头的放在最后,问需要多少操作才能让他们相等 开始以为是贪心,或者感觉无处可贪,应该是暴力。 题解中大概有三个版本。 第一个最简单的,因为运用了stl中的find函数,所以比较简单了 因为要涉及循环比较,所以每个串都加了一倍的长度。 然后直接find就好。 两个代码的整体实现方法都一样,但是用的手段不一样。 一个是用的stl(棒棒哒) 另一个是用的取模的思想和一原创 2017-05-01 12:41:09 · 362 阅读 · 0 评论 -
ios::sync_with_stdio(false)-关闭同步输出流
可以用下面两个代码来加速cin 与cout ,这样cin的速度就和sanf差不多了,注意,这两个代码的头文件是 iostream并且如果用了这两个,就不要用scanf ,getchar,gets,fgets,fscanf了,他的作用是关于 iostream和stdio的同步,让c++和c的输入出不在挂钩了(具体原理我也不清楚哈)还有就是,用“\n”而不是 endl,也可以提高速原创 2017-04-20 16:41:05 · 4140 阅读 · 1 评论 -
17年东北四省赛A题-简单stl应用-优先队列
好伤心,竟然没有做出来,前一天还复习了哈夫曼树,没有考虑他的那个性质。。最可悲的是后来场上推出来了把所有非叶子节点加起来就行。。,被队友给否定了,自己也跟着他的思路走了,没有考虑出现的次数,其实我们加的并没有考虑出现次数啊。。。。。 。。。。更更可悲的是我说了一句,就这样打一下交了得了,最后也没有写。。。我们还在想什么鬼方法,我草如果是一百多队能过的题会有很难的算法or大模拟??? 。。。。。。原创 2017-05-16 20:44:08 · 351 阅读 · 2 评论 -
Codeforces Round #408 (Div. 2)-C. Bank Hacking-(三种方法)分类讨论,二分,集合
补题速度太慢了,这样可不行啊。 代码里都有解释。 看别人代码有三种写法 set,分类,和二分。 这是个是用分类思想写的,#include <bits/stdc++.h>using namespace std;/* 一开始我以为是图论的,但是他说有直接相邻的和间接相邻的,我就有点蒙蔽了。题意也没看完全明白,要求他的下一次hack的银行附近一定也有被hack过的。要求他不能跳来跳去的h原创 2017-04-19 20:52:24 · 351 阅读 · 0 评论 -
DFS-bitset-hdu5506-GT and set
给定你一些集合,如果这些集合中有相等的数,那么就可以把这俩集合合并在一起,问你是否可以把这些集合合并成n个, (合并的数比n小也小,相同的是可以分开的。) 方法,已经知道是dfs,但是没想到是这种对状态的dfs,每次保留上一次分配的状态,枚举当前的集合, 注意 回溯。 方法挺好用的。 https://vjudge.net/problem/HDU-5506#include <iostream原创 2017-05-09 16:14:57 · 266 阅读 · 0 评论 -
CodeForces - 808D-J - Array Division -set或者二分
给你一个序列,问你是否可以只移动一个数(或者不移动),使其一个前缀和或者后缀和为 总和的一半。 方法1 :二分枚举那个数,分别从前从后。 注意二分查找的范围。 不能超过i 方法2 set #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>using namespace std;原创 2017-05-21 21:38:16 · 327 阅读 · 0 评论 -
Educational Codeforces Round 22-B. The Golden Age-暴力枚举+map
http://codeforces.com/contest/813/problem/B 给定一个a和b 如果满足 pow(a,i)+pow(b,j),就说这个数不幸运 求一个区间内最大的没有不幸运数的区间。 数据范围 Input The first line contains four integer numbers x, y, l and r (2 ≤ x, y ≤ 1018, 1 ≤原创 2017-06-07 19:24:09 · 347 阅读 · 0 评论 -
Gym - 101572G -(set&细节)|(模拟&理解)|树状数组&好题-Galactic Collegiate Programming Contest
http://codeforces.com/gym/101572/attachments 给定一n个人过题的情况。 输入 a,b, 表示第a个人 花了b分钟过了一道题。 至于排名,和acm的一样,过题数优先,一样则花费时间越少越靠前。 问你a的时时排名(如果过题数 和时间都一样则并列)我开始的思路是发现只有每次更新,只有这个人才可能超过1号。更新ans(ans为超过1的人数)。 所以就记录原创 2017-11-21 14:45:21 · 474 阅读 · 0 评论