02 2013 档案
摘要:a. 简单暴力题b. 简单博弈题,多试试几组数据可以发现性质。#include <stdio.h>#include <string.h>#include <string>#include <iostream>using namespace std;int main(){ char g[1100]; scanf("%s",g); int len=strlen(g); int cnt[30]; int sum=0; memset(cnt,0,sizeof(cnt)); for(int i=0;i<len;i++) { cnt
阅读全文
摘要:稳定排序就是相同元素排序后次序不会发生改变的排序方法.冒泡是稳定排序.快一点的归并也是稳定排序. 稳定排序Time Limit: 3000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2766Accepted Submission(s): 1081Problem Description大家都知道,快速排序是不稳定的排序方法。如果对于数组中出现的任意a[i],a[j](i<j),其中a[i]==a[j],在进行排序以后a[i]一定出现在a[j]之前...
阅读全文
摘要:思路很明确,直接用线段树.Balanced LineupTime Limit:5000MSMemory Limit:65536KTotal Submissions:26161Accepted:12250Case Time Limit:2000MSDescriptionFor the daily milking, Farmer John'sNcows (1 ≤N≤ 50,000) always line up in the same order. One day Farmer John decides to organize a game of Ultimate Frisbee with
阅读全文
摘要:表示这题坑了我很久,我拿到题目马上想到的是用记忆化搜索做, 然后发现不是很好实现 ,然后又想了一种 半记忆化+BFS 的东西,当时分析了下发现可行。 然后写了很久, 最后死都过不了。 然后看了别人的发现别人用的是dp解法,和我的非常类似,然后我用dp那样写发现能过, 最后调试了一晚上后终于发现了,用BFS还是难是实现。 有一些数据用bfs做会错。以前总是以为用dp能写的东西,那记忆化搜索也会很好写, 今天终于发现不用的方法还是要因题而议 ! , 所以以后别看这能用搜索做就立马什么都不想就用搜索做。机器人系列2Time Limit: 2000/1000 MS (Java/Others)Memor
阅读全文
摘要:这题题意要注意, 题目中说的 (0,0) 是表示所有的点都要满足,而不是加起来的和满足.然后根据经典的求有上下界的网络流的建图方法就行了.首先建立s,t,然后s连上每一个代表行的点,每个代表列的点连上t. 先根据题意求出图中每一条边的上界和下界。 然后再做超级源点和汇点ss,tt. 统计原图中的每一个点的 tmp=所有流入下界和-所有流出下界和, 如果>0 则从ss连一条大小为tmp的边,如果<0 则连一条权值为-tmp的边到tt. 然后从ss到tt求一次最大流,如果结果和ss有关的边都满流则说明存在可行流.BudgetTime Limit:3000MSMemory Limit:6
阅读全文
摘要:找一个最小的长方形包括所有给出的点, 很简单找出最坐标中最小的x,y (左下角)和最大的x,y (右下角)就是答案. 最小长方形Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5828Accepted Submission(s): 3217Problem Description给定一系列2维平面点的坐标(x, y),其中x和y均为整数,要求用一个最小的长方形框将所有点框在内。长方形框的边分别平行于x和y坐标轴,点...
阅读全文
摘要:有上下界的网络流, 关键是怎么把下界体现出来,于是要先判断是否可行。然后在求解最大流.这题是没有给出源点和汇点的,但是题目中有一个条件就是每个点都满足所有流入的和等于所有流出的和,然后我猜想了一下这题给出的图都是环. 如果有出度为0或入度为0的话就不满足题意的要求。 (这一点坑了我很久才把这题做出来)然后就是关键的一步怎么建附加网络,并求可行流.首先如果这个网络流可行那么每条边的下界都是必须满足的,于是这个网络在没开始求之前你就可以把每条边都流过大小为它下界的流。 然后就会存在问题,有些时候经过上述操作这个点的流就不平衡了. 如果这个点最后流入的多,那么可想而知的是这个点流出的边要多往外流一些
阅读全文
摘要:这场比赛因为坐火车没有做,到学校了, 坑爹的学校晚上要熄灯。 还有一些原因以后cf就不能及时的做了。 但是每场我肯定都不会落下.这场b题严重坑, 被坑了1个半小时,关键还是自己的心理在作祟,思维不行, 看看zerom 16分钟就把题给a了...a. 很水的题b.看完题意后觉得这个很水呀,但是实现起来就坑了. 其实写起来也不是很难,关键就是当我用一种方法写到一半的时候我就觉得有点烦,然后就想会不会是我想错了,于是又去想其他方法,然后用其他方法写,要么是错的,要么更烦,无奈最后只能挑一种方法硬着头皮写.这个是我的代码,又长又臭 1 #include <stdio.h> 2 #inclu
阅读全文
摘要:这题的关键是矩阵中的每个元素都是 >=0 的, 然后就可以找到递增性质. 也就是如果N*N个方块满足小于或等于limit 那么(N-1)*(N-1)个方块也是满足的.Problem 2056 最大正方形 Accept: 75Submit: 287Time Limit: 1000 mSecMemory Limit : 32768 KB Problem Description现在有一个n*m的矩阵A,在A中找一个H*H的正方形,使得其面积最大且该正方形元素的和不大于 limit。 Input第一行一个整数T,表示有T组数据。每组数据 第一行三个非负整数 n m limit接着 n 行,每行
阅读全文
摘要:模拟一场,这场题目算是比较巧的.a. 很简单的暴力题b. 有点麻烦的题, 用一堆数字拼成一个最大的能被2,3,5 同时整除的数, 首先必须最后一位数字必须是0, 然后数字的总和要能被三整除 。解法是枚举一个到两个数字,看减少这些数字能不能使数字的总和被3整除。 如果没有就输出-1#include <stdio.h>#include <string.h>#include <string>#include <iostream>using namespace std;int mark[10];int main(){ int n; scanf("
阅读全文
摘要:用半分治法做的. 很在把一堆分成两堆后,递归求得这两堆的最小距离后,关键就是求两堆之间的距离是否会更小,然后用一些优化就可以过这题.下次试试算法导论上的方法,应该会稳定些,感觉这方法还是很坑的, 可以有数据克. 不过要弄出这种数据也难.还有感觉分治法,和归并排序很相似.Quoit DesignTime Limit: 10000/5000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15345Accepted Submission(s): 3814Problem Description
阅读全文
摘要:从0000-9999 枚举判断一遍, 如果只有一个数字满足则输出,否则输出Not sure 猜数字Time Limit: 20000/10000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1617Accepted Submission(s): 925Problem Description猜数字游戏是gameboy最喜欢的游戏之一。游戏的规则是这样的:计算机随机产生一个四位数,然后玩家猜这个四位数是什么。每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几...
阅读全文
摘要:20的数据量,这题是什么意思, 吓的我半死,一直还以为那里想错了.其实这题就是个简单的最小割。1 建立源点和汇点s,t2 从s连一条权为INF的边到n(the panic room).3 对于从 i 到 j 能开的门, 连一条权为INF 的(i->j)边,然后连一条权为1的(j->i) 的边。然后求最小流就可以了.Panic RoomTime Limit: 2 Seconds Memory Limit: 65536 KBIntroductionYou are the lead programmer for the Securitron 9042, the latest and gr
阅读全文
摘要:一开始想了很久,都想不到一个好的方法判断最小割是否唯一,后面无奈只好去看了下题解。正确的方法是: 在用网络流求过最小割后,判断所有的点是不是s能到达,或者能到达t. 如果都满足那么最小割唯一,否则不唯一.我的理解, 可以把这个s不能到达且同时不能到达t的点看成一个集合, 可以知道这个集合流入的边可以等效为饱和弧, 二流出这个点的边也可以等效为饱和弧, 那么就可以用这个点流入的饱和弧代替流出的饱和弧,也就是有多个最小割.Unique AttackTime Limit: 5 Seconds Memory Limit: 32768 KBN supercomputers in the United .
阅读全文
摘要:好像就只有枚举这个方法, 没有看到其他的方法,挂不得题目给了2s。除了枚举一开始比较难想,这个网络流建图还是比较好想到的, 只有用最小割的性质,就可以知道将每个点拆成两个点,之间连一条权为1的边 ,其他相连的边都为INF。然后就是枚举选字典序最小的点.FriendshipTime Limit:2000MSMemory Limit:20000KTotal Submissions:7560Accepted:2087DescriptionIn modern society, each person has his own friends. Since all the people are very
阅读全文
摘要:高中数学不好的娃实在是伤不起. 一个公式:设多重集 S={n1×e1 ,n2×e2,... ,nk×ek},令an为S的全排列数,则an=(n1+n2+...+nk)! / (n1!n2!...nk!) .然后这题就好做了.D. Dima and Two Sequencestime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputLittle Dima has two sequences of points with i
阅读全文
摘要:这场比赛的题目感觉还是不错的. 但是因为忘了一个公式d题没有A掉还是很可惜的.乘着在家的时间多做些cf,到了学校就没有那么好的条件做了.a. 要注意的是题目中要求输出的他可以出数的总数,一开始我以为是他可以出的数,然后就wa了两次.b. 这题开始拿到时,还被吓了一下,后面推了下好像每个f(n) 都对应了一个确定的数,然后就知道了,先记录每个数n对应的f(n)为多少, 然后再算所有的情况.因为求每个数的f(n)时相当于log的运算,所有对应的f(n)也不会很大, 然后知道有多少个数对应的是相同的,再用等差数列求和公式就可以得出.#include <stdio.h>#include &
阅读全文
摘要:这题有一个非常坑人的地方,product 这个单词在这题里是 “相乘" 的意思. 然后就是最小割模型的建立,s=0,t=m+n+1 然后从s到1-m建权为Ci一条边,从 m+1 - m+n 建立到t的权值为Ri的边。 然后每个伞兵的坐标(x,y) 建立x->y权为无穷大的边. 这题关键的一点叫我们求所有费用的乘积最小,可以知道的是用最小割模型求出的是所有费用的和, 如果想处理乘法运算看似很难办, 但是有一种很灵巧的方法:将每条边的权值先取对数(log是以e为底,log10是以10为底),然后其中网络流中的操作都为+-,对于对数就相当于乘除, 可知如果最后求出去对数后的权值和最大
阅读全文