- 博客(29)
- 收藏
- 关注
原创 利用正则表达式求解多项式相乘问题
最近几天在学习正则表达式,然后想起来以前一些关于字符串解析的问题都可以利用正则表达式进行求解,而不必人工、机械的去自己一位位去解析目标字符串。比如经典的多项式相乘问题,我们来看一个问题的实例: http://acm.ecnu.edu.cn/problem/2821/计算两个一元多项式的乘积。 Input 每行两个多项式,以一个空格分隔,多项式格式为 anx^n+…+a1x+a0。 每行长度不
2017-05-05 03:04:00
1969
原创 POJ 3670 Eating Together (DP)
#include<cstdio>#include<algorithm>using namespace std;int a[30005];int dp1[30005][4];int dp2[30005][4];const int INF = 0x3f3f3f3f;int main(){ int n; scanf("%d", &n); for (int i = 1
2017-03-06 00:24:00
437
原创 Eoj 2854 统计包含m个连续1子串的字符串的个数
统计特定字串模式的个数 Time Limit:1000MS Memory Limit:65536KB Total Submit:321 Accepted:173Description 在0和1组成的长度为n(1≤n≤31)的字符串中,统计包含m(1≤m≤n)个连续1子串的字符串的个数。Input 本题有多组测试数据。每组测试数据占一行,含n和m,表示字符串的长度和连续1的个数。n=-1和m=-1
2017-03-02 01:55:01
2183
原创 Codeforces 268B Two Sets
题目链接:http://codeforces.com/contest/468/problem/B#include<iostream>#include<map>using namespace std;int N, A, B;int g[100100], P[100100];bool must_be_in_A[100100];bool must_be_in_B[100100];map<int,i
2017-02-26 01:21:54
650
原创 模拟题:流量问题
Problem H: 流量问题Time Limit: 1 Sec Memory Limit: 128 MB Submit: 36 Solved: 11 [Submit][Status][Web Board] Description远岛君在理科大楼五楼闲着无事,闲逛到了女厕所,发现有一个底面为1×W,高为无限大的一个没有顶盖的空水箱放在平坦的地面上,中间从左到右竖直地插入了W-1块木板,每块
2016-12-04 02:48:29
454
原创 Codeforces 484B Maximum Value
题目传送门:题意:一个数列中找出最大的两个元素取模值解题思路:先对数列排序,然后对每个元素,针对其倍数元素前面一个元素进行计算比较,取最大值即为答案。AC代码:#include#includeusing namespace std;const int maxn = 200005;int num[maxn];int main(){ int n; scanf
2016-12-04 00:38:34
400
原创 水题5连发:CF496B、609C、560B、500C、HDU5626
半夜睡不着在VJ上挂了5道水题练手: A:CF496B 题目传送门:http://codeforces.com/problemset/problem/496/B 类型:BFS“`includeincludeincludeincludeincludeincludeusing namespace std; char str[1005]; map
2016-12-02 04:37:41
796
原创 HDU 5938 Four Operations 贪心
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5938 题意:给你一个数字串,要你把它分成五部分ABCDE,然后计算A+B-C*D/E可能的最大值是多少? 解题思路:枚举负号的位置,因为要使整个值最大,C*D应该最小,所以C和D都只取一位。A+B的值最大需要使A或B的位数尽可能大,即A一位,B为到负号前的所有位或者B为符号前一位,A为开头到负号前
2016-12-01 01:32:45
330
原创 HDU 5935 Car 贪心
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5935 题意:一辆车在路上直线走,它的速度是不减的,现在有一些该车路过的坐标,测的时刻是整数时刻,最后一个测值位置点是终点(这一点题目没说,我觉得不严谨)。问车开到终点的最少用时? 解题思路:我们知道,由于时间是整数,车的速度是相等或递增的,那么我们尽量让车速最快。我们从最后一段路程入手,令车通过该
2016-12-01 00:43:00
666
原创 HDU 5934 Bomb 强连通缩点
题目传输门:http://acm.hdu.edu.cn/showproblem.php?pid=5934 题意:有n个炸弹,给你每个炸弹的坐标和引爆半径以及引爆的代价,如果A炸弹的引爆半径内(含相等)存在另外一个炸弹B,那么引爆A的同时B也会被顺便爆炸掉。问最少需要多少代价使得所有的炸弹被引爆? 解题思路:由于在一个炸弹的引爆半径内的所有炸弹的引爆代价为0,那么我们可以以另一个炸弹是否在引爆半径
2016-11-30 23:26:42
432
原创 HDU 5993 ArcSoft's Office Rearrangement 简单模拟
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5933题意:有一个数列,每次可以合并相邻的两项得到它们的和,或分解相邻两项,两项和为原来项。问最小操作数使得数列的每个数值等于 sum / k.解题思路:用双端队列进行简单模拟即可。获得成就:Rank top -2。(摊手)Rank top -2 AC code:#include<cstdio>#in
2016-11-30 22:10:16
803
原创 HDU 4930 Fighting the Landlords 斗地主模拟
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4930 题意:虽然题目很长,但是其实就是一直在介绍我们很熟悉的斗地主规则。要求这一轮里是否A出牌后B没有牌可以压过A。 解题思路:这道题尤其要注意出牌的先后性,先处理先手一方的情况,因为它是先出牌的一方。如果先手(A)有王炸的优先级是最高的,最先处理这种情况,直接输出Yes。然后处理先手可以一次性打
2016-11-28 01:48:25
450
原创 Codeforces 626D. Jerry's Protest
题目传送门:http://www.codeforces.com/contest/626/problem/D题意:有很多个气球,每个气球上有对应的一个分值,游戏中的每一轮两名玩家任意从中取一个气球,对应分值高的人这一轮获胜。现在进行了三轮游戏,前两轮A玩家获胜,第三轮B玩家获胜,问有多大的概率B玩家三轮的总获得分值比A玩家的高?解题思路:哈希枚举获胜的分值数,三轮符合题意的情况数除以总情况数即为答案。
2016-11-26 21:02:28
399
原创 POJ2337 Catenyms 字典序输出欧拉路径
经典的建模题目:给你一串单词,问这些所有的单词能否首位相连?解题思路:将每个单词的第一位字母和最后一位字母当做点,一个单词就是一条边,以此为基础构图然后判断是否存在欧拉路径。存在的话利用fleury算法输出欧拉路。因为题目需要输出字典序,因为我们需要做处理:1.对所有字符串以字典序进行预处理排序 2.建图时index大的边先add进去,这是固定的插值技巧,需要掌握。#include<cstdi
2016-11-26 15:32:27
500
原创 POJ2513 Colored Sticks 欧拉路+字典树标号
容易想到把每根棒看做图的一条边,相同颜色的端点归为一个点(相当于连接起来了,粘到一起了)。于是接下来就是判断图中是否存在欧拉路的问题了。(无向图欧拉路存在判定条件:1.图联通(利用并查集判断) 2.度数为奇数的端点数为0个或2个)。Trick:用map对端点颜色进行标号会超时,改用字典树进行优化才能过时限。 AC代码:#include<cstdio>#include<cstring>#incl
2016-11-26 01:11:35
468
原创 HDU 3880 Lucky Numbers 数学题
题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3880题目大意:要构造一个这样的数的集合,里面的数不大于M,且给定a,b两个互质数,对于任意正整数m,集合里至少有m*a或者m*b存在。问这样的集合最少有多少个数。题目分析:容易想到大致的思路,因为目标是使集合中的数最少,那么我们应该取a,b中较大的那个数,然后以其倍数构成这个集合,这样集合里的数会比取
2016-11-07 01:34:03
392
原创 POJ4001/HDU4121 Xiangqi 大模拟
这其实就是一道无脑模拟题。。首先黑方将有四个位置可以走(上下左右)(如果可以走的话),那么就分别模拟走到这四个位置,然后判断会不会被红方将军。如果被红方以任一方式将军则在这种情况下被将死。如果四种走位都会被将死,则输出YES,即黑方彻底玩完。一个我认为的Trick是如果一开始黑方还没走的时候就可以飞将红方,那么此时直接输出NO就好了(不用走,直接黑房赢了),测试样例应该是没有这样的样例的,不过我还是
2016-11-07 01:01:55
638
原创 Codeforces Round #366 (Div. 2) C. Thor (模拟)
Thortime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThor is getting used to the Earth. As a gift Loki
2016-08-08 03:50:37
640
3
原创 合并两个顺序链表的两种方式
struct Node{ int entry; Node* next;};Node* MergeRecursive(Node *first,Node *second){ if(first==NULL) return second; if(second==NULL) return first; Node *head=NULL; if(first->entryentry
2015-04-19 16:51:49
493
转载 集合的可数性
原文地址:http://www.matrix67.com/blog/archives/416 Cantor对集合的一些著名的研究让我们更加清楚地认识了无穷这玩意儿。Cantor发现,无穷集合之间也有大小关系,他把这种大小关系叫做集合的势(cardinality)。正整数和正偶数都有无穷多个,但到底谁要多一些呢?我们认为,正整数和正偶数一样多,因为我们可以在它们之间建立起一一对应的
2015-03-28 11:56:07
2939
原创 Chomp game博弈游戏
先引入Impartial game的概念:对于任意一个游戏局面,游戏双方的合法决策都完全一样,双方唯一的区别就是谁先走。根据这个定义,象棋和围棋这种棋类不是Impartial game,因为每一方走的棋的颜色是不一样的。 我们先来证明Impartial game的其中一方一定有必胜策略,也就是说其中的一方一定能通过这个必胜策略最后赢得游戏。换句话说,就是要证明先手或者后手一定
2015-03-21 13:42:41
3572
原创 Life of game 趣味游戏
1970年英国数学家J.H.CONWAY提出了一种名为Life的趣味游戏,游戏在一个模拟的方格盘上进行,每个方格都有两种可能的状态:存活或死亡。赋予方格一个初始的状态,它将按照一下的规则进行变化: 1:每个方格相邻的八个方格称为方格的邻居。 2:如果一个方格是存活的但是它的邻居数为0或者只有一个,下一代中这个方格由于过于孤独而死亡。 3:如果一个方格是存活的并且有四个
2015-03-03 22:39:19
631
转载 高精度除法
算法主体来自:http://blog.youkuaiyun.com/jarily/article/details/8623810,我做了一些错误的改正以及加了一些注释。最后,把C风格改成了C++风格(我真无聊....)。 算法思想:反复做减法,看看从被除数里最多能减去多少个除数,商就是多少。所以算法核心是写一个大整数的减法函数,反复调用该函数进行减法操作。 算法步骤:用数组a表示被除数,数
2015-02-27 22:40:12
524
原创 高精度乘法
模拟小学生手算,唯一不同的是所有的进位都最后进行处理。#include#include#include#includeusing namespace std;int main(){ int i,j; char a[1234],b[1234]; int c[1234]; memset(c,0,sizeof(c)); gets(a); gets(b); int
2015-02-27 22:35:05
268
原创 高精度减法
和上篇的加法基本一样,细节处做修改即可。#include#include#include#includeusing namespace std;int main(){ int i; char a[1234],b[1234],temp[1234]; int c[1234]; gets(a);gets(b); int la=strlen(a); int lb=st
2015-02-27 22:17:10
309
原创 高精度加法
模拟小学生手算,一位位相加,允许输入数的最高位非零。#include#include#include#includeusing namespace std;int main(){ int i; char a[1234],b[1234]; int c[1234]; gets(a); gets(b); int la=strlen(a); int lb=strle
2015-02-27 22:12:46
247
转载 KMP算法与一个经典概率问题
这篇文章其实不全算转载,因为文章的后面一部分我进行了改动并用自己的不同的思路进行了验证。但是,文章的前面大部分我都没有改动,所以也不好意思归类为原创了。原文作者是大才子:matrix67,原文地址:http://www.matrix67.com/blog/archives/366 考虑一个事件,它有两种概率均等的结果。比如掷硬币,出现正面和反面的机会是相等的。现
2015-02-17 18:13:54
417
原创 娓娓道来:什么是KMP算法
如果你是在电脑前看的这篇文章,请按下CTRL+F键。没错,它弹出了一个有趣的横条。你可以把你想要查找的内容输入到横条中,电脑就会帮你在整个页面中寻找你输入的内容。计算机是怎么帮你找到你想要找的内容的?我们来探讨这个问题。 如果现在给了我们两个字符串,第一个字符串为主串,第二个字符串为子串,我们需要判断子串是否是主串的一部分,怎么进行判断?从常规的思维出发,我们很容易想到,同时从主串和子串
2015-02-11 18:32:17
710
原创 栈的应用——求解表达式
栈有很多经典的应用,求解表达式便是重要的一个。首先要认识栈的基本特征,那就是FILO(first-in-last-out),先进后出。基本上符合先进后出这样一种模式的思想都能用栈来进行实现。那么现在回到我们这次的主题,求解表达式,为什么这会用到栈呢?换句话说,求解表达式哪里体现了先进后出的思想?我们来具体分析。 我们如果要计算这样一个式子:2*3,你会脱口而出是6,计算机也知道是6。
2015-02-10 11:16:27
1610
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人