- 博客(41)
- 收藏
- 关注
原创 2020省选总结
省选总结:第一天:第一天犯了左倾错误。第一题还没经过细想就判断为线段树上二分,完全没有想过正确性和更简单的写法。后来调不出来,考试时间所剩不多没有立即放弃去写后面的题的暴力,而是抱有侥幸心理。最后导致day1崩盘后面两题没有深入思考。第一题的思路没什么好记录的。第二天第二天因为第一天考得不好失去了梦想。第二天第一题思路:2≤m≤23这个数据范围考虑状态压缩dp。设状态: f[i][j]其中i表示选了几个信号站,j状态压缩记录每个信号站是否已经选了。记传递序列中从i到j的次数为v[i]
2020-07-07 10:53:11
162
原创 luogu(P1868 饥饿的奶牛)
这是一道有趣的dp题d[i]:前i堆草最多可以吃几堆#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>using namespace std;int e,d[6000010],to1[1500020],next1[1500020],begin1[30000...
2018-02-21 15:43:07
262
原创 幸福的路
题目: 每天,John都要为了农场里N(1≤N≤10)头牛的健康和幸福四处奔波。每头牛的位置可以描述为一个二维坐标,John从坐标原点(0,0)出发。为了使路径更有趣,John决定只沿着平行于坐标轴的方向行走,这样只能沿着东西南北方向运动。而且只有到达某头牛的坐标后John才会改变行走的方向(当然,如果有必要,John也会穿过某头牛的坐标而不改变行走的方向。) 如果John改变行走的方向,
2017-08-16 15:17:33
287
原创 [USACO5.3]量取牛奶Milk Measuring
题目描述: 农夫约翰要量取 Q(1 <= Q <= 20,000)夸脱(夸脱,quarts,容积单位——译者注) 他的最好的牛奶,并把它装入一个大瓶子中卖出。消费者要多少,他就给多少,从不有任何误差。农夫约翰总是很节约。他现在在奶牛五金商店购买一些桶,用来从他的巨大的牛奶池中量出 Q 夸脱的牛奶。每个桶的价格一样。你的任务是计算出一个农夫约翰可以购买的最少的桶的集合,使得能够刚好用这些桶量出 Q
2017-07-12 15:47:23
518
原创 luogu(P2254 瑰丽华尔兹)
题目: 一架钢琴从(x,y)开始在一个n*m的矩阵里移动,矩阵中有一些点为障碍,不能与障碍重合或超出边界。共有i个时间段,每个时段的开始时间为si,结束时间为ti,在这一时段内只能向di方向移动(di=1,2,3,4即上、下、左、右)移动。每秒钟可以选择移动或不移动,求最长的移动长度。受到此人的启发开始卡时间 思路dp: 设状态量:f[i][j][k]——第i个时间段结束时正好停在(j,
2017-05-30 09:19:09
291
原创 [USACO2.3]控制公司 Controlling Companies
题目翻译 有些公司是其他公司的部分拥有者,因为他们获得了其他公司发行的股票的一部分。(此处略去一句废话)据说,如果至少满足了以下三个条件之一,公司A就可以控制公司B了: 公司A = 公司B。 公司A拥有大于50%的公司B的股票。 公司A控制K(K >= 1)个公司,记为C1, …, CK,每个公司Ci拥有xi%的公司B的股票,并且x1+ …. + xK
2017-02-26 08:46:59
416
原创 [USACO2.2]集合 Subset Sums
题目: 对于从1到N (1 <= N <= 39) 的连续整数集合,能划分成两个子集合,且保证每个集合的数字和是相等的。举个例子,如果N=3,对于{1,2,3}能划分成两个子集合,每个子集合的所有数字和是相等的:{3} 和 {1,2}这是唯一一种分法(交换集合位置被认为是同一种划分方案,因此不会增加划分方案总数) 如果N=7,有四种方法能划分集合{1,2,3,4,5,6,7},每一种分法的子集合
2017-02-05 10:48:26
355
原创 [USACO1.4]等差数列 Arithmetic Progressions
题目: 一个等差数列是一个能表示成a, a+b, a+2b,…, a+nb (n=0,1,2,3,…)的数列。在这个问题中a是一个非负的整数,b是正整数。写一个程序来找出在双平方数集合(双平方数集合是所有能表示成p的平方 + q的平方的数的集合,其中p和q为非负整数)S中长度为n的等差数列。输入格式: 第一行: N(3<= N<=25),要找的等差数列的长度。 第二行: M(1<=
2017-02-02 15:38:33
719
原创 [USACO1.1]贪婪的送礼者Greedy Gift Givers
题目: 对于一群(NP个)要互送礼物的朋友,GY要确定每个人送出的钱比收到的多多少。在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人。然而,在任何一群朋友中,有些人将送出较多的礼物(可能是因为有较多的朋友),有些人有准备了较多的钱。给出一群朋友,没有人的名字会长于 14 字符,给出每个人将花在送礼上的钱,和将收到他的礼物的人的列表,请确定每个人收到的比送
2017-02-02 11:57:02
1265
原创 POJ 2352 Stars(treap)
题目大意: 给出n个y坐标递减的星星坐标,每个星星都有一个一个等级是这颗星星下边和右边的星星总数(水平垂直也算),求每个星星的等级。题目思路: 用2叉树统计星星个数,treap优化,下边不用算:#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>using namespace std;struct n
2016-08-17 13:23:50
330
原创 POJ1887 Testing the CATCHER(lis)
题目大意: 给定若干组数,每组以-1结尾,求每组的最长下降序列。题目思路:我们可以将这道题中的数的顺序倒过来,就变成了lis的裸题了,注意n^2不行:#include<iostream>#include<cstdio>#include<cstdlib>int a[1000010],z[1000010],b[100001];int main(void){ int i,j,k=0,
2016-08-05 10:28:15
320
原创 HDU1240 Asteroids!(BFS)
在这里先说一下,这个程序本来是wa的看了hh_cnyali的神奇dfs方法才ac的 题目大意: 题目给定一个三维空间的大小n,在这个空间中O为空地X为平地,给定起点坐标和终点坐标,求最短路径。题目思路:三维bfs,注意输入问题,这个问题让我wa了两个小时:#include<iostream>#include<cstdio>#include<cstdlib>#include<cstrin
2016-08-04 09:55:49
264
原创 NOIP提高组2011 聪明的质监员
题目: 小T 是一名质量监督员,最近负责检验一批矿产的质量。这批矿产共有 n 个矿石,从 1到n 逐一编号,每个矿石都有自己的重量 wi 以及价值vi 。检验矿产的流程是: 1 、给定m 个区间[Li,Ri]; 2 、选出一个参数 W; 3 、对于一个区间[Li,Ri],计算矿石在这个区间上的检验值Yi: 这批矿产的检验结果Y 为各个区间的检验值之和。即:Y1+Y2…+Y
2016-08-02 10:59:20
294
原创 NOIP提高组2011 铺地毯
题目: 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 n 张地毯,编号从 1 到n 。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。 地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。
2016-07-18 16:01:59
488
原创 NOIP提高组2011 观光公车
题目: 题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点。由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务。观光公交车在第 0 分钟出现在 1号景点,随后依次前往 2、3 、4 ……n 号景点。从第 i 号景点开到第 i+1 号景点需要 Di 分钟。任意时刻,公交车只能往前开,或在景点处等待。设共有m 个游客,每位游客需要乘车1 次从一个景点到达另
2016-07-16 15:51:07
559
1
原创 NOIP提高组2010 乌龟棋
题目:题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 n 张地毯,编号从 1 到n 。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。注意:在矩形地毯边界和四个顶点上的点也算被地毯覆盖。输入输出格式
2016-07-14 15:22:31
484
1
原创 NOIP提高组2012 国王游戏
题目描述: 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 n 位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。国王不希望某一个大臣获得特别
2016-07-09 16:41:24
406
原创 NOIP提高组2013 火柴排队
题目:题目描述 涵涵有两盒火柴,每盒装有 n 根火柴,每根火柴都有一个高度。 现在将每盒中的火柴各自排成一列, 同一列火柴的高度互不相同, 两列火柴之间的距离定义为: ∑(ai-bi)^2 其中 ai 表示第一列火柴中第 i 个火柴的高度,bi 表示第二列火柴中第 i 个火柴的高度。 每列火柴中相邻两根火柴的位置都可以交换,请你通过交换使得两列火柴之间的距离最小。请问得到这个最小的距
2016-07-05 16:13:05
304
原创 NOIP提高组2003 神经网络
题目: 题目背景 人工神经网络(Artificial Neural Network)是一种新兴的具有自我学习能力的计算系统,在模式识别、函数逼近及贷款风险评估等诸多领域有广泛的应用。对神经网络的研究一直是当今的热门方向,兰兰同学在自学了一本神经网络的入门书籍后,提出了一个简化模型,他希望你能帮助他用程序检验这个神经网络模型的实用性。题目描述 在兰兰的模型中,神经网络就是一张有向图,图
2016-07-05 14:26:07
1024
原创 NOIP提高组2015 飞扬的小鸟
题目: Flappy Bird 是一款风靡一时的休闲手机游戏。玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙。如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败。为了简化问题,我们对游戏规则进行了简化和改编:游戏界面是一个长为n ,高为 m 的二维平面,其中有k 个管道(忽略管道的宽度)。小鸟始终在游戏界面内移动。小鸟从游戏界面最左边任意整数高度位
2016-07-02 13:42:58
822
原创 POJ3283 Card Hands(字典树)
题目大意: 给定n副牌计算一共有几张牌出现,如果前缀或后缀相同则此前缀或此后缀上的牌只计算一次。题目思路:本题要用到字典树,并且将不同的牌用花色编号*13+牌号来记:#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>int ans=0,p,n;int a[100000][100];char s[4
2016-06-17 14:14:10
584
原创 POJ3630 Phone List(字典树)
题目大意: 输入n个电话号码,如果一个电话号码是另一个的前缀输出”NO”否则输出”YES”题目思路:本题要用到字典树的插入和查询:#include<cstdio>#include<cstring>struct node{//定义结构体 int sum,n[10],e; node(){ sum=0; memset(n,0,sizeof(n));
2016-06-16 11:48:21
407
原创 POJ3345 Bribing FIPA(树形DP)
题目大意: 一个国家想贿赂至少m个国家,给出贿赂每个国家需要的钱及他们的附属关系。如果贿赂了主国,其附属国家也同样视为被贿赂了,且保证关系网没环,和一个国家最多只能被一个国家控制。题目思路:本题要用到树形背包和字符串处理,字符串用普通方法读入特别麻烦且代码繁琐。这里我第一次用到了map:#include<iostream>#include<cstdio>#include<cstdlib>
2016-06-15 09:33:31
466
原创 POJ3254 Corn Fields(状态DP)
题目大意: 给出一个M*N的矩阵,元素为0表示这个地方不能种玉米,为1表示这个地方能种玉米,现在规定所种的玉米不能相邻,即每行或者没列不能有相邻的玉米,问一共有多少种种植方法。思路状态DP:#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>int d[13][8192],p[8192],s[8192]
2016-06-14 10:41:08
278
原创 POJ3342 Party at Hali-Bula(树形DP)
题目大意: 有n个人要一起聚会,规定直接上司不能和他的直接下属一起出席。问最多能去几人是唯一解吗?题目思路:树形DP+链试前向星:#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>int to1[210],begin1[210],next1[210],d[210][2],u[210][2],e;ch
2016-06-13 08:55:52
345
原创 POJ1463 Strategic game(树形DP)
题目大意: 有一棵树,要求找到最少放几个士兵才能将所有点都看守到,每个节点的士兵只能看守临近一个的节点。题目思路:树形DP:#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>using namespace std;int d[1505][2],c[1505],to1[3010],next1[3010
2016-06-11 16:03:58
361
原创 HDU1561 The more, The Better(树形DP)
题目: ACboy很喜欢玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中ACboy允许攻克M个城堡并获得里面的宝物。但由于地理位置原因,有些城堡不能直接攻克,要攻克这些城堡必须先攻克其他某一个特定的城堡。你能帮ACboy算出要获得尽量多的宝物应该攻克哪M个城堡吗? 思路:树形DP:#include<iostream>#include<cstdio>#inclu
2016-06-11 14:25:25
353
原创 POJ2486 apple tree(树形DP)
题目大意: 给出一个有n个节点的树,每个节点上有个权值,问不超过k步最多能遍历到的权值。 输入: 输入n和k,然后是n个节点的值,然后是n-1个i j代表了i和j节点相邻。 输出:最多能遍历到的权值。思路:树形dp:d[0][x][j+2] = max(d[0][x][j+2],d[0][v][k]+d[0][x][j-k]); d
2016-06-11 12:35:41
392
原创 USACO Training Section 1.5(八皇后升级)
题目: 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列2 4 6 1 3 5来描述,第i个数字表示在第i行的相应位置有一个棋子,如下: 行号 1 2 3 4 5 6 列号 2 4 6 1 3 5 这只是跳棋放置的一个解。请编一个程序找出所有跳棋放置的解。并
2016-06-10 15:03:29
404
原创 POJ3579 Median(二分查找)
题目大意: 给出n(3<=n<=100000)个数,f(i,j)=|a[i]-a[j]| (1<=i小于j<=n)。求所有的f(i,j)里面中位数的值。思路,二分查找中位数:# include<stdio.h># include<stdlib.h>#include<algorithm>using namespace std;int a[100000],o,n;int lily(int
2016-06-05 09:38:13
526
原创 POJ1804 Brainman (逆序对)
题目大意: 给定一个序列,求逆序对。思路:枚举统计逆序对个数:# include<stdio.h># include<stdlib.h>int a[10000];int main(){ int ans,i,j,k,t,n; scanf("%d",&t); for(i=1;i<=t;i++){ ans=0; scanf("%d",&n
2016-06-04 17:13:32
787
原创 POJ1088 滑雪(记忆化搜索)
题目: Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 5 16 17 18 19 6 15 24 25 20 7 14 2
2016-06-03 17:16:03
404
转载 合并果子(优先队列)
#include<bits/stdc++.h>using namespace std;int n,i,m,k,s;int main(){ priority_queue<int>q; cin>>n; for(i=1;i<=n;i++){ cin>>m; q.push(-m); } while(q.size()-1){
2016-06-03 14:11:54
438
原创 POJ2155 Matrix(二维线段树)
题目大意: 有一个n*n的由零组成的矩阵,给定q个操作,C为将x1y1为左下角,x2y2为右下角的矩阵取反值。Q为输出xy的的0,1状态。思路:二维线段树的建造和访问:# include<stdio.h># include<stdlib.h># include<string.h>int a[4010][4010],n,m,ans;char s[1000];void buildy(in
2016-06-03 10:56:22
269
原创 POJ3264 Balanced Lineup(线段树静态)
题目大意: 一位农夫有n头牛,给出每头牛的身高。求q个范围内的牛中最高的和最矮的身高差。思路:线段树求一个序列中的最大值和最小值:# include<stdio.h># include<stdlib.h># include<algorithm>using namespace std;int a[10000000],x,y;struct node{ int b,e,s,c;}
2016-06-02 11:13:59
284
原创 POJ2019 Cornfields(记忆化枚举版)
题目: Description 给出一个N*N (N<=250)的方阵,以及K(<=100000)个询问。每次询问如下:以(Xi,Yi)为左上角,边长为B的子方阵中,最大值和最小值的差是多少? 注意对于所有的询问,B都是一个定值。 Input 第一行N,B(<=N),K。含义如上。 接下来N行N列的一个矩阵,每个数<=250。 接下来K行表示询问,每行两个数X
2016-06-01 15:17:51
583
原创 POJ2352 Stars(树状数组)
题目大意: 给出n个y坐标递减的星星坐标,每个星星都有一个一个等级是这颗星星下边和右边的星星总数(水平垂直也算)。大体思路:用树状数组统计处在下边和左边的星星总数,下边不用算,因为y坐标递减。只要算在第i可星星前输入的有多少颗x坐标小于当前:# include<stdio.h># include<stdlib.h>int a[1000000],p[10000000];int lily3(
2016-06-01 11:50:05
324
原创 POJ 1611 The Suspects( 并查集)
题目: 严重急性呼吸系统综合症( SARS), 一种原因不明的非典型性肺炎,从2003年3月中旬开始被认为是全球威胁。为了减少传播给别人的机会, 最好的策略是隔离可能的患者。 在Not-Spreading-Your-Sickness大学( NSYSU), 有许多学生团体。同一组的学生经常彼此相通,一个学生可以同时加入几个小组。为了防止非典的传播,NSYSU收集了所有学生团体的成员名单。他们的标准
2016-05-31 14:26:15
500
原创 合并果子(堆写法)
题目大意: 一个小朋友从树上打下了几堆果子。要将所有果子合并成一堆。给出没堆果子的重量求最小力气本题的思路是要将重量最小的先合并,也就是传说中的哈夫曼树!但本题的数据比较大。今天我们来看堆得写法:# include<stdio.h># include<stdlib.h>long long a[1000010];int main(){ long long sum=0,ans=0,n
2016-05-30 10:52:03
3172
1
原创 POJ 1502 MPI Maelstrom最短路问题
题目大意: 有n个处理器,求一号处理器到所有处理器所需的时间总和。题目给出一个倒三角x表示两个处理器不能直接连通。数字表示传输时间。题目思路: 先通过倒三角,求出图的邻接矩阵表示在裸dijkstra,程序如下:# include<stdio.h># include<stdlib.h># include<string.h>int d[1010][1010],ans[1000000],t[
2016-05-27 11:16:39
455
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人