摘要: 题意:输入一个数k(2 >k个数的和最小,那么任意两行的那两个数的和也最小,否则就可以找到比该值更小的数,所以,可以先求两行中k个最小和,再进行多路归并即可。#include #include #include using namespace std; const int maxn = 750 + 10; //每行最多可能有750个数 struct Item //定义结点类型 { int s; //s = A[i] + B[j] int b; //b = j即B[j]的下标 Item(int ss, int bb):s(... 阅读全文
posted @ 2013-01-04 00:03 xiaodanding 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 题意:一个ID对应一个周期,不同的ID对应不同的周期,总共可能有3000个ID,输出先返回的K个ID。(当时刻相同时先返回ID小的)题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=14&page=show_problem&problem=1136——>>这题即zoj - 2212(当时的思路:http://blog.csdn.net/scnu_jiechao/article/details/8273149),在书上汝佳 阅读全文
posted @ 2013-01-03 12:43 xiaodanding 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 题意:输入一个长度为n个数组(元素为[1, 1,000,000]之间的正整数),接着输入m个询问(1 >如果每个询问都搜索一次,猜想超时过不了!于是将其弄成一一映射,用data[v][k]存第k个v的下标,询问的时候O(1)的输出,就不会超时喽!用STL中的map与vector来做就好,汝佳牛真的太神啦!谢谢!#include #include #include using namespace std; int main() { int n, m, i, temp, v; unsigned k; while(cin>>n>>m) { m... 阅读全文
posted @ 2013-01-03 12:11 xiaodanding 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 题意:输入一个数n,接着输入n行数,第行数由2个正整数构成,其中第一个整数要么为1,要么为2,若为1,则将1后面的整数放进一个包里;若为2,则从包里取出一个整数,最后根据放入包里与从包里取出的数的顺序判断这个包是个什么样的数据结构。题目链接:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=229&page=show_problem&problem=3146——>>这本来是一道不难的题目,可是一个不留神却折腾了半天,如果包里数为空,但无错地从包里 阅读全文
posted @ 2013-01-02 19:05 xiaodanding 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 题意:一些产品,每种产品由2种化合物合成,按顺序接收一些产品,若组成其中某些产品的化合物的种类数与这些产品的产品数相等,就要拒绝接收,因为可能爆炸,求要拒绝多少次。题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&category=19&page=show_problem&problem=1645——>>若加入的化合物与已存在的化合物构成了环,就该拒绝,用并查集解决即可。#include using namespace std; cons 阅读全文
posted @ 2013-01-01 11:27 xiaodanding 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 题意:有n个学生,编号为0到n-1,m个群,给出每个群的学生,开始学生0被怀疑得了SARS,于是,人传人,被怀疑的学生所属群的所有学生都被怀疑,问共有几个学生被怀疑。题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=789——>>简单的并查集题目,将每个群的后一个学生与前一个学生judge,统计结点数输出即可。带路径压缩递归写法:#include using namespace std; const int maxn = 30000 + 10; //0 >n>>m) { i... 阅读全文
posted @ 2012-12-11 23:33 xiaodanding 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 题意:有n地点,从一个地点到另一个地点有被抓的可能性,问从地点1到地点n不被抓的可能性最大是多少。题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1797——>>Dijkstra算法题目,题目是那么的简单,直接用Dijkstra算法一上即可(注间边界设置:地点自己到自己不被抓的可能性为100%,到其他没边的地点被抓的可能性为0(就是一定被抓)),却不想中间用来比较的浮点型变量m设为了整型——千里之堤,溃于蚁穴!!!#include #include #include using namespace st 阅读全文
posted @ 2012-12-11 20:05 xiaodanding 阅读(91) 评论(0) 推荐(0) 编辑
摘要: 题意:有n个村庄,村庄间有一些路,但有一些路可以不要也可连通所有村庄,为节约费用,deal with一些不必要的路,求最少维护总费用。题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=406——>>用Kruskal算法生成一棵最小生成树,输出即可。#include #include #include using namespace std; const int maxn = 30; //1 e2.cost); } int fa[maxn], height[maxn]; //fa[x]... 阅读全文
posted @ 2012-12-11 00:39 xiaodanding 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题意:N个人为M个elements投票,计算各个element的票数和,选出最高的K个,逆序输出下标。题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1511——>>题目本来不难,用优先队列来获取票数最高的K个下标即可,不料,一个疏忽,重载 #include #include using namespace std; const int maxn = 10000 + 10; //最大element数 struct node //结点数据类型 { int indice; ... 阅读全文
posted @ 2012-12-10 20:07 xiaodanding 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 题意:PUT为存入,GET为取队头查询,不停地存入与取队头元素,输出相应的信息即可。题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1724——>>之前见题目的通过率只有26.65%,又赶时间,早早地跳过了这题,刚刚看了下,用优先队列一试,原来是那么水的……无语#include #include using namespace std; struct node //定义结点数据类型 { string name; int val; int weight; }; bool op... 阅读全文
posted @ 2012-12-10 19:05 xiaodanding 阅读(184) 评论(0) 推荐(0) 编辑