- 博客(55)
- 收藏
- 关注
原创 HDU 6153 A Secret(拓展KMP)
HDU 6153 A Secret题意先翻过来,后缀先变前缀(不想描述后缀啦^_^)给出两个串,这里我们记作S串和T串对于T串的一个前缀t串,求出t串在S串中出现了多少次,这个小t串对答案的贡献就是”次数 * t的长度”求T串所有前缀对答案的贡献和解决对拓展KMP没经验^_^,所以现场没写出来,惭愧不管三七二十一,先翻转过来再说…重点,我们求出在S串里,以下标i开始,有多长的字符串可以与T串的
2017-08-21 00:12:23 585
原创 AtCoder Beginner 071 Coloring Dominoes(规律|思想))
AtCoder Beginner 071 Coloring Dominoes题意给出1x2和2x1的矩形,用三种颜色去染色,问一共有多少种方案…解决本来想暴力搜索的(做的题还比较少,缺少经验)…然后就一直在写暴搜…官方题解讲的挺详细的了 官方题解链接 1. 把2x1的(竖着的)叫一类矩形,把2 x (1x2)的方块叫做二类矩形 2. 我们考虑最左边的一个(或者两个)矩形. 如果是一类矩形,有三
2017-08-20 23:02:31 490 2
转载 ACM进阶之路(欢迎来看)
ACM进阶指南(转载)ACM队不是为了一场比赛而存在的,为的是队员的整体提高。大学期间,ACM队队员必须要学好的课程有:C/C++两种语言高等数学线性代数数据结构离散数学数据库原理操作系统原理计算机组成原理人工智能编译原理算法设计与分析除此之外,我希望你们能掌握一些其它的知识,因为知识都是相互联系,触类旁通的。以下学习计划每学期中的内容不分先后顺序,虽说是为立志于学习ACM的
2017-08-20 19:21:48 492
原创 (计算几何)HDU 6127 Hard challenge
HDU 6127 Hard challenge(http://acm.hdu.edu.cn/showproblem.php?pid=6127)题意平面坐标系,给出n个点,保证任意两点的连线不过原点. 每一个点都有一个权值,两点之间的线段的权值等于端点权值之积 问如果过原点做一条直线,直线穿过的线段的权值和最大是多少解决这道题我们卡住了,想到了要用极角排序来做,也想到了去枚举每一个经过原点和点的直
2017-08-16 19:46:38 634 4
原创 CodeForces 898 F Restoring the Expression(字符串Hash)
Restoring the Expression题意给一个由数字组成的长度1e6的串,要把串划分成符合整数加法的“a+b=c”形式解决字符串哈希直接判过去就可以(seed选10)学习一下用字符串哈希来解决字符串匹配问题(以前缀Hash为例) 1. Hash[i] = (Hash[i-1] * seed + str[i]) % MOD 2. 可以通过哈希前缀和,获取[l , r]子串的Hash值
2017-12-31 11:32:57 544
原创 HDU 4311 4312 切比雪夫距离与曼哈顿距离
HDU 4311题意二维坐标系上给出n个点,要求在n个点中选定一个点作为中点,使得其它所有点到该点的曼哈顿距离之和最小 曼哈顿距离也叫都市距离,计算公式d = |x1-x2|+|y1-y2|解决 x轴和y轴独立,分开来做 枚举每一个点当做中点的情况,但是n^2的算法会超时按x坐标升序排序第一个点扫n-1次求得以第一个点作为中点的x轴距离之和以sumx[i] = sum[i-1]+
2017-12-19 20:30:19 425
原创 CodeForces 612D The Union of k-Segments(排序+区间计数、扫描线)
The Union of k-Segments题意略解决对点分类,分为左端点和右端点所有点丢到一个vector里按照x坐标升序排序,坐标相同时优先考虑左端点按照区间计数原理,从前往后扫描所有点,扫描到左端点计数器+1,右端点计数器-1,那么计数器>=k的区间都是合法区间通过标记去维护合法区间的起始位置和结束位置,维护答案即可int ans1[maxn] , ans2[maxn];stru
2017-12-06 20:26:58 405
原创 HDU 1199 Color the Ball(离散化入门+非线段树做法)
HDU 1199 Color the Ball题意一个数轴,数轴上点的坐标从1~1e9一共有n次操作,以a,b,c形式输入,是把a~b的这段区间染色成白色/黑色询问n次操作后,最长的连续白色区间,输出区间的左端点和右端点解决注意到点的范围很大,而且只有2000个区间,4000个点,点十分稀疏,不能使用普通数组进行存储初学离散化,这是我做的第一道离散化的题(新手入门,还望见谅)刚开始是想
2017-10-04 23:27:04 608
原创 HDU4452 Running Rabbits(模拟)
题目链接题意一个NxN的方阵。一个机器人从左下角出发,另一个机器人从右下角出发。机器人在撞墙的时候会掉头(turn around),在固定的时间会左转如果两个机器人想遇,则两个机器人互换方向(只会在整数小时时相遇),且忽略此时的左转解决模拟,使用一个类来封装一些函数,会好写好多#include<bits/stdc++.h>using namespace std;int N;struct
2017-10-03 14:42:42 344
原创 POJ_3468 A Simple Problem with Integers(线段树区间修改+附线段树模板)
题目链接题目大意中文题目解决线段树区间修改+求和查询的裸题直接附上代码^_^#include <algorithm>#include <iostream>#include <cstring>#include <vector>#include <cstdio>#include <string>#include <cmath>#include <queue>#include <se
2017-10-02 20:45:07 253
原创 Atcoder 083 Restoring Road Network(类弗洛伊德)
题目链接题意一共有N个城市,通过N-1条边连接。 现在给出一个N x N的矩阵,表示从i->j的最短路径,求能否根据这个N x N的矩阵求出最短路,如果最短路出错,输出-1解决 k /\ / \ i /____\ j因为N只有300级别,所以可以n^3算法设三个点 i , j ,k如果存在i->k + k->j的最短路径和< i->j的最短距离,那
2017-09-17 20:27:11 383
原创 AtCoder Beginner 073 joisino's travel(多源最短路径Floyd|DFS)
题目链接题意一共有n个点,m个边,现在一个人要去其中的r个地点R1,R2,R3,R4…Rr(不一定按照这个顺序)他可以坐飞机去第一个点,然后坐飞机从最后一个点返回,剩下的点只能走路,让我们求出“经过这r个点的最短路程” 这个题我坑了,刚开始没有想到可以从任意一个点出发。一直以为题意是必须从第一个点出发,所以把dfs()里面的for(int i=1;i<=r;i++)写成了for(int i=2;
2017-09-09 22:25:27 526
原创 2017 ACM-ICPC 亚洲区(乌鲁木齐赛区)网络赛 E题
题意 T(i) = i*(i+1)/2,给定一个N,求r,r满足r>=N且T(r)是平方数解决先模拟了一遍,打了一些表,发现把所有符合条件的r拆成两部分后,会出现两个完全平方因子。比如49,T(49)=49*(50/2)=49*25,49和25都是完全平方数再比如8,T(8)=(8/2)*9=4*9,4和9都是完全平方数因为N最大取到1e16,所以只要求出来一个比1e16大一点的r就可
2017-09-09 21:47:58 398
原创 UVA 11093 Just Finish it up(模拟|想法)
题目链接题意环形跑道上有n个加油站,第i个加油站可以加Pi汽油,从i加油站开到下一个加油站需要Qi汽油。任务是选择一个加油站作为起点,可以走完一圈后回到起点。解决从1开始枚举,以每一个点作为起点,如果可以就输出答案;如果当前节点不可以作为出发点,说明到了某一个点tmp不能再继续向下走了,那么从起点到tmp的这些点也肯定不能作为起点。#include<bits/stdc++.h>using name
2017-09-09 11:27:08 325
原创 UVA 540 Team Queue(团体队列)
题目链接题意t个团队的人正在排队。 每次新来一个人,如果他有队友在排队,那么这个人会插入到最后一个队友的后面; 如果没有队友在排队,那么他会插入到长队的队尾解决团体队列问题用一个队列all来表示t个队伍组成的队列,元素是队伍编号建立t个队伍内部的队列team[maxn],用来表示团队内部的队列注意当这个人入队时如果他的队伍不在all队列中,要把这个队伍入队(all队列中)注意当一个人离
2017-09-09 09:40:42 564
原创 UVA 1595 Symmetry (set)
题目链接题意给出平面上n个点,问是否存在这样的一条竖线,使得所有点左右对称解决根据所有点的横坐标之和求出平均值,即为竖线的水平位置输入的时候把点存在自定义结构体的set中遍历每一个点,看是否能在set中查找到关于竖线对称的点,找不到的话就不存在struct point{ int x,y; point(){} point(int xx,int yy) {
2017-09-09 09:05:32 293
原创 UVA 10305 Ordering Tasks(拓扑排序)
[题目链接(https://vjudge.net/problem/UVA-10305)题意n个变量,(u,v)表示u要在v前面,给出所有的(u,v)关系,询问一个合适的排序方案解决典型的拓扑排序具体可以看下代码注释#include<iostream>#include<queue>#include<cstdio>#include<cstring>using namespace std;
2017-09-08 22:27:33 256
原创 UVA 572 Oil Deposits(DFS)
题目链接题意给出一个m行n列的矩阵,@字符表示油田,油田可以八连通,询问一共有几个八连块解决我想说对于两个月前(2017.07)的我,我也是连这种简单的DFS都不会的人(⊙o⊙)…经过暑期集训会的东西多了好多好多,如果让我一个人学…怕是要完^_^解决就是DFS深搜一下遍历每一个是’@’的点,让ans+1具体可以看下注释^_^#include<bits/stdc++.h>using na
2017-09-08 22:14:47 260
原创 UVA 699 The Falling Leaves(二叉树|DFS)
题目链接题意给出一棵二叉树的先序遍历。 每一个节点都有一个水平位置,它的左儿子在它左边一个单位的位置,右儿子在它右边一个单位的位置。 从左到右输出每个位置的节点权值和解决递归建树即可#include<bits/stdc++.h>using namespace std;const int maxn = 1001;int sum[maxn];void build(int val , int
2017-09-08 21:23:20 274
原创 UVA 839 Not so Mobile(二叉树|DFS)
题目链接题意输入一个树状天平,每一个天平输入“左质量”、“左力臂”、“右质量”、“右力臂” 当力臂为0的时候说明这边是一个子天平,询问是否能够平衡解决递归建树#include<bits/stdc++.h>using namespace std;bool ok;int tree(){ int Wl,Dl,Wr,Dr; scanf("%d%d%d%d",&Wl,&Dl,&Wr
2017-09-08 20:49:55 340 1
原创 GYM 100488 Construct a Permutation(构造|想法)
题目链接题意给出a和b,让你构造出来最长的、且最长上升子序列长度为a,最长下降子序列长度为b的序列。 这个题我们没有想出来要怎么构造 ,还停留在这个最大长度是不是a+b(b等于1的时候是a)的阶段解决思路是创建b组长度为a的上升子序列,而且每一组的最大值都比前一组的最小值来的小,则必然满足题意#include <algorithm>#include <iostream>#include <cs
2017-09-08 19:41:25 324
原创 GYM 100488 Two Pirates(想法)
题目链接题意有两个海盗,第一个海盗可以随便拿金币,第二个海盗每次都从剩下的金币里面拿第一个(太傻),然后问海盗a最多能拿多少个金币解决由于第一个人可以随便拿,那么不妨每次让其拿当前物品序列的第一个 开一个最小堆存下第一个人拿的所有物品的数量 如果这次对方拿的物品价值大于最小堆 中元素最小值,说明第一个人在之前某一轮不应该拿第一个,而是应该拿这次对方拿的这个物品 那么就把最小堆中最小元素删掉,把
2017-09-08 19:38:17 365
原创 GYM 100488 Toy Soldiers
题目链接题意一排娃娃,每一个都有自己本来的颜色。重新涂色m次,问最少要重新涂色多少次能让所有娃娃的颜色一致。 如果不需要重新涂色输出0,经过m次涂色后仍不能同色输出-1;解决一开始因为每次涂色后都进行了judge(),所以被超时之后更改了judge()函数,尝试了从两端开始检测是否相等,同时判断两端和中间是否相等。然而* 还是被超时*最后想到了本题核心* 没有必要每一次重新涂色后就进行jud
2017-09-08 17:24:29 284
原创 GYM 100488 Yet Another Goat in the Garden
题目链接题意迷之题面,没有看懂,所以没做出来….Find what part of the garden could be absorbed by the black hole in the worst case.这句话可以看出来,原来出题人是想要我们求百分比。 坑啊/(ㄒoㄒ)/~~ 解决 余弦定理: cos A=(b²+c²-a²)/2bc 海伦公式: p=(a+b+c)/2,S
2017-09-08 17:21:54 305
原创 UVA 201 Squares(枚举)
题目链接题意给出一个平面,询问可以构成多少个正方形解决注意V的i,j是反的题意要求长度从小到大输出,我们就枚举长度枚举长度之后枚举左上角判断正方形是否存在注意输出格式#include<bits/stdc++.h>using namespace std;int H[10][10],V[10][10];bool judge(int i, int j, int len) //判断以i,
2017-09-08 17:03:47 283
原创 UVA 1149 Bin Packing(贪心)
题目链接题意给出n个长度l1 l2 … ln,一个m。 每一个容器长度为m,可以放一个或者两个元素(两者长度之和<=m),询问为了装下这n个元素需要多少个容器(最少)解决思路是排序后从小到大开始选,那一个大的之后看能不能再拿一个最小的,如果能拿最小的就等价于这两个能放在同一个容器中,如果不能拿就说明最大的这个只能单独占据一个容器。 1. 从小到大排序 2. 从大的开始选,每次让ans+1,能选
2017-09-08 16:30:58 315
原创 UVA 1339 Ancient Cipher(映射 | 想法)
UVA 1339 Ancient Cipher题意给出两个字符串,可以重新排列可以自由映射,把其中的一个字符映射到另一个字符。询问是否存在一种一一映射方式,使得原来的字符串可以映射到目标字符串解决由于可以重新排列,所以字符的位置不重要(这点以后会游泳,记住) 由于本题中的映射只能一对一,所以要求如果我们记录下26个字符每个字符出现的次数,并对字符出现的次数进行排序,str1(原串)里一个字符出现
2017-09-05 17:09:18 226
原创 Python网络爬虫学习笔记(第一周)
Pyhon网络爬虫学习Request库入门 Request是目前公认的最好用的爬虫库安装方法pip install requests测试库:import requests7个主要方法.request()注意没有s,用于构造一个请求,且支撑以下所有方法.get()获取HTML页面的主要方法,对应于HTTP的get.head()获取HTML页面头信息的方法,对应于HTTP的HEAD.
2017-08-30 11:27:52 771
原创 UVA 514 Rails(模拟|栈)
题目链接题意n个火车进站,给出一个给定的n个火车的出站顺序,问是否可行解决栈模拟,主要分三种情况 1. 一进栈就直接出栈 2. 目标编号和栈顶元素相同,栈顶元素出栈#include<bits/stdc++.h>using namespace std;int main(){ int num[1005]; while(1) { int n;
2017-08-30 11:22:38 277
原创 UVA 10285 Longest Run on a Snowboard(记忆化搜索|动态规划入门)
题目链接题意给出一个m x n的地图,要求寻找地图上严格下降的最长路径解决入门动态规划我们使用dp[i][j]保存“从当前节点出发,能走的最长路径的长度”对每一个点进行一次dfs,dfs的同时保存dp[i][j]注意记忆化搜索,一个节点计算过,就不必再次计算了,使用vis[i][j]保存当前节点是否访问过#include<bits/stdc++.h>using namespace std;
2017-08-28 19:41:46 319
原创 我的Ubuntu常用软件(良心|继续补充)
ubuntu使用心得软件篇Firefox16.04的系统默认的Firefox版本可能会比较低,可能不支持中文可以在应用商店更新到最新版本,就可以支持中文啦^_^搜狗输入法下载地址下载deb包后双击安装即可Haroopad这个是我最喜欢用的MarkDown编辑器了^_^下载可以在它的官网进行下载 网易云音乐良心软件,就不多说了^_^下载deb包后直接双击,就可以在应用商店安装了!!
2017-08-23 21:16:05 1858
原创 UVA 11572 Unique Snowflakes(滑窗|双指针)
UVA 11572 Unique Snowflakes(https://vjudge.net/problem/UVA-11572)题意一个长度为n的序列A,找到一个尽量长的连续子序列,并且该序列中没有相同元素解决以区间来思考这个问题,让右指针不断增加,增加到一个不能增加(冲突)的位置当无法延伸右指针,也就是说A[right]在A[left,right-1]这段出现过,此时增大左指针我们增加左指
2017-08-23 09:27:20 463
原创 HDU_1016 Prime Ring Problem(素数环|经典回朔|DFS)
HDU_1016 Prime Ring Problem题意题意就是经典的素数环….解决经典的回朔问题可以写出一个判断当前数字是否是素数的函数DFS的过程是一个不断试图对当前位置填方数字的过程回朔的时候记得取消vis数组的标记#include<bits/stdc++.h>using namespace std;int n,num[25],vis[25];int prime[12]={2
2017-08-20 23:40:53 261
原创 UVA 12563 Jin Ge Jin Qu hao(01背包|经典动态规划)
题目链接题意可以参见紫书P274 1. n首歌,在t-1秒内唱完 2. 唱完之后唱678s的金曲,这样就能使唱的时间最长 3. 我们要先保证唱的总曲目最多,当曲目相同的时候保证总时长最长解决 经典的01背包问题考虑到状态比较复杂,有曲目,有时长.我们把状态用一个结构体来表示这里参考了下博客,用了滚动数组要注意一下,如果前n首的总时长<=t-1,那么这n首歌都可以唱注意一下我们最
2017-08-20 00:10:19 251
原创 Codeforces_841_B Godsend(思路|简单博弈)
Codeforces_841_B Godsend题意A和B两个人玩游戏 1. 在一个数组num[]中 2. A先从num[]数组中选择”任意的”“区间和是奇数”“连续的”一个区间,然后把这个区间的数字去掉. 3. 接下来是B从剩下的选择”任意的”“区间和是偶数”“连续的”一个区间,然后把这个区间的数字去掉 4. 直到谁没有数字可以去掉了,就输了解决第一次做cf有点小紧张,然后想了想就去
2017-08-19 23:39:53 417 1
原创 Codeforces_841_C Leha and Function(贪心+构造|规律)
题目链接题意F(n,k): 一个1~n的集合M,从M中任意拿出k个元素,构成大小为k的子集, F(n,k)是所有子集的最小值的贡献的平均值 For example, let’s find F(4, 2). All possible 2-element subsets of {1,2,3,4} are: {1, 2}, {1, 3}, {1, 4}, {2, 3}, {2, 4}, {3, 4}.
2017-08-19 23:15:03 734
原创 (已解决)雷柏v500在Ubuntu系统下键位映射错误
问题想买个机械键盘码代码,没有留意就入手了这个便宜的机械键盘. 1. 手感还可以 2. ubuntu下ctrl和alt映射到了shift键位,很伤解决一共解决了两次才彻底解决了这个问题 可能大家能看到一些博客传送门 但是要注意到这个是v7的 v7的 v7的!!!最后是通过重新写入驱动解决的^_^ 驱动是网上找的github地址步骤下载驱动github地址解压cd到解压的文件夹执行m
2017-08-19 21:57:57 2087
原创 UVA 1152 4 Values whose Sum is 0 (二分)
UVA_11524题意给出A B C D四个集合,要求从每个集合中选择a b c d使得a+b+c+d=0。 问有多少种选择方法?解决意识到O(n^4)的算法会超时通过枚举a+b的所有可能,查找-c-d的个数,累加即可注意数组比较大,开在全局里面#include<iostream>#include<cstdio>#include<algorithm>using namespace s
2017-08-19 19:30:16 218
原创 UVA 725 Division(暴力枚举 简单)
UVA 725 Division题意输入n,输出满足abcde/fghij=n的表达式(从小到大),其中a~j是0~9的一个排列解决枚举fghij,算出abcde,然后判断一下0~9的数字有没有被无重复的用完就是注意一下,0~9的每一个数字都要用到int used[10];bool judge(int a,int b){ if(b>98765) return false;
2017-08-19 18:19:08 356
原创 20170816(二叉树的建树与遍历 计算几何 信心)
心情记录 放假,去实验室补题,大学长给了我信心! 每个人都有从弱变强的过程,我只付出了一个月出头,只是很多人的1/36啊 加油↖(^ω^)↗知识点补充手动扩栈#pragma comment(linker, "/STACK:1024000000,1024000000")题目HDU 6127 Hard challenge题意平面坐标系,给出n个点,保证任意两点的连线不过原点.
2017-08-16 23:23:47 268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人