02 2017 档案
摘要:原题大意:原题链接 给出一个矩阵(矩阵中的元素均为方向英文字母),和人的初始位置,问是否能根据这些英文字母走出矩阵.(因为有可能形成环而走不出去) 此题虽然属于水题,但是完全独立完成而且直接1A还是很开心的 注意:对于形成环的情况则从进入环的交点处重新走一遍,记录步数即可
阅读全文
posted @ 2017-02-28 22:48
despair_ghost
摘要:原题大意:原题链接 给出n个字符串,找出一个最长的串s,使s或者s的反转字符串(只要其中一个符合就行)同时满足是这n个串的子串。 对于样例,第一组ABCD BCDFF BRCD最长的串就是CD;第二组rose orchid最长的子串就是ro
阅读全文
posted @ 2017-02-27 20:56
despair_ghost
摘要:题目描述 对于一个0,1串s, 从左端开始读取它的0获得序列s0,从右端开始读取它的1获得s1,如果s0与s1同构,则称s为倍流畅序列.例如:011001是一个倍流畅序列, 因为:s0 = 0__00_s1 = 1__11_而101不是, 因为:s0 = _0_s1 = 1_1下面的问题是:对于一个
阅读全文
posted @ 2017-02-26 22:20
despair_ghost
摘要:学会strstr的使用 strstr(str1,str2)函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。
阅读全文
posted @ 2017-02-26 22:14
despair_ghost
摘要:问题描述 试题编号: 201409-3 试题名称: 字符串匹配 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行。你的程序还需支持大小写敏感选项:当选项打开时,表示同一个字母的大写和小写看作不同的字符;当选项关闭时,
阅读全文
posted @ 2017-02-26 22:07
despair_ghost
摘要:题目大意;原题链接 给定一个字符串矩阵和待查找的单词,可以朝8个不同的方向查找,输出待查找单词第一个字母在矩阵中出现的位置和该单词被查到的方向. A~H代表8个不同的方向,A代表正北方向,其他依次以45度角的方向顺时针增加. 解题思路: 解法一:Trie树暴搜 因为不查询重复单词,所以dfs(int
阅读全文
posted @ 2017-02-25 22:29
despair_ghost
摘要:题目大意:原题链接 给你一张图,初始你在房间1,初始生命值为100,进入每个房间会加上那个房间的生命(可能为负),问是否能到达房间n。(要求进入每个房间后生命值都大于0) 解题思路: 解法一:Floyd+Bellman 1.Floyd先判断图是否连通,不连通则直接失败 2.Bellman Ford然
阅读全文
posted @ 2017-02-24 12:13
despair_ghost
摘要:题目大意:原题链接 构造一个集合,这个集合内的数字满足所给的n个条件,每个条件都是指在区间[a,b]内至少有c个数在集合内。问集合最少包含多少个点。即求至少有多少个元素在区间[a,b]内。 解题思路: 首先假设s[i]表示从0到i中有s[i]个数属于这个序列。 1. 开始我用每个整数(1,2,...
阅读全文
posted @ 2017-02-23 14:32
despair_ghost
摘要:题目大意:原题链接 就是求每个小星星左小角的星星的个数。坐标按照Y升序,Y相同X升序的顺序给出由于y轴已经排好序,可以按照x坐标建立一维树状数组 关键是要理解树状数组中的c[maxn]数组的构成方式,例如c1=a1,c2=c1+a2,c3=a3,c4=c2+c3+a4,c5=a5, c6=c5+a6
阅读全文
posted @ 2017-02-22 22:45
despair_ghost
摘要:题目大意:原题链接 当排队等候喂食时,奶牛喜欢和它们的朋友站得靠近些。FJ有N(2<=N<=1000)头奶牛,编号从1到N,沿一条直线站着等候喂食。奶牛排在队伍中的顺序和它们的编号是相同的。因为奶牛相当苗条,所以可能有两头或者更多奶牛站在同一位置上(即间距可能为0)。即是说,如果我们想象奶牛是站在一
阅读全文
posted @ 2017-02-22 15:59
despair_ghost
摘要:题目大意:原题链接 一排紧密相连的矩形,求能构成的最大矩形面积。 为了防止栈为空,所以提前加入元素(-1,0)
阅读全文
posted @ 2017-02-21 18:31
despair_ghost
摘要:题目大意:原题链接 一排紧密相连的矩形,求能构成的最大矩形面积。 为了防止栈为空,所以提前加入元素(0,0).
阅读全文
posted @ 2017-02-21 18:28
despair_ghost
摘要:题目大意:原题链接(定长区间求最值) 给定长为n的数组,求出每k个数之间的最小/大值。 解法一:线段树 segtree节点存储区间的最小/大值 Query_min(int p,int l,int r,int ll,int rr)从编号为p的节点开始在区间[l,r]内查询区间[ll,rr]的最小值 Q
阅读全文
posted @ 2017-02-20 23:57
despair_ghost
摘要:题目大意:原题链接 题意很简单,就不赘诉了。 解题思路: 使用二维树状数组,很裸的题。 二维的写起来也很方便,两重循环。 Add(int x,int y,int val)表示(x,y)-(n,n)矩形区域被修改val次(在传入参数时val=1) 如果是要修改(x1,y1)-(x2,y2)的矩形区域。
阅读全文
posted @ 2017-02-20 23:51
despair_ghost
摘要:题目大意:原题链接 给你一个字符串,首先是计算出一个按正常编码的编码长度,其次是计算出一个用霍夫曼编码的编码长度,最后求正常编码的长度除以霍夫曼编码长度的比值,保留一位小数。 解题思路:需要知道 1.正常的编码长度的话,由于都是ASCII码值所以编码长度都为8,所以总长度就是8*字符串的长度Len就
阅读全文
posted @ 2017-02-20 21:08
despair_ghost
摘要:题目大意:原题链接 锯木板,锯木板的长度就是花费。比如你要锯成长度为8 5 8的木板,最简单的方式是把21的木板割成13,8,花费21,再把13割成5,8,花费13,共计34,当然也可以先割成16,5的木板,花费21,再把16割两个8,花费16,总计37,现在就是问你花费最少的情况。 思路:转化为哈
阅读全文
posted @ 2017-02-20 19:31
despair_ghost
摘要:#include #include const int maxn=1e6+5; using namespace std; int r[maxn],c[maxn]; char pic[maxn]; void Swap(int &x,int &y) { int temp=x; x=y; y=temp; } int main() { int n,m,op,x,y,T...
阅读全文
posted @ 2017-02-20 18:24
despair_ghost
摘要:#include using namespace std; int n,A[505][505]; int B[505][505],C[505][505]; int Read() { int d=0; char ch,t=0; while((ch=getchar())==' '||ch=='\n') ; if(ch=='-') t=1; else d=ch...
阅读全文
posted @ 2017-02-20 18:21
despair_ghost
摘要:题目大意:原题链接 给定三个n*n的矩阵A,B,C,验证A*B=C是否成立. 所有解法中因为只测试一组数据,因此没有使用memset清零 Hint中给的傻乎乎的TLE版本: AC版本解法一:神奇的输入优化 之前就看到过几次一个神奇的输入模板,不知道这段代码是否就是那个(提交多次,觉得估计在提交人数多
阅读全文
posted @ 2017-02-20 18:18
despair_ghost
摘要:题目大意:原题链接 给定n个节点,任意两个节点之间有权值,把这n个节点分成A,B两个集合,使得A集合中的每一节点与B集合中的每一节点两两结合(即有|A|*|B|种结合方式)权值之和最大。 标记:A集合:true B集合:false 解法一:dfs+剪枝 解法二:随机化算法(好神奇的思路)
阅读全文
posted @ 2017-02-20 10:59
despair_ghost
摘要:题目大意:原题链接 1输入一个字符串,如果字典中存在该字符串,直接输出,否则; 2.删除,替换,或插入一个字母。如果使得输入字符串==字典中已经有的单词,输出该单词,否则。 3.直接输入下一个字符串,继续匹配.
阅读全文
posted @ 2017-02-19 17:17
despair_ghost
摘要:题目大意:原题链接 给定平面上的N个点,求出这些点一共可以构成多少个正方形。 解题思路: 若正方形为ABCD,A坐标为(x1, y1),B坐标为(x2, y2),则很容易可以推出C和D的坐标。对于特定的A和B坐标,C和D可以在线段AB的上面或者下面,即有两种情况。 根据构造三角形全等可以得知(很简单
阅读全文
posted @ 2017-02-19 11:10
despair_ghost
摘要:原题链接 思路:哈希存入相反数 注意:HDU不支持long long要使用__int64
阅读全文
posted @ 2017-02-18 23:18
despair_ghost
摘要:其中要注意到第三个会与铺好2×(n-1)的情况重复,故不可取,故可以得到递推式 a[n]=2*a[n-2]+a[n-1]; 然后就是高精度部分,可直接用高精度的模板 解法一:递推+高精度 解法二:递推+String应用(模拟)
阅读全文
posted @ 2017-02-18 21:06
despair_ghost
摘要:题目大意:原题链接 一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,若放置一个基站,那么它至多可以覆盖相邻的两个城市。问至少放置多少个基站才能使得所有的城市都覆盖无线? 提示:看清楚题目,'*'是城市,'o'是空地,椭圆的天线覆盖范围要覆盖的是城市'*',而不是覆盖空地 解题思路:关键是建
阅读全文
posted @ 2017-02-18 18:11
despair_ghost
摘要:题目大意:给你一个N*N的矩阵, 里面有K个星球, 我们可以让武器攻击矩阵的一行或者一列来使得这个星球被击碎, 现在问你最少需要几个这种武器才能把所有的星球击碎? 解题思路:关键是建模构图 把每一行当成一个行节点(也当成一把武器,因为一把武器可以消灭一行),构成集合1,每一列当成一个列节点(也当成一
阅读全文
posted @ 2017-02-18 11:17
despair_ghost
摘要:题目大意:原题链接 给出N个未编号的质量各不相同的球,以及它们质量轻重的大小关系,给它们从1~N贴标签编号,无重复。问是否存在可行的编号方法,不存在输出-1, 如果存在则输出唯一一种方案,此方案是使得编号小的球的重量尽量轻,先是编号为1的重量要最轻,其次比编号2,以此类推...... 思路:当解有多
阅读全文
posted @ 2017-02-17 22:07
despair_ghost
摘要:题目大意:给定一个字符串和一本字典,问至少需要删除多少个字符才能匹配到字典中的单词序列。PS:是单词序列,而不是一个单词 思路: 动态规划 主要是知道状态方程的含义: 令dp[i]表示从message中第i个字符开始,到第L个字符(结尾处)这段区间所删除的字符数,初始化为dp[L]=0 (dp[i]
阅读全文
posted @ 2017-02-17 18:22
despair_ghost
摘要:#include #include #include #include #define N (int)(1e7+5) using namespace std; int fa[N],va[N],lazy[N]; bool vis[N]; int n,u,v; long long sum; long long dfs(int i) { if(vis[i]) return 0;...
阅读全文
posted @ 2017-02-17 16:50
despair_ghost
摘要:#include #include #include #include #define maxn 40010 using namespace std; int indeg[maxn]; vector g[maxn]; int main() { int T,n,m; int u,v,w; scanf("%d",&T); while(T--){ sca...
阅读全文
posted @ 2017-02-17 16:49
despair_ghost
摘要:#include #include #include #define maxn 20005 using namespace std; struct Edge { int to; int next; }e[2*maxn]; int t,n,x,y,tot; int head[maxn],num[maxn],balance[maxn]; void Init() { tot=...
阅读全文
posted @ 2017-02-17 16:47
despair_ghost
摘要:1.查找:STL中关于二分查找的函数有三个lower_bound 、upper_bound 、binary_search 。这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数。 ForwardIter lower_bound(ForwardIter first, Fo
阅读全文
posted @ 2017-02-17 10:09
despair_ghost
摘要:题目大意: 给定一些木棒,木棒两端都涂上颜色,求是否能将木棒首尾相接,连成一条直线,要求不同木棒相连接的一端必须是同颜色的。 解题思路: 可以用图论中欧拉路的知识来解这道题,首先可以把木棒两端看成节点,把木棒看成边,这样相同的颜色就是同一个节点 问题便转化为:给定一个图,是否存在“一笔画”经过涂中每
阅读全文
posted @ 2017-02-16 22:10
despair_ghost
摘要:#include #include using namespace std; int n,m,k,vis[10],ans; char c[10][10]; void dfs(int i) { if(m==k) { ans++; return ; } if(i>=n) return ;...
阅读全文
posted @ 2017-02-16 16:34
despair_ghost
摘要:#include #define ll long long using namespace std; //返回a*b%n,要求00){ if(p&1) ans=(ans*a)%n; a=(a*a)%n; p>>=1; } return ans; } //扩展欧几里得算法 void gcd(ll a,ll b,...
阅读全文
posted @ 2017-02-16 15:41
despair_ghost
摘要:题目大意建模: 一个有N个节点的无向图,要求对每个节点进行染色,使得相邻两个节点颜色都不同,问最少需要多少种颜色? 那么题目就变成了一个经典的图的染色问题 例如:N=7 A:BCDEFG B:ACDEFG C:ABD D:ABCE E:ABDF F:ABEG G:ABF 画成图就是: 首先考虑四色定
阅读全文
posted @ 2017-02-16 11:06
despair_ghost
摘要:最长上升子序列(LIS)的典型变形,O(n^2)的动归会超时。LIS问题可以优化为nlogn的算法。 定义d[k]:长度为k的上升子序列的最末元素,若有多个长度为k的上升子序列,则记录最小的那个最末元素。 注意d中元素是单调递增的,下面要用到这个性质。 首先len = 1,d[1] = a[1],然
阅读全文
posted @ 2017-02-15 10:48
despair_ghost
摘要:题目大意:就是给定一组字母的大小关系判断他们是否能组成唯一的拓扑序列。 是典型的拓扑排序,但输出格式上确有三种形式: 1.该字母序列有序,并依次输出; 2.判断该序列是否唯一; 3.该序列字母次序之间是否有矛盾,即是否有环存在; 而这三种形式的判断是有顺序的:先判断(3)是否有环,再判断是否有序(1
阅读全文
posted @ 2017-02-14 14:53
despair_ghost
摘要:问题:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何? 简单点说就是,存在一个数x,除以3余2,除以5余三,除以7余二,然后求这个数。上面给出了解法。再明白这个解法的原理之前,需要先知道一下两个定理。 定理1:两个数相加,如果存在一个加数,不能被整数a整除,那么它们的和,就不能被
阅读全文
posted @ 2017-02-11 12:32
despair_ghost
摘要:题目大意: 题目大意: 题目大意: 一个正整数K,给出K Mod一些质数的结果,求符合条件的最小的K。例如,K%2=1,K%3=2,K%5=3符合条件的最小的K=23。 一个正整数K,给出K Mod一些质数的结果,求符合条件的最小的K。例如,K%2=1,K%3=2,K%5=3符合条件的最小的K=23
阅读全文
posted @ 2017-02-11 11:53
despair_ghost
摘要:原题链接 解法一:枚举+搜索 解法二:Nim博弈 Nim游戏是博弈论中最经典的模型(之一),它又有着十分简单的规则和无比优美的结论 Nim游戏是组合游戏(Combinatorial Games)的一种,准确来说,属于“Impartial Combinatorial Games”。 满足以下条件的游戏
阅读全文
posted @ 2017-02-05 17:11
despair_ghost

浙公网安备 33010602011771号