ACM
文章平均质量分 59
「已注销」
这个作者很懒,什么都没留下…
展开
-
[模板] 大数相乘模板
#include#include#includeusing namespace std;#define MAXN 100#define pi acos(-1.0)struct digt { double r; double i;};digt bitRecv[2*MAXN];digt va[MAXN*2],vb[2*MAXN];int ans[MAXN*2]原创 2014-08-14 03:51:59 · 871 阅读 · 0 评论 -
【题解Part 3】NBUT 2012 Weekly - 27th Oct for 12x
[G] The Roll【链接】 这道题呢,由于是本人出的,所以要好好讲一讲了~ 先说一下背景:在本题中,每组数有n个班级,每个班级每个同学的学号依次是1~n号,从这句话可知,一班的一号与二班的一号有着同样的学号。 然后是题意:一个人去点名,每次点n个班级,每个班级记录下来缺课的学号,这样就有了一个各班缺课人数以及学号的表格了,你的任务是统计表中每个学号的原创 2014-04-14 14:39:57 · 614 阅读 · 0 评论 -
【题解 Part 2】NBUT 2012 Weekly - 27th Oct for 12x
[D] Easy One【链接】 非常简单的一道题;考察二维数组的最基本运用。把输入的矩阵上下左右均颠倒,然后输出这个矩阵。 1 2 3 9 8 7 4 5 6 -> 6 5 4 7 8 9 3 2 1 根本不需要在二维数组上动手脚,只要在写i、j的时候让它们倒原创 2014-04-14 14:39:55 · 593 阅读 · 0 评论 -
HDU 1166
这是第一道用线段树做的题目,写个帖子留念~ 这是一道水题,题目的意思很简单,就是在一条线上放几个点,每个点放上一个数字,初始化这些数字以后就开始各种增减,然后时不时的问一句这边这几个点数字总和是多少,那边那几个点的数字总和是多少。 学了线段树以后,发现线段树是一个很有意思的东西,非常的实用。根据题目类型,可以开一个一维数组来存放线段树,还可以用struct结构体,静态或者动态的原创 2014-04-14 14:39:50 · 475 阅读 · 0 评论 -
ACM 模板
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define LOCAL_TEST // delete it when submitin原创 2014-04-14 14:39:48 · 494 阅读 · 0 评论 -
【题解 Part 1】NBUT 2012 Weekly - 27th Oct for 12x
本次比赛是由XadillaX、monkeyde17、Mr.Cai、hungar以及Minary倾情打造,大部分都是水题,考察的是基本的语法知识,解题的基本思路,以及。。。。。。看懂纯英文的题目或从输入输出推敲题意的能力。考虑到这次周赛的比赛结果以及童鞋们做题的情况,本次题解写的非常的简明易懂,老少咸宜,应该算得上是非常详尽了,希望本题解12届的孩纸们能够看懂无压力~[A] Angry Leader原创 2014-04-14 14:39:53 · 610 阅读 · 0 评论 -
[1298] Death Moon\'s Inspiration
题意就是有一些人进进出出,求最少几个人就能完成这些“进进出出”。比如样例中的+-+-+,最少1个人就能完成这件事,因为一个人出去了,最少人数的情况下还是这个人进来,再这个人出去,再这个人进来,出去,一个人就行了。另一个样例“---”就至少需要三个人了,因为一个人不可能出去了又出去,除非这个人先回来。 这道题画图是一个很好的辅助,再看一组数据“+-++-++-----”。画成图形如下,原创 2014-04-14 14:40:00 · 603 阅读 · 0 评论 -
[noj 1522] 分蛋糕(dp+滚动数组优化)
题意:m个相同的东西放进n个相同的盒子中,求方案数。原创 2014-05-02 05:58:58 · 1248 阅读 · 0 评论 -
[hdu 1028] Ignatius and the Princess III (母函数)
路过此题,顺手摘下。。#includeusing namespace std;#define maxn 125int c1[maxn], c2[maxn];int main(){ int n; while(~scanf("%d", &n)) { for(int i = 0; i <= n; i++) { c1[i] = 1; c2[i] =原创 2014-05-01 03:24:03 · 1013 阅读 · 0 评论 -
[hdu 1398] Square Coins(母函数) + 母函数小解析
关于母函数网上有一大堆解析,这里就原创 2014-05-01 15:30:06 · 867 阅读 · 0 评论 -
[poj 3207] Ikki\'s Story IV - Panda\'s Trick(2-sat or 并查集)
这是A掉的第一道2-sat题目。由于题目的特殊性,可以不需要用tarjan计算强连通图,用并查集也可以轻松搞定。题意:一个圆上依次分布着一些点,距离不重要。然后给你一些点对,要你将这两个点连线,问存不存在一种方案,使得在所有线段都不交叉的情况下,能连完所有线段。显然线段不是在圆内连线就是在圆外连线。样例数据如下:4 20 13 24个点两条线,满足条件的方案有好2种,如下图,所以输出"pand原创 2014-04-14 14:41:36 · 767 阅读 · 0 评论 -
[hdu 1085] Holding Bin-Laden Captive!(母函数版)
题目大意是说,有1 2 5三种硬币,各有x[0] x[1] x[2]个原创 2014-05-01 04:54:54 · 854 阅读 · 0 评论 -
Vector的一小点扩充
struct Entry { string name; int number;};vector phone_book(1000);void print_entry(int i) //简单使用,就像数组一样{ cout}void add_entries(int n) //将其规模增加n{ phone_book.resize(phone_book.原创 2014-04-14 14:39:46 · 598 阅读 · 0 评论 -
[hdu 1532] Drainage Ditches(最大流dinic)
题目抽象: 告诉有5条边,原创 2014-04-17 14:57:15 · 937 阅读 · 0 评论 -
[noj 1557] Team of Slime
不知道为什么同一组数据要竖着写,这样kanqila原创 2014-05-05 14:47:03 · 1038 阅读 · 0 评论 -
[模板] 大数阶乘模板
最近项目工程量大,好像没什么空码代码,抽空写个jiandan原创 2014-07-22 22:21:37 · 1485 阅读 · 0 评论 -
[模板] 求两圆相交面积(模板)
两圆相交分三种情况:相离相切相交原创 2014-08-06 12:00:40 · 11804 阅读 · 3 评论 -
[hdu 3264] Open-air shopping malls(二分+两圆相交面积)
题目大意是:先给你一些圆,你可以任选这些圆中的一个圆点作圆,这个圆的要求是:你画完以后,这个圆要能够覆盖之前给出的每个圆一半以上的面积,即覆盖1/2以上每个圆的面积。原创 2014-08-06 13:11:35 · 1772 阅读 · 0 评论 -
[蓝桥杯] 第五届蓝桥杯总决赛 - 灯泡问题
题目大意是说,给你n个灯泡,初始时都是灯灭的状态。然后每次挑选2、4、原创 2014-06-07 21:09:49 · 1181 阅读 · 1 评论 -
[hdu 2544] 最短路(SPFA版)
#include#include#includeusing namespace std;#define maxn 105#define inf 0x3f3f3f3struct node{ int num; int dis[70]; int next[70];};int n, m;node mat[maxn];int inque[maxn]; // 结点是否在队列中原创 2014-04-26 01:33:04 · 843 阅读 · 0 评论 -
[hdu 4160] Dolls(最小路径覆盖)
大意:有一些盒子,盒子有长宽高,现在原创 2014-04-07 18:52:01 · 819 阅读 · 0 评论 -
[noj 1554] Lord of Minecraft
水题。一句话题意就是:原创 2014-05-05 14:52:14 · 826 阅读 · 0 评论 -
[hdu 1151] Air Raid(最小路径覆盖)
#includeusing namespace std;#define maxn 510int mat[maxn][maxn];int vis[maxn];int n;int dfs(int u){ for(int i = 1; i <= n; i++) { if(mat[u][i]) { if(!vis[i原创 2014-04-06 21:32:55 · 760 阅读 · 0 评论 -
[noj 1561] Set Time
简单模拟题。#include#includeusing namespace std;int getyear(int x){ if((x%4 == 0 && x%100 != 0) || x%400 == 0) return 366; return 365;}int month[2][13] = { {31,28,31,30,31,30,31,31,30,31,30,3原创 2014-05-05 17:22:05 · 918 阅读 · 0 评论 -
[noj 1559] Jump to the Top of Mountain
题意是:给你一个n*m的矩阵,上面的数字代表了这个位置的高度,你现在站在矩阵外面,现在要zou原创 2014-05-05 18:12:13 · 950 阅读 · 0 评论 -
[noj 1555] The Sum of F(x) and G(x)
签到题。不知道校内赛新生们做的怎么样原创 2014-05-05 17:40:35 · 1056 阅读 · 0 评论 -
[noj 1552] Minecraft Server Bug
题意是:有一排的水或者熔岩,你需要先拿水再拿熔岩,问原创 2014-05-05 17:12:25 · 820 阅读 · 0 评论 -
飞行员配对方案问题(二分图的最大匹配)
第二次世界大战时期, 英国皇家空军从沦陷国征募了大量外籍飞行员。 由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的 2 名飞行员, 其中 1 名是英国飞行员,另 1 名是外籍飞行员。 在众多的飞行员中, 每一名外籍飞行员都可以与其他若干名英国飞行员很好地配合。 如何选择配对飞行的飞行员才能使一次派出最多的飞机。 对于给定的外籍飞行员与英国飞行员的配合情况, 试设计原创 2014-04-15 23:36:29 · 1807 阅读 · 0 评论 -
[FZU 2055] Noip
多么简单的一道题,由于当时题目看走眼还去开了个结构体要弄链表,哎。只要查找的路径匹配前面路径的开头,查找的后缀名匹配前面路径的结尾就行了。#include#includeusing namespace std;#define maxn 1010char str[maxn][maxn];char p[maxn], ext[maxn];int main(){ int tot;原创 2014-03-29 23:12:12 · 599 阅读 · 0 评论 -
[NOJ 1060] Countless Core Computers (线段树 or 树状数组)
题目链接:传送门这道题本来没什么好写的,直接树状数组标记一下就能解了。有个学弟说这道题用线段树怎么写都是MLT, 大概想了一下,对于这道题的话,线段树的内存还是能砍掉许多的。PS:这道题的正解显然不是线段树,本文只是从"如果要用线段树的话怎么办"的角度去写,小朋友们切勿模仿。对于树状数组:如果要对区间[x, y]整体加上1的话,在树状数组中,让num[x]++, num原创 2014-03-30 19:38:21 · 856 阅读 · 0 评论 -
[poj 3468] A Simple Problem with Integers(裸线段树)
水题,只要注意结果是long long就行了。#includeusing namespace std;#define maxn 100010struct node{ int l; int r; long long add; long long sum;}tree[maxn * 4];long long num[maxn];void down(int num){ tree[num tree[num原创 2014-04-14 14:41:21 · 551 阅读 · 0 评论 -
[hrbust 2030] 成语接龙(状态压缩 + dfs)
传送门:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2030与前一篇博客同样的思路,首先有用的信息只有字符串的前四个字符和后四个字符。同样需要将字符串转化成对应的数字。先抛开如何存信息的问题,谈谈如何"接龙"。假设信息已经存好了,那么肯定是一个头对应一个尾。我们假设程序是这样存储的:head1 -原创 2014-04-14 14:41:19 · 986 阅读 · 0 评论 -
[hrbust 2029] 二十世纪八十年代(状态压缩)
传送门:http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=2029经典水题,给出一大堆东西然后问存不存在。给定的内存一共只有5M,所以不要试图存下所有字符串,这明显超内存。使用map或者字典树的话,内存恐怕也远超5M了吧。考虑到最多只有5个字符,每个字符26种可能,所以可以把每一个字符串转化为一个整数。原创 2014-04-14 14:41:17 · 741 阅读 · 0 评论 -
poj 2823 Sliding Window (单调队列 or 线段树)
今天看到别人讨论单调队列,感觉好久没写了想复习一下。说道单调队列最经典的题目之一就是这个"Sliding Window"了吧。开一个数组,每次以存原数组下标的方式保存数据。以队首最大为例,每次新加一个元素,先把队尾小于新数据的全部去掉,然后新增这个元素(当然实际存的是这个数在原数组的下标)。#include#includeusing namespace std;#define MAXN 10000原创 2014-04-14 14:41:15 · 534 阅读 · 0 评论 -
hdu 1598 find the most comfortable road
好经典的一道题,并查集 + 贪心。方法是对所有边从大到小排序后,依次枚举最小边和最大边,在每一次枚举的时候用并查集判断起点和终点是否已联通。#include#includeusing namespace std;#define inf 0x3f3f3f3fint father[210];struct rd{ int s, t, len;}road[1010];int cmp(const vo原创 2014-04-14 14:41:12 · 593 阅读 · 0 评论 -
博弈小结(备忘录)
巴什博奕(Bash Game): 描述:一堆石子,共n个。两人轮流取1~m个石子走,到最后谁能把剩下的一次性去光谁就赢了。 解析:将全部n个石头分解为n = (m+1)*k + t个。先手先取t个,假设后手取x个(1 m+1-x个,局面就变为n = (m+1)*(k-1)个;以后只要一直按照x、m+1-x这样取下去,先手必胜。例如:两人数30,每次1~4个数,假设先手数x,那么后手只要原创 2014-04-14 14:41:10 · 618 阅读 · 0 评论 -
hdu 1978 How many ways
一个机器人从左上角出发,目的地是右下角。走的办法是:只能往右或者往下走,每次走的范围是当前所在位置的数字大小。动态规划法:到达(1, 1)的方法是1种(初始化)。设dp(i, j)为到达(i, j)的方法数。从(i, j)出发,能到达(i+k)(j+t)的话,那么到达(i+k)(j+t)的办法多了dp(i, j)个。#includeusing namespace std;int mat[110][原创 2014-04-14 14:41:08 · 526 阅读 · 0 评论 -
poj 1129 Channel Allocation
无向图染色问题。大意就是给你一些点和一些连线,构成了具有N个结点的无向图,然后要对这个无向图进行染色,使相邻两个结点颜色不同,问最少需要多少种不同的颜色。这道题数据量很小,最多只有26个结点,直接爆搜再搭配个剪枝就行了。设一个color数组表示颜料盒,color[i]表示第i种颜色。对于第i个结点,首先枚举一遍它的所有相邻结点,存下相邻结点用过的颜色,标号最小且没用过的颜色就是结点i的颜色了。所以原创 2014-04-14 14:41:05 · 542 阅读 · 0 评论 -
hdu 1597 find the nth digit
果然是有够坑,真实数据范围肯定超过了int,用__int64才过。设tmp * (tmp + 1) / 2 = x;移项和配方后,得tmp = sqrt(2*x+0.25) - 0.5然后就好了。#include#includeint main(){ __int64 x, tmp; int tot; scanf("%I64d", &tot); while(tot--) { scanf("%I64原创 2014-04-14 14:41:03 · 705 阅读 · 0 评论 -
NBUT 2012 Weekly - 16th Mar for 12x
这次出的两道题相当的水,纯粹是给大家增强信心用,好像也取得了预期的效果。 [E] Endless Tree 【链接】 这道题是一个签到题,只要能够读懂就能秒杀。题目是说,你和你的队友被随机传送到这个无穷大二叉树的另个结点中,并且你的队友的结点编号总是大于你。求你应该在哪个位置等待他的buff的到来。首先一个结点到根节点的路径是唯一的,加上你和队友都只能向前走,这就说明所要求的是两原创 2014-04-14 14:40:06 · 650 阅读 · 0 评论