
|--STL
文章平均质量分 54
Danliwoo
这个作者很懒,什么都没留下…
展开
-
Codeforces 583C GCD Table 模拟 map
原题见CF 583C对于一个数组a[n],定义一个n*n的gcd矩阵,b[i][j]=gcd(a[i], a[j]).现在乱序给出矩阵内的全部元素,求原数组a[n].如果已知原数组得到gcd矩阵,则可得到对角线上的数字就是原数组里的数。且gcd矩阵有一个性质:一行里的最大值在与对角线的交点上,一列同理。于是可以先找到n*n个数里找到最大值,必定是a[n]里的一个值。 用归纳的办法,已经被挑选的数字原创 2015-10-04 13:43:56 · 954 阅读 · 0 评论 -
Codeforces 553D Nudist Beach 优先队列 贪心
原题见CF 553D无向图G,n个点,m条边,k个坏点。 在G中选取子图S(可以不连通),S不能包含坏点。对于每个S中的点x,描述强度值I=x的属于S的邻居数/x的所有邻居数。I=x的属于S的邻居数/x的所有邻居数。x的邻居是指和他有直接相连的一条边的点。 现在求一个子图S,使得S中的强度值最小的尽量大。思路先把所有非坏点的选入图S。从中挑出强度值最小的点x移出S。修改和x相邻的点的强度值。原创 2016-04-28 17:54:09 · 1333 阅读 · 0 评论 -
POJ 3297 Open Source STL(map+set+pair)
为了熟悉STL,这道题用到的东东还挺多的,存档~ 感谢小灰灰的好东西,囊括了许多STL的基本用法。原题见POJ 3297大写的是项目名,小写的是参与此项目的人名,两者一对多。所以想到了用map<string, set<> >来存。 如果有在多个项目下留名的,则此人无效;若一人在一项目下重复留名,只记一次。人和编号对应起来,用map<string, int>存,另开一个数组,给一个人留的项目计数,原创 2016-05-25 01:03:46 · 1199 阅读 · 0 评论 -
istringstream的用法
将整行读入到line后,istringstream可以将line按照空格分块输出。#include <iostream>#include <sstream>using namespace std;int main(){ string line, str; while(getline(cin, line)){ istringstream sm(line);原创 2016-05-23 14:16:37 · 775 阅读 · 0 评论 -
PAT 1022 Digital Library MAP(STL)
水题,当作是熟练MAP吧。 map <string, std::vector<int> > mp[N] key: string,各种关键词 value: int,书的序号,这里比较特殊,一个key可以有多个value string book[M]:将书序号和真正的序列号对应起来,注意书序列号排序后输出。 貌似也可以一开始就建立一个map<string, std::vector<string原创 2016-05-23 16:14:30 · 727 阅读 · 0 评论 -
HDU 5726 GCD 区间gcd查询 MAP RMQ 优化
原题见HDU 5726给N(N≤100000N\le 100000)个数,Q(Q≤100000Q\le 100000)个询问,每次查询输出区间的最大公约数,以及最大公约数为这个数的区间数目。分析查询次数很多,要做预处理,用map<最大公约数,区间数>存下来,实现O(1)的查询。 预处理发现对于同一左端点的区间而言,右端点越靠右,区间gcd单调递减。因此可以固定左端点,二分右端点,找到gcd突变的右原创 2016-07-21 20:26:29 · 1182 阅读 · 0 评论