http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=437 先介绍<algorithm>头文件中与集合运算有关的4个函数: set_union Union of two sorted ranges  (并集:A∪B) set_intersection Intersection of two sorted…
题目大意:给你两个集合,判断两个集合的关系(不相交.相等.真子集和其他).简单判断就可以了,不过STL的set没有交集.并集等操作有点让人觉得不方便... #include <cstdio> #include <iostream> #include <set> using namespace std; set<int> intersection(const set<int> &a, const set<int> &b)…
例题5--9 数据库 Database UVa 1592 #include<iostream> #include<stdio.h> #include<string.h> #include<cmath> #include<string> #include<queue> #include<stack> #include<vector> #include<map> #include<set>…
话说STL的I/O流用的还真不多,就着这道题熟练一下. 用了两个新函数: cout << std::setw(width[j]);    这个是设置输出宽度的,但是默认是在右侧补充空格 所以就要用cout.setf(ios::left);来设置一下左对齐. #include <iostream> #include <cstdio> #include <sstream> #include <vector> #include <string&g…
UVA 246 - 10-20-30 题目链接 题意:给52张的扑克堆,先从左往右发7张牌,之后连续不断从左往右发7张牌,假设有牌堆形成了下面3种情况(按顺序推断): 1.头两张+尾一张和为10或20或30 2.头一张+尾两张和为10或20或30 3.尾三张和为10或20或30 就把这三张牌拿走,放到总牌堆底(这步要不断运行直到不再满足条件或牌堆没了) 假设有一个牌堆由于这个操作被取完了,那么以后将不在这个位置发牌. 假设最后7个牌堆都能够消掉,那么赢,总牌堆用完,那么输,否则平(即不断循环)…
两种方法,直接上代码 STL标准模板库 #include <iostream> #include <list> #include <algorithm> #include <cstdio> using namespace std; const maxn=100000+5; char str[maxn]; typedef list<char> L; int main(){ while(gets(str)){ L l; L::iterator p;…
题意: 给出n行m列共n*m个字符串,问有没有在不同行r1,r2,有不同列c1,c2相同.即(r1,c1) = (r2,c1);(r1,c2) = (r2,c2); 如 2 3 123,456,789 123,654,789 (1,3) 就对应(3,3) 如果有这种对应,就输出NO,然后输出两个行号, 两个列号.否则输出YES. 分析: 这题方法类似:http://www.cnblogs.com/Jadon97/p/6877791.html 总结就是先映射, 再操作 将每个字符串映射成一个值.…
今天下午略感无聊啊,切点水题打发打发时间,=_=|| 把所有字符串插入到一个set中去,然后对于每个字符串S,枚举所有可能的拆分组合S = A + B,看看A和B是否都在set中,是的话说明S就是一个复合词. #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <string> #include <set> #in…
题意:给定两种操作,一种是定义一个数组,另一种是赋值,让你找出哪一步时出错了,出错只有两种,一种是数组越界,另一种是访问未定义变量. 析:当初看到这个题时,感觉好麻烦啊,然后就放过去了,而现在要重新回来做一下,感觉也不好做,做了1个多小时..... 现在分析一下是思路,我觉得我想的比较麻烦,我首先定义了两个map,分别是数组的最大长度和数组的,赋值情况,然后用向量把所有操作存起来, 在定义时很简单,直接把长度赋给map就行,麻烦就是在这个赋值时,首先是把等号两边的分开,先计算等号右边的操作,主要…
把一个人看出一个二维的点,优势的点就是就原点为左下角,这个点为右上角的矩形,包含除了右上角以外边界,其他任意地方不存在点. 那么所有有优势的点将会形成一条下凹的曲线. 因为可能有重点,用multiset,按照x优先,相同时再比较y的顺序排序,动态维护满足条件的总人数. 当新加的P点的y坐标大于左边的点的时候没有优势,忽略,用lower_bound判断一下. 当新加的P点有优势,但是可能使得其他的的点失去优势,依次把后面的点不满足条件的点删除. 红黑树好复杂. #include<bits/stdc…