平时的题
文章平均质量分 65
凉秋girl
保持学习应该是最难的一件事吧?
展开
-
poj 2104 <排序分块,区间第k大>/<第一次用主席树>2个方法+整体二分
给一个序列,查找区间第k大,用分块来实现首先将区间分为每块block大小,也就有num=n/block块,if(n%block==0)num++.然后每次在定义每个块其左右边界的时候进行排序,那么就得到一个每块内排好序的块。查询的时候因为是查找区间第k大,那么我们可以二分出这个区间最大能满足(区间小于其的数<k),因为区间小于其的数<k,也就是这个数排第k个(这里可以好好想...原创 2017-05-29 06:34:58 · 1441 阅读 · 2 评论 -
长安大学J题 藏宝图
J 藏宝图******************J 藏宝图Description彩虹岛有一个神秘的地方,里面藏着无数的珍宝,这便是朝晖十四号楼。为了找到宝藏,无数勇士不惜踏上了(女装)寻宝的不归路,其中也包括原创 2016-12-25 22:39:03 · 256 阅读 · 0 评论 -
ZOJ 2334 可并堆<斜堆>
thinking:1、可以为大根堆或者小根堆,相当于优先队列,但是有合并这个功能关键代码是int merge(int x,int y){if(tree[x].weight==0)return y;if(tree[y].weight==0)return x;if(tree[x].weighttree[x].rch=merge(tree[x].rch,y);swap(x,y原创 2016-12-25 18:15:00 · 312 阅读 · 0 评论 -
二叉查找树<链表实现>
thinking:第一个结点作为根结点,然后接下来每个结点与根结点对比,如大于根结点则放右边,小于根结点则放左边,然后比较下一个结点,知道遇到空节点则储存、输入样例:96 3 8 5 2 9 4 7 10输出样例:(前序遍历)6 3 2 5 4 8 7 9 10代码:#include #include using namespace std;struct t原创 2016-12-19 09:22:43 · 270 阅读 · 0 评论 -
HDU 1166 数据结构-<线段树>
thinking:做线段树,然后这个线段树里的结点为这个线段的总值。the reason of reason:1、大数据又用cin,太慢了!!应该用的scanf2、数组开得不够大,运行失败题意:给一个N,然后N个数,表示各个点的值,然后增加、减少、一个点中的值,查找一个线段中的值。代码:#include #include using namespace std;str原创 2016-12-23 22:35:06 · 271 阅读 · 0 评论 -
DP 数字三角形+找钱问题
thinking:从后往前推输入样例:61 2 34 5 67 8 9 1011 12 13 14 1516 17 18 19 20 21代码:#include using namespace std;int main(){ freopen("in.txt","r",stdin); freopen("out.txt","w",stdout);原创 2016-12-03 14:44:48 · 317 阅读 · 0 评论 -
codeforces 382C
the reason of failure:1、当输入为2个值a,b时,a,b相加可能为单数,那么其2个数之间就无法找到一个数使得这3个数变成等差数列.2、当输入大于3个数字的时候,比如14 10 6 4,原来我写的判断是for(i=2;i<n;i++){ b=qq[i]-qq[i-1]; if(b!=maxn){ if(cc==2){ cout << "0" <<原创 2016-11-27 22:15:01 · 221 阅读 · 0 评论 -
crypt1<uscao>1.3
the reason of failure:1、没认真审题,题目规定的方方面面都应该注意到,比如题目要求2个相乘的数为3位,结果也是3位,最后相加才是4位.thinking:所以数枚举一遍,看是否符合.题意:★Prime Cryptarithm 牛式下面是一个乘法竖式,如果用我们给定的那几个数字来取代*,可以使式子成立的话,我们就叫这个式子牛式.* * *x * *原创 2016-11-25 23:36:00 · 387 阅读 · 0 评论 -
usaco-Calf Flac 最长的回文
题已不在~important points:1、char a=tolower(b), tolower可以把所有大写字母转换为小写字母,其他符号均不改变.thinking:2个for的O(N^2)循环,从开头开始找,先判断首尾字符是否相等且大于maxn(已找到最长回文数),然后把所有字母都存到一个新的数组,然后判断其是否为回文串且长度大于maxn,如果大于则pos1=i,pos2=j.然后最原创 2016-11-25 22:20:18 · 629 阅读 · 0 评论 -
barn1<uscao>1.3 -<贪心>
the reason of failure:1、有可能木板会比牛棚的数量多,这个需要考虑到位.thinking:求最短所使用的木板长度,如果只用一个木板,便是从最小有牛的牛棚编号到最大有牛的牛棚编号+1的长度,如果有多出的木板求便可以把2个牛棚之间的最大距离找出来然后减掉,这样总木板长度就能最大的减小了.题目:Barn Repair 修理牛棚在一个暴风雨的夜晚,农民约翰的牛原创 2016-11-25 20:27:22 · 231 阅读 · 0 评论 -
milk<uscao>1.3 -<最简单的贪心>
一遍过.简单贪心.题目:Section1.3★Mixing Milk 混合牛奶牛奶包装是一个如此低利润的生意,所以尽可能低的控制初级产品(牛奶)的价格变的十分重要.请帮助快乐的牛奶制造者(Merry Milk Makers)以可能的最廉价的方式取得他们所需的牛奶.快乐的牛奶制造公司从一些农民那购买牛奶,每个农民卖给牛奶制造公司的价格不一定相同.而且,如一只母牛一天只能生原创 2016-11-25 15:43:44 · 325 阅读 · 0 评论 -
Dual Palindromes<uscao>1.2 <进制转换+枚举>
the reason of failuire:1、题目是要求第一行输入N S 第一个数N为需要输出从S开始的符合条件的N个数,而我误解为S开始到S+N区间里的数.2、开了一个名为qq的数组用来标记各个数字转换进制为为回文数的次数,但开得比较小,结果数据大于所开的数组了,应该看着题意来开数组.thinking:把从S开始的数转换为2-10进制,然后判断其是否为回文数,然后统计其是回文数的次数原创 2016-11-25 14:08:08 · 344 阅读 · 0 评论 -
最大子矩阵问题<DP>
thinking开始令pos1=1,pos2=1:先判断pos1-pos2高度的每个格子,取或者不取,得出一维也就是只有第一行的最大子矩阵。然后pos2++,因为是要求连续子矩阵,那么从第一行到第二行的子矩阵相加,就相当与只判断一行,可以找出pos1=1到pos2=2也就是第一行到第二行且只取这两行作为子矩阵的最大值,然后pos2再加1,则变成判断包括第一行在内的三行,直到最后一行,然后pos原创 2016-12-07 17:14:30 · 354 阅读 · 0 评论 -
palsquare-各进制回文数<uscao>1.2
the reason of failure:1、没考虑输出的每一行的两个值都已经按进制转换了.thinking:把输入的值转换为各种进制然后判断其是否为回文数,题目:★Palindromic Squares 回文平方数回文数是指从左向右念和从右像做念都一样的数.如 12321 就是一个典型的回文数.给定一个进制 B(2时是回文数的数.用’A’,’B’……表示 10,11 等原创 2016-11-25 11:28:10 · 417 阅读 · 0 评论 -
FBI树<链表构造二叉树+后序输出>
the reason of failure:1、将一个字符串从i到len分成两份的时候,若为偶数,注意第二份的开头是len/2+1题意:给一串01码,把01码分割成左右两份,左结点放左份,右结点放右份,然后判断这份结点包括有"0"和"1"则为F结点,如果只包含"0"则为B结点,只包含"1"则为I结点。代码:#include#include #include using nam原创 2016-12-19 14:33:02 · 288 阅读 · 0 评论 -
考试未完品
The original version of this problem (in Spanish) can be found athttps://www.dc.uba.ar/events/icpc/download/problems/tap2013-problems.pdf]Horace likes to play writing natural numbers in the blackboa原创 2017-01-01 14:09:15 · 213 阅读 · 0 评论 -
寒假第一个西北工业大的新生水赛。<全水>
the reason of failure:1、不会保留2位数字的输出。2、边界问题,C题的,当两个时间相同的时候输出的应该是什么。3、大于小于号弄错了,在A题的对‘U’边界的判断,应该是>=n,确保判断的那一行小于总行数n。4、对矩阵的行列弄反了,应该细心判断。5、矩阵反转的时候,行与列都已经发生了改变,再变化应该使用反转得到后的行与列,而不是用最初矩阵的行与列。learni原创 2017-01-16 10:36:49 · 368 阅读 · 0 评论 -
求最大流问题
the reason of failure:1、pre[i]=u而不是pre[u]=i复杂度O(m*2n)就是从第一个点开始找能到目的地点的这条线,然后在这条线找出最小的容量m,然后将这条线上的所有边都减去m,然后反向+m,再重复找从第一个点能到目的地点的路径,直到找不到路径。输入样例:5 41 2 11 3 12 3 13 4 12 4 1事实原创 2017-02-14 16:21:02 · 363 阅读 · 0 评论 -
归并排序的同时求逆序数
#include#include #include #include#include #include #include #include #include #includeusing namespace std;const int maxn= 1e5+7;int A[maxn],L[maxn],R[maxn];void merge(int n,int left,int原创 2017-05-11 15:23:00 · 216 阅读 · 0 评论 -
L2-012. 关于堆的判断
将一系列给定数字顺序插入一个初始为空的小顶堆H[]。随后判断一系列相关命题是否为真。命题分下列几种:“x is the root”:x是根结点;“x and y are siblings”:x和y是兄弟结点;“x is the parent of y”:x是y的父结点;“x is a child of y”:x是y的一个子结点。输入格式:每组测试第1行包含2原创 2017-03-15 10:08:16 · 397 阅读 · 0 评论 -
L2-009. 抢红包
没有人没抢过红包吧…… 这里给出N个人之间互相发红包、抢红包的记录,请你统计一下他们抢红包的收获。输入格式:输入第一行给出一个正整数N(4),即参与发红包和抢红包的总人数,则这些人从1到N编号。随后N行,第i行给出编号为i的人发红包的记录,格式如下:K N1 P1 ... NK PK其中K(0 i是抢到红包的人的编号,Pi(> 0)是其抢到的红包金额(以分为单位)。原创 2017-03-14 16:45:38 · 335 阅读 · 0 评论 -
L2-007
L2-007. 家庭房产时间限制400 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者陈越给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。输入格式:输入第一行原创 2017-03-14 16:27:22 · 489 阅读 · 0 评论 -
几个简单的背包问题
0/1背包问题,就是给n种石头每块石头的价值为ai,问背包容量为m的背包最多装价值多少?输入样例:3 82 5 53 4 5输出:8因为不能重复选,所以这次价格的的最大应该是dp[i-1]#include#include#include using namespace std;int dp[500][500];int cost[500];int weight原创 2017-03-13 18:41:08 · 484 阅读 · 0 评论 -
POJ 1611 <并查集>
thinking:把所有在一个组的学生连到一棵树(注意如果一组多人如5人是如何输入到一棵树上),然后判断多少个结点的根结点与0的根结点相同,最后输出总数+1.DescriptionSevere acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized a原创 2016-12-06 19:26:50 · 185 阅读 · 0 评论 -
HDU5672 尺取
the reason of failure:1、就是long long 的问题,注意题意,仔细得计算才知道是否需要使用long long,而不是凭着感觉去估计。思路就是尺取:1、设定一个边界left1,right1,right1一点点向右移动,当遇到满足条件的那个点的时候,则后面的所有子串全部满足,加起来,然后left1也向右边移动。2、遇到满足情况,left1向右边移动的时候分情原创 2017-02-14 13:35:55 · 281 阅读 · 0 评论 -
树状数组
树状数组。原数组为a[n],树状为s[n].主要用于区间的查找与增删除,复杂度为logn。c[1]=a[1]c[2]=a[1]+a[2]~转换二进制10c[3]=a[3]c[4]=a[1]+a[2]+a[3]+a[4]~转换二进制100c的下标转换为2进制,后面有几个0就代表其包含了从其开始前面有多少个数。#include #include #include us原创 2017-01-21 23:40:27 · 139 阅读 · 0 评论 -
尺取法
一句话描述:求满足条件的最小区间的方法称为尺取法、输入一个n,为数字个数,s找连续和大于s的最小数字,样例输入:10209 2 8 1 3 8 2 8 1 5代码:#include #include #include using namespace std;int qq[1000];int main(){ freopen("in.txt","r",原创 2017-02-10 16:22:03 · 196 阅读 · 0 评论 -
USACO 2.2Runaround Numbers
the reaon of failure:1、英文太low,英文太low,英文太low,题目都看不懂啊!!Runaround numbers are integers with unique digits意思是这个数是整数with unique digits 数字都是唯一的,意思就是不能有重复的数字在这个整数里。 you have ended up back where you s原创 2017-01-17 16:01:17 · 202 阅读 · 0 评论 -
USACO 2.2 Subset Sums
the reason of failure:1、刚开始用的0/1枚举的方法,结果超时。2、然后用dfs找,从1开始到n,加起来如果大于等于t1,那么剩下的不找了,这样稍微运算量少一点,但还是超时,自己判断复杂度的能力是真的差啊。t1是从1到n的和除2如找4的所有和相同的子集。1 2 3此时大于5,则3后面的数全部不找了,递归回去。1 3 4此时大于5,则4后面也不找了。1原创 2017-01-16 19:46:37 · 297 阅读 · 0 评论 -
USACO 2.1
the reason of failure:1、考试前看了一遍题意,但是不知道为什么提交失败了,不是答案错误,然后今天直接一遍过。thinking:可以2个for嵌套,for(i=1;i然后用qsort排序,对分数a>b排序就相当与a的分子*b的分母>b的分子*a的分母来排。learning:1、对分数排序,分数大小比较的方法。2、qsort的第二个变量是长度而不是数组+长度,so原创 2017-01-16 11:24:32 · 234 阅读 · 0 评论 -
namenumi<uscao>1.2 -(frstream的使用)
the reason of failure:1、输出没考虑查字典中不存在该输出什么.2、输入的数字和各个字符串所代表的字母都越界,int 应该改为long long ,一定注意所开变量的大小. thinking:把所有字典英文字符对应的数字与读入进来的数字进行判断,如果相同则输出这个字符.★Name That Number 命名那个数字在威斯康辛州牛大农场经营者之中,都习惯于请会计原创 2016-11-24 21:48:34 · 432 阅读 · 0 评论 -
N皇后问题<DFS>
每个皇后不能在同一行,列,斜线thinking:深搜,做标记判断是否能走,能走则走再找下一行的每一列看哪一列能走代码:#include using namespace std;bool map1[500][500];int n;void print(){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++) cout << map原创 2016-12-07 12:50:52 · 264 阅读 · 0 评论 -
USACO 1.3 Ski Course Design <枚举>
the reason of failure:1、当特殊值输出时,应该立刻停止下面程序的运行,否则会输出2个结果。2、定义的初值minn太小,如果第一个答案本身就大于minn,那还怎么给minn赋值thinking:枚举全部可能,从1-18 2-19 3-20 这样的区间枚举题目Ski Course DesignFarmer John has N hills on h原创 2016-12-07 10:39:22 · 245 阅读 · 0 评论 -
CCF 俄罗斯方块<模拟> 注意输入输出格式!!!!!
思路还是比较简单的,但是一定要看题,一个空格,一个换行都不能错,认认真真读题再去思考思路。首先判断给的模型下面有几行是空的,如果有,就去掉然后赋值到一个新的数组上。然后与map进行相加,当出现2时,返回上一次相加的图输出即可。这个游戏有可能刚开始是空的,所以考虑到当为空时,是不会出现相加得2的情况,请特殊处理,然后就是输出问题,第一次错是因为没有输出没有空格隔开,第二次是每行的最后原创 2016-11-18 22:50:05 · 1015 阅读 · 0 评论 -
HDU 1233 <最小生成树prim><稠密图><可做模版>
the reason of failure:1、阶层不会算,用循环写的,最后超时。N!=N*(N-1)/2thinkin:模板题题意:还是畅通工程Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 41687原创 2016-12-09 11:13:17 · 335 阅读 · 0 评论 -
HDU 1548 <BFS+标记+找最短>
the reason of failure:MLE,内存超出范围...一直看错题意,花了两个小时debug,可见题意的重要thinking:由于电梯在i楼时向上是i+ki,向下是k-ki,那么每次在i发生的情况都一样,所以可以用walked标记走过题意:有一个电梯有N层楼,从i到j最少需要按多少次电梯,每次按电梯向上或者向下,高度为ki,也就是说按了向上后高度变为i+ki,向下变为j+kj原创 2016-12-01 11:05:45 · 197 阅读 · 0 评论 -
HDU 1372<记忆BFS找最短路径>
the reason of failure:1、内存使用过多(把数组大小减小).thinking:象棋题,马走日,给定2个点,问马如何最快达到终点.记忆BFSDescriptionA friend of you is doing research on the Traveling Knight Problem (TKP) where you are to find th原创 2016-12-01 08:25:56 · 261 阅读 · 0 评论 -
POJ 3984 迷宫问题<记忆BFS>
the reason of failure:1、一遍过important points:1、迷宫题如何记录该格子的上一个是哪个?可以通过定义一个A[d.x][d.y].x=c.x,可以通过定义一个A[d.x][d.y].y=c.y.c是从哪个格子,d为所到的格子.然后再用一个数组储存,逆序输出便为路径.thinking:bfsE - A strange lift原创 2016-11-30 11:56:36 · 240 阅读 · 0 评论 -
poj3278 <BFS/DFS>
the reason of falure:1、记得不能给数组A[负数]赋值,会running error2、定义数组应该在头文件那#define MAXN 9999然后定义的全局变量thinking:1、从8个方向都探索,如果有W则给打上标记,放入队列.2、从8个方向都搜索,当有W则打上标记,马上从这个打上标记的W开始搜索下一个DescriptionDue原创 2016-11-29 23:49:14 · 534 阅读 · 0 评论 -
BFS马在棋盘上移动的方法
the reason of failure:1、输出无法回溯。how to solve:1、p[v.r][v.c]=u;while(1){nodes.push_back(u);if(walked[u.r][u.c]==0)break;u=p[u.r][u.c];} 通过把值放入p数组,然后通过回溯读取question:where is d原创 2016-11-13 20:31:38 · 299 阅读 · 0 评论