纪中成神之路
波波i
此微博用来学习,和嘿嘿嘿。
展开
-
【NOIP2014模拟9.9】逆光 (Standard IO)
题意:一些向右向左的花,把他们全部搞掉,如果被搞掉的被一朵花看到那么就会好感度减一,问你一共会减多少。花少于2000000思路:简单一想,他们只有><才会被看到,>>,<<,<>都不会被看到,那么就是求有多少个><这样的匹配,还是会超时,只需要>做一下前缀和就好了。程序:const maxn=1000000;var a,f,b:array [0..maxn] of longint; i,j,原创 2017-01-13 21:33:54 · 310 阅读 · 0 评论 -
Pla
题意给你n个平面举行的高和长,问你需要多少刷多少个矩形可以刷完所有的。思路只需要初略一想,就知道长没用,只用枚举高,一个个按步骤走。 建一个站: 1.如果加入的数比栈顶大,那么就将这个数放到栈顶前面。同时答案加一 2.如果加入的数比栈顶小,那么在栈里面找一个最小的比他大或相同的数作比较,如果相同答案就不变不然就放到那个数的前面,同时答案加一程序const maxn=10000000; v原创 2017-01-12 21:47:13 · 376 阅读 · 0 评论 -
简单游戏
题意给你n个数的排列,找出一种排列方式使得他们用这种方式加起来的值为s 则将A1、A2相加,A2、A3相加……An-1、An相加,则得到一组n-1个元素的数列B;再将B1、B2相加,B2、B3相加,Bn-2、Bn-1相加,则得到一组n-2个元素的数列……直到只有一个数。思路:只需要找规律就可以知道他们的顺序权值关系是一个杨辉三角型了,然后用dfs搜索,不加优化40分,优化三方面,如下: 1.如果原创 2017-01-12 21:58:38 · 248 阅读 · 0 评论 -
开灯 (Standard IO)
题意:指定两个数,a,t(a为实数,t为正整数)。将编号为[a],[2*a],[3*a],……,[t*a]的灯的开关各按一次。其中[k]表示实数k的整数部分。一开始全是关灯,求最小的开着的灯。 记T=t1+t2+t3+……+tn。 对于100%的数据,满足T<=2000000,满足n<=200000,1<=ai<100,1<=ti<=T思路:直接暴力枚举就好了,一个个t跟着做程序: const原创 2017-01-19 21:14:51 · 357 阅读 · 0 评论 -
长方形 (Standard IO)
题意:1)这张纸的长度、宽度分别为n,m。小明将这张纸看成是由n*m个格子组成,在剪的时候,只能沿着格子的边缘剪。 2)这张纸有些地方小明以前在上面画过,剪出来的长方形不能含有以前画过的地方。 3)剪出来的长方形的大小没有限制。 求出所有可能思路:每次加入一个数的时候统计他可以向前多少个,向上多少个,来源就是前面的加一,就是说如果前面的上为0,这一个就是一,然后用乘法原理一乘就好了。 时间复原创 2017-01-19 21:31:41 · 261 阅读 · 0 评论 -
【NOIP2014模拟】邻近(near)
题意:有n个无聊的人,对于一条长为m(n<=m)的线段,这n个人依次站到自己的位置上,其中第i个人位于位置pi(1<=pi<=m)上,且他的无聊值为bi(0<=bi<2^31)。我们定义一个队伍的友善值为每对相邻的人的契合度之和。两个人的契合度定义为他们的无聊值的异或值。 我们要知道的是在每个人加入之后整个队伍的友善值。为了更方便确认你能够得到答案,输出每个人加入后整个队伍的友善值的异或和即可原创 2017-01-20 21:56:37 · 363 阅读 · 0 评论 -
打砖块
题意:在刚开始的时候,有n行*m列的砖块,小红有k发子弹。小红每次可以用一发子弹,打碎某一列当前处于这一列最下面的那块砖,并且得到相应的得分。 如图所示: 某些砖块在打碎以后,还可能将得到一发子弹的奖励。最后当所有的砖块都打碎了,或者小红没有子弹了,游戏结束。思路:一开始先把每一列求一个用j发子弹打出的最大值,然后一列一列的扫过去, 设f[i,j]为钱i列用了j发子弹的最大值,可以得出方程原创 2017-01-19 21:25:42 · 1228 阅读 · 0 评论 -
【NOIP2014模拟】逻辑的连通性 (Standard IO)
题意:找出一个图的强连通分量思路:好像是裸题,就是一个tarjan,不过我没有学过….尴尬程序:uses math;const maxn=600000;var n,m,i,j,p,all,ans,o:longint; a,next,last,x,y,low,dfn:array [0..maxn] of longint; v:arra原创 2017-01-21 16:29:36 · 334 阅读 · 0 评论 -
【NOIP2014模拟11.2A组】国色天香 (Standard IO)
题意:用给定的火柴数量,找出一个组成的最小数和最大数,要全部用完 思路:找最大的很容易,先要让位数最多,然后在前面一个最大。 找最小的就是让位数最少,就用8,然后在取出他们剩下的可能余数在进行处理。最后算出答案,不过还可以手算打表,哈哈哈程序:var t,n,i,j:longint; s:string;begin readln(t);原创 2017-01-21 16:34:20 · 386 阅读 · 0 评论 -
【NOIP2013模拟联考15】人类基因组(genes)
题意:L教授最近正在研究一个关于人类基因的项目,基因可以被看作一个长度为N的序列:A0,A1,……,An-1。对于这个基因序列循环移动k位之后,就可以得到一个新的基因序列为:Ak,Ak+1,…,An-1,A0,A1,…,Ak-1。当一个基因序列满足对于任意的前i(1<=i<=n)项和都满足不小于0,我们就称这个基因序列为优质基因序列。由于L教授最近工作比较繁忙,所以找到了正在实验室闲逛的你,你的任务原创 2017-03-18 15:24:42 · 648 阅读 · 0 评论 -
黑匣子
题目大意给你一些数,你可以选着按顺序插入,和查找第k大的数是哪个,每次查找输出低k大的数思路:一个大根堆加一个小根堆… 或者是用平衡树或者是权值线段树… 抱歉我是口头ac,啊哈哈哈。 我的方法是离线做的,你把每次操作都给保存下来,先用所有的数去造一棵树,每次插入就变成删除,然后用数组存每次的查找结果,最后反正输出。程序:uses math;const原创 2017-08-08 20:18:00 · 372 阅读 · 0 评论 -
城市交通
题目大意:编号为1~n的n个城市,每个城市有两个权值Ai和Bi。 对于两个城市i和j,i可到j当且仅当j>i,而费用为(j-i)*Ai+Bj。 求从城市1到城市n的最小费用。n=100000思路:dp方程显而易见f[i]:=min(f[j]+(j-i)*ai+bj),因为n=100000直接做是不可以的,那么现在就要用斜率优化优化,把式子化简。 f[j]+j*a[i]+b[j]+i*a[i原创 2017-08-08 20:26:37 · 444 阅读 · 1 评论 -
Srm590】Fox And City(fox)
题目大意:给你很多的字符串,其中*号可以匹配任意长度的字符,然后问你所有字符串两两之间是否可以匹配。可以输出Y不然输出N 个数少于100000,字符串总长度20000000;思路:以前我做过一道题,就是只有两个数组,一个有*号,一个没有。然后求是否匹配,这个可以用dp 求,所以我一直在想,然后发现搞不出来。最后我发现,如果两边都没有特殊符号,那么就是kmp,如果只有一边有就可以用原创 2018-02-01 20:12:27 · 300 阅读 · 0 评论 -
【NOI2014】动物园
题目大意:对于字符串 S 的前 i 个字符构成的子串,既是它的后缀同时又是它的前缀,并且该后缀与该前缀不重叠,将这种字符串的数量记作num[i]。例如 S 为 aaaaa,则 num[4] = 2。这是因为 S 的前 4 个字符为 aaaa,其中a 和 aa 都满足性质‘既是后缀又是前缀’,同时保证这个后缀与这个前缀不重叠。特别地,为了避免大量的输出,你不需要输出 num[i] 分别是多少,你原创 2018-02-03 20:27:17 · 277 阅读 · 0 评论 -
jzoj 5661. 【GDOI2018Day1模拟4.17】药香沁鼻
题目大意:思路:因为选y一定要先选x,所以这是一题0.1分数规划的树形依赖背包。(比较懒) 先用dfs把树转化成序列,如果cnt>W[I]那么就是可以装下的那么当先点的背包就是从他的子节点加上自己价值的背包或者兄弟节点的背包加上自己。如果cnt>W[I]就直接把他和他的兄弟背包合并。最后求出答案就好了。程序:#include<cstdio>#...原创 2018-04-17 20:43:37 · 193 阅读 · 0 评论 -
【Usaco 2007 Dec gold】队列变换
题意:每次,他在原来队列的首端或是尾端牵出一头奶牛,把她安排到新队列的尾部,然后对剩余的奶牛队列重复以上的操作,直到所有奶牛都被插到了新的队列里。求字典序最小思路:用指针一个指向头,一个指向尾,向里面作比较,如果有相同的就比较他们前面一个,还相同就前面两个,一直下去。程序: var i,j,n,m,ii,jj,k:longint; s,s1:ansistring;原创 2017-01-17 16:22:58 · 256 阅读 · 3 评论 -
【Usaco 2007 Dec silver】穿越泥地 (Standard IO)
题意:FJ的屋子在平面坐标(0, 0)的位置,贝茜所在的牛棚则位于坐标(X,Y) (-500 <= X <= 500; -500 <= Y <= 500)处。当然咯,FJ也看到了地上的所有N(1 <= N <= 10,000)个泥塘,第i个泥塘的坐标为(A_i, B_i) (-500 <= A_i <= 500;-500 <= B_i <= 500)。每个泥塘都只占据了它所在的那个格子。不能走到池塘原创 2017-01-17 16:19:00 · 629 阅读 · 0 评论 -
【Usaco2009 gold 】修建道路
题意:求最小生成树思路:把他给你的边当做长度为0,然后根据欧几米的距离连边,并查集搞一搞,就好了程序: type Point=record x,y:longint; w:real; end;const maxn=1000000; maxv=1000;var f,x,y:array [1..maxn] of longint; s:array [1..maxv,1原创 2017-01-17 16:15:12 · 350 阅读 · 0 评论 -
【NOIP2014模拟9.7】我要的幸福 (Standard IO)
题意:给你个n*m的矩阵,他们有权值,0不能走,而且只能向下向右走。求出一条路径的字典序最小。走不到输出Oh,the life is too difficult!思路:先把所有的不可以走的路求出来,然后找他们可以走的路,全部入队,然后只保留最小的,如果有同个就全部保留,然后用这些数接着走,直到有n*m-1个队列就好了。程序:const maxn=1000;var a,f:array [0..m原创 2017-01-13 21:40:37 · 378 阅读 · 0 评论 -
天黑黑 (Standard IO)
题意:给n个数n<200000 给你一串数,A表示下面两组数求和,B表示下面两组数保留最大值。数不会超过n个 X表示可以填一个数思路:因为B会让一个组的元素少掉,那么就求有多少个元素要用,然后把最大的那几个要用的加起来就可以了程序:const maxn=2000000;var a,f:array [0..maxn] of longint; p:array [0..maxn] of cha原创 2017-01-13 21:47:20 · 234 阅读 · 0 评论 -
OIBH杯第三次模拟赛(普及组)Problem 3 : maxsum 最大约数和
题意:给一个s,用和不超过s 的数使得他们的因数和最大,不包括本身。思路:水dp f[i]:=f[k]+f[n-k];程序:const maxn=1000;var f:array [0..maxn] of longint; i,j,n,m,x,k:longint;function max(x,y:longint):longint;begin if x>y then exit(x)原创 2017-01-13 21:50:37 · 427 阅读 · 0 评论 -
Watering the Fields (最小生成树)
题意:给你n个点的坐标,然后他们之间的修路,费用是他们的欧几里得距离的平方。但是费用小于s的老板不就让修,因为他们太有钱,想多花一点。现在找一条道可以使他们全部联通,但又要最小……n<2000思路:直接最小生成树就好了,预处理的时候吧那些没用的边去掉就好了。源代码:const maxn=2000;var x,y,f:array [1..maxn] of longint; i,j,n,m,p,原创 2017-01-14 15:34:12 · 368 阅读 · 0 评论 -
The Lazy Cow(前缀和)
题意:给你一个n*n的矩阵,每个点上有权值,然后可以找一个点,那个点可以用k步走到的地方都加起来,求出最大值,只可以走一格n<400思路:只需要画一个图,就可以发现是以中心店为菱形的点被包围,然后就可以用n*n,枚举中心点,求每一行的前缀和,然后枚举每一行要加多少就好了,总n*n*n源程序:const maxn=500;var a:array [0..maxn,0..maxn] of long原创 2017-01-14 15:47:17 · 489 阅读 · 0 评论 -
Mooo Moo(dp)
题意:FJ 已经完全忘记了他有多少头奶牛!但是,跑到他的草场里数奶牛是一件很尴尬的事情,因为他不想让奶牛们知道他记忆有问题。作为替代,他决定秘密地把麦克风种在奶牛们通常聚集的草场里,然后只要从他听到的哞哞声音量中确定奶牛的数目即可。 FJ 的N 块草场(1 <= N <= 100)沿着一条笔直的路排成了一排。每块草场里可能有若干种不同的奶牛;FJ 的奶牛总共有B 种不同的种类(1 <= B <=原创 2017-01-14 15:51:18 · 643 阅读 · 0 评论 -
心灵终结(找规律)
题意:给你一个n*m的棋盘,在上面跳马,走日,然后马不能互相吃,问你最多可以放多少条马思路:分三种情况讨论,n=2 or m=1 ,n=2 or m=2,其他。 可以得出规律,自己看程序,很简单的var t,i,j,x:longint; n,m,ans:int64;function max(x,y:longint):longint;begin if x>y then exit(x)原创 2017-01-14 16:02:36 · 745 阅读 · 0 评论 -
小x的字符串(乘法原理)
题意: 小x有两个长度均为n的字符串s和w。小x认为s和w是不可比较的,当存在i和j (0<=i,j<=n),si>wi并且sj<wj。si表示字符串s中的第i个元素,相似的,wj表示字符串w中第j个元素。 字符串模板由数字和问号“?”构成,“?”并不会成对出现。 小x现在有两个长度为n的字符串模板。每个问号可以填不同的数或相同的数,小x想要计算填数的方案数,使得这两个字符串不可比较。最终得到的字符原创 2017-01-15 19:21:04 · 701 阅读 · 0 评论 -
寻找羔羊(agnus)
题意:给定一个由小写字母组成的字符串,寻找包含“agnus”(羔羊)的子串的个数。注意:当且仅当两个子串的起始位置和终点不同时,这两个子串属于不同的子串。思路:每次找到一个,然后算前面有多个,后面有多少个,那把他们乘起来,其中前面的只要从上一个羊羔单词的头后面一个算起。程序:const maxn=30000;var s:ansistring; a:array [1..5] of char;原创 2017-01-15 19:25:51 · 572 阅读 · 0 评论 -
七天使的通讯(angelus)
题意:给你m条线,从一个点到另一个点,黑线白线自己随便想,同种颜色的线不能相交,问你是否可以连成功,可以输出sane不然输出non。思路:1.强行把第一个为白色,然后和他冲突的为黑色,如果有一个在后面被搜索到,而且颜色和要改的颜色不同,那么就是不可以达成的。用并查集或者dfs实现。程序:const maxn=10000;var f,x,y:array [1..maxn] of longint;原创 2017-01-15 19:36:11 · 343 阅读 · 0 评论 -
重复字符串(powerstr)
题意:现在给你一个字符串,你可以将它看成是a^n的形式,比如字符串”abababab”,可以认为是”abab”^2, 也可以是”abababab”^1,还可以是”ab”^4。求出n最大为多少。思路:直接可以发现是为因数才能分解,所以就找出因数,从大到小枚举一波就好了,遇到可以的就直接退出。程序:const maxn=10000;var s:ansistring; i,j,n,m,ans,p:原创 2017-01-15 19:46:42 · 292 阅读 · 0 评论 -
【NOIP2014八校联考第1场第1试9.20】统计损失(count)(树形dp)
题意:一棵树,找出所有路径的乘积的和。思路:把最小面的树改成一个点,为存放到哪里的答案,然后再用一个记录他的乘积。 ans:=ans+(f[u]-a[u]+oo)*f[v]; f[u]:=f[u]+f[v]*a[u]; 当最后做完时ans加上那个点的值程序: const oo=10086;maxn=200010;var n,i,u,v,tot,ans:longint;原创 2017-01-16 21:48:08 · 364 阅读 · 1 评论 -
【NOIP2014八校联考第3场第1试10.4】选择困难症(perdant) (堆)
题意:和我前面的一个poj的题意差不多,给n行树,每次从每一行数去一个,求第k小的那个。 思路:一行一行的处理,每一次记录一组求出的k小的值和当先这一行匹配,建立一个堆。程序:const maxm=500000;var dataq,data,data1:array [0..maxm] of longint; i,j,n,m,x,s,ii:longint;procedure siftdown(原创 2017-01-16 21:53:40 · 375 阅读 · 1 评论 -
【NOIP2014八校联考第3场第1试10.4】规避(path) (Standard IO)
题意:求一条路径,不能经过规定的危险区域。思路:超级暴力枚举,每次判断两点之间是否可以连线,用计算几何算是否有交点。程序:没ac,70分的 type Point=record x,y:real; end;const maxn=300;var a:array [1..maxn] of longint; f:array [1..maxn,1..2] of lon原创 2017-01-16 21:59:26 · 355 阅读 · 6 评论 -
5882. 【NOIP2018模拟A组9.25】雪人(线段树)
题目大意:给定一个长度为 N 的序列,每次操作可以选选择一个数,这个数和它右边的数比大小,如 果这个数比较大,就和右边的数交换,然后和右边的数接着比大小直到某一次它右边的数比 他大或者他右边没有数了。求最小的操作次数使得序列变为升序。思路:因为交换是不会改变相对顺序的,所以从左往右找,找到一个数右边有比他大的就要答案加一。程序:#include<cstdio>#includ...原创 2018-09-27 11:35:28 · 239 阅读 · 0 评论