12 2012 档案
摘要:题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1860/* * BZOJ 1860: [Zjoi2006]Mahjong麻将 * * 分析: * 据说有DP解,暂时没想出来。。。直接暴力dfs+hash * dfs(pos,two,state):pos表示当前的位置,two表示是否有对,state表示状态 * 暴力枚举四种情况,然后每次进行搜索前进行hash判重。 * hash判重时使用像池子法一样的方式解决冲突问题。 * * */#include <cstdio>#include <iostream>#inclu
阅读全文
摘要:/* * 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1028 * 顺子:三个相连的数字 * 刻子:三个相同的数字 * 对子:两个相同的数字 * 和牌:m个顺子或者刻子加上一个对子 * 现在给出3*m+1个牌,问能不能够和牌,能够和牌的牌号分别可以是。。。 * * 分析: * 直接贪心加枚举对子,然后再判能不能够和牌 * * */#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using n
阅读全文
摘要:/* * 题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1045 * 有n个小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传 * 递一个糖果代价为1,求使所有人获得均等糖果的最小代价。 * * 分析: * 假设a1分给an的糖果数为k,则可以得到以下的信息: * a1 a2 a3 an-1 an * 当前数目:a1-k a2 a3 an-1 ...
阅读全文
摘要:假设GVIM装在D盘目录GVIM里面。首先,找到目录D:\GVIM\GVimPortable\App\DefaultData\settings,里面有一个文件vimrc,这个跟ubuntu下的vimrc基本上是一样的,只不过有一些地方不太一样。由于GVIM中的vimrc里面的程序使得该gvim界面拥有菜单之类的东东,所以只能够在后面把我在linux下的vimrc添加,然后把我自己的配置全部粘上去了,配置文件的详情请看上一篇博文http://www.cnblogs.com/yejinru/archive/2012/11/19/2777970.html但是84-85行中会报错:所以我们得要把它注释
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1013/* * 分析: * 裸的高斯消元题 * 二维平面上的圆上的点与圆心的距离有(x-a)^2+(y-b)^2 = r^2 * 三维空间上的球上的点与球心的距离有(x-a)^2+(y-b)^2+(z-c)^2 = r^2 * 同理:在n维空间上的球上的点与球心的距离有sigma((xi-ai)^2) = r^2,圆心为(a1,a2,...,an) * * 另外,在二维平面上,可由三点(不共线)确定一个园,在三维上四点(不共线)确定一个球, * 同理,在n维平面上,可由n+1个点(不共...
阅读全文
摘要:/* * 分析: * 如果是动态使用tarjan求联通分量求缩点个数的话,肯定TLE。 * 我们可以离线把所有要摧毁的星球输入,然后从把所有要摧毁的星球都摧毁之后往摧毁之前 * 建图,使用并查集的方式合并联通块。 * */#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int X = 400005;#define debug puts("here");int p[X];struct node{ int x,y,next;}edg
阅读全文
摘要:现在请求你维护一个数列,要求提供以下两种操作: 1、 查询操作。 语法:Q L 功能:查询当前数列中末尾L个数中的最大的数,并输出这个数的值。 限制:L不超过当前数列的长度。 2、 插入操作。 语法:A n 功能:将n加上t,其中t是最近一次查询操作的答案(如果还未执行过查询操作,则t=0),并将所得结果对一个固定的常数D取模,将所得答案插入到数列的末尾。 限制:n是非负整数并且在长整范围内。 注意:初始时数列是空的,没有一个数。http://www.lydsy.com/JudgeOnline/problem.php?id=1012/* * 分析: * 单调队列加暴力。 * 这个程序优化的..
阅读全文
摘要:/* * 分析: * 贪心+高精度。。。尽量凑3,不足凑2 * * */http://www.lydsy.com/JudgeOnline/problem.php?id=1263import java.util.Scanner;import java.math.*;public class Main{ public static void main(String [] args){ BigInteger ans; BigInteger th = BigInteger.valueOf(3); int n; Scanner cin = new Scanner(System.in); ...
阅读全文
摘要:http://www.lydsy.com/JudgeOnline/problem.php?id=1029/* * 题目: * 每个任务需要ai时间完成,并且需要在时间bi或之前完成,问如何安排任务完成顺序,使得完成 * 任务的数量最多 * * 分析: * 贪心,先对期限排序,然后用最大堆维护需要完成的时间ai * 1.当now + ai <= bi时,ans + 1 ,更新now,把ai插入到堆中 * 2.当now + ai > bi时,若堆的最大元素大于ai时,将该元素(aj,bj)替换为ai,得到的序列答案 * 不会减少。因为替换之后,时间期限bi必定大于bj,所以可以完成该任
阅读全文
摘要:题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1819分析:暴力枚举需要添加、删除以及替换的字符,然后建立trie树进行判断是否存在该字符串,然后利用trie树存的信息进行判重时间貌似有点慢。329611yejinru1819Accepted21468kb1232msC++/Edit2193 B2012-12-16 17:34:39#include <cstdio>#include <iostream>#include <cstring>using namespace std;const int k
阅读全文
摘要:题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1821 给出n个野人的坐标,n个野人分别属于k个部落,现在问如何划分野人,使得每个部落之间的距离最小(部落之间的距离是部落中距离最近的两个野人的距离)分析: 对于所有的距离排序,然后利用并查集合并即可关键代码:(对于n==m时,特判。) for(int i=1;i<=tot;i++){ int x = edge[i].x; int y = edge[i].y; x = find_set(x); y = find_set(y); if(x!=y){ father[y] = x; n -.
阅读全文
摘要:题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1826分析: 贪心+堆或者平衡树(以下统一称为树)。越在后面,切换他是最好的。。。 1.当已经在树上的时候,换掉之前已在树上的该主存块,换成当前主存块的下一个出现的位置。 2.当前可用的cache足够的时候,直接插入到树中。 3.每次需要切换cache的时候,都切掉距离当前位置最远的那个主存块,然后将当前的cache的下一次出现的位置更新到树上。 先离散化,然后使用池子法从后往前扫,这样就可以统计每个主存块下一次出现的位置,插入的时候,直接插入的是当前主存块的下一个他出现的位置329452y
阅读全文