03 2013 档案

摘要:看了算法导论, 发现了一种求最近点对的高效方法, 就是在合并操作时只找每个点(已经按y排好序)以下的6个点 。 这样就可以使复杂度变为O(n*logn*logn) ,但是这题我却没有发现有这个性质,用的是一种比较好的优化。RaidTime Limit:5000MSMemory Limit:65536KTotal Submissions:6865Accepted:2026DescriptionAfter successive failures in the battles against the Union, the Empire retreated to its last stronghold 阅读全文
posted @ 2013-03-30 17:34 chenhuan001 阅读(444) 评论(0) 推荐(0) 编辑
摘要:比较烦人的一道题目,看着题目都觉得很吓人,不过模拟题终究是模拟题, 耐心点还是可以过的。题意: 给出了一个3*3的方块,每个方块有上下左右四个颜色, 然后每次可以在一行上 左/右循环移一格, 或一列上 上/下循环移一格。 求最少操作次数使的3*3中相同颜色的块形成一个连通块。 因为只有9个方块,所以最多的状态数为9! , 10^6次方的复杂度还是可以接受的。 然后就是一系列比较复杂的变换,搜索。 耐心点还是没有问题的。 写了几个小时 ,1 A 吉哥系列故事——乾坤大挪移Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65535/32768 阅读全文
posted @ 2013-03-30 17:29 chenhuan001 阅读(195) 评论(0) 推荐(0) 编辑
摘要:题意是一个错误的键盘,输入的一个字母或字符时会变成这个字母或字符在键盘上位置右边的一个。 然后已知输出的字符,求你原本输入的是什么。有一种很土的办法就是一个字符一个字符的装换,但是这样不知道要用多少个if。可以把这这些字符存在一起g[1000] ={"1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./"} ,这样只要找到了一个字符在这个g串中的位置i,然后g[i-1]就是我们要的哪个字符。 这样编程量就少了很多WERTYUTime Limit:1000MSMemory Limit:65536KTotal Submission 阅读全文
posted @ 2013-03-30 17:17 chenhuan001 阅读(304) 评论(0) 推荐(0) 编辑
摘要:很水的题。。。郑厂长系列故事——逃离迷宫Time Limit: 3000/1000 MS (Java/Others)Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 529Accepted Submission(s): 272Problem Description 郑厂长没变 还是那个假厂长真码农 改变的是业余爱好 他现在不研究象棋,改玩游戏了! 最近,郑厂长爱上了逃离迷宫这个游戏,他日日夜夜的玩,就是想达到自己的目标:1000万,因为这个数字和他在腾讯的年收入一样多。 不过,在他跑到9999999时,游... 阅读全文
posted @ 2013-03-27 13:55 chenhuan001 阅读(176) 评论(0) 推荐(0) 编辑
摘要:入门题。。。Common SubsequenceTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15396Accepted Submission(s): 6406Problem DescriptionA subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = &l 阅读全文
posted @ 2013-03-27 13:45 chenhuan001 阅读(305) 评论(0) 推荐(0) 编辑
摘要:自己太弱了,学了一年了连 LCS,LIS,LCIS 都没有学。 图论也还未学完,题量又少。 最近把这个补上了...加油, 为了你的哪个她,还有你的未来。吉哥系列故事——完美队形ITime Limit: 3000/1000 MS (Java/Others)Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 846Accepted Submission(s): 212Problem Description 吉哥这几天对队形比较感兴趣。 有一天,有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n.. 阅读全文
posted @ 2013-03-26 21:46 chenhuan001 阅读(171) 评论(0) 推荐(0) 编辑
摘要:算是LCIS的入门题吧, 这个dp方法以前没怎么看,现在好好地学习了下,dp真的是奥妙无穷...首先,dp的最开始是定义状态 dp[i][j] 表示A串的前i个,与B串的前j个,并以B[j]为结尾的LCIS 的长度.状态转移方程:if(A[i]==B[j]) dp[i][j]=max(dp[i-1][k])+1; ( 1 <= k < j )else dp[i][j]=dp[i-1][j];然后选择循环顺序,就可以将算法的复杂度降为n*n.Greatest Common Increasing SubsequenceTime Limit:2 Seconds Memory Limit: 阅读全文
posted @ 2013-03-26 15:34 chenhuan001 阅读(610) 评论(2) 推荐(0) 编辑
摘要:采用的是 O(nlogn)的算法。算法的关键是: 用一个数组g[i] 记录当前有i个元素的递增子序列的最后一个元素的最小值,因为g是单调的,所以可以用二分.Longest Ordered SubsequenceTime Limit:2000MSMemory Limit:65536KTotal Submissions:25957Accepted:11274DescriptionA numeric sequence ofaiis ordered ifa1<a2< ... <aN. Let the subsequence of the given numeric sequence 阅读全文
posted @ 2013-03-24 21:56 chenhuan001 阅读(176) 评论(0) 推荐(0) 编辑
摘要:求一个串需要添加多少个字符才能变成回文。思路: 求出这个串与他的反串的最大公共子序列, 其实这个序列就是最大的已存在的回文数。 然后用总的数量减之即可PalindromeTime Limit:3000MSMemory Limit:65536KTotal Submissions:45849Accepted:15630DescriptionA palindrome is a symmetrical string, that is, a string read identically from left to right as well as from right to left. You are 阅读全文
posted @ 2013-03-24 17:16 chenhuan001 阅读(200) 评论(0) 推荐(0) 编辑
摘要:入门题。有条件控制的状态转移 if(s[i]==j[i]) dp[i][j]=dp[i-1][j-1]+1;else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);Common SubsequenceTime Limit:1000MSMemory Limit:10000KTotal Submissions:31866Accepted:12457DescriptionA subsequence of a given sequence is the given sequence with some elements (possible none) left out. G. 阅读全文
posted @ 2013-03-24 13:30 chenhuan001 阅读(201) 评论(0) 推荐(0) 编辑
摘要:题意不明坑死人。。 到底是最长路呢,还是一个最小生成树?我只知道这个数据4 31 2 11 3 11 4 3用最长路求出来的是4, 最小生成树求出来的是5... 最坑爹的是两种都过了。。。不过这次也还学到了一些东西, 就是给定的栈的大小很小,10^5的都没有, 所以这题如果要用dfs遍历树的话,要自己添加栈空间#pragma comment(linker, "/STACK:102400000,102400000") //这个是好东西其他就比较好求了...最长路的代码#pragma comment(linker, "/STACK:102400000,10240000 阅读全文
posted @ 2013-03-23 15:02 chenhuan001 阅读(993) 评论(0) 推荐(0) 编辑
摘要:1. 简单模拟题2.快速幂,加上一点数组的处理。。 其实也是很简单的,但是我交了好几次才过...#include <stdio.h>#include <string.h>#include <iostream>using namespace std;typedef __int64 LL;#define MOD 1000000007int n,t,k;LL g[100100];LL fuc(){ if(t==0) return 1; LL sum=k; LL s=1; while(t!=1) { if(t%2==0) { ... 阅读全文
posted @ 2013-03-22 13:43 chenhuan001 阅读(179) 评论(0) 推荐(0) 编辑
摘要:初赛的题目还算是比较容易的, 不过因为缺少比赛经验比较紧张,拿到题目都不想仔细, 每次有一些想法,就赶紧写代码赶紧想提交,完全没有了平时的冷静, 最后导致大量的罚时。 这个必须得练,要是有做cf的冷静,也不会这个样子了... 下次做比赛的时候一定要注意, 一定要想清楚了再下手,要知道你每多提交了一次你就相当于多了花了20分钟思考, 而你在这20分钟把bug找出来就省了很多时间。平时做题目,稍微复杂的点的题,你都会将代码读一遍比赛的时候除非特殊的情况我觉得我也读一遍代码。。多思考一下,看哪里有问题。。a. 很水的题目b. 多重背包的题目吧 也是比较基础。#include <stdio.h& 阅读全文
posted @ 2013-03-22 13:05 chenhuan001 阅读(195) 评论(0) 推荐(0) 编辑
摘要:入门题,最近又一次想不起来背包的dp方法,无奈又得找道水题找找感觉...Charm BraceletTime Limit:1000MSMemory Limit:65536KTotal Submissions:15063Accepted:6880DescriptionBessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like to fill it with the best charms possible from theN(1 ≤N≤ 3,402) a 阅读全文
posted @ 2013-03-21 16:47 chenhuan001 阅读(161) 评论(0) 推荐(0) 编辑
摘要:第一道DLX 的题, 算是模板题吧。看了很久的论文才看懂, 双向十字链表第一次写还是有点纠结。 但是耐心点还是没有问题的。搜素的优化,感觉这个超高效率的优化应该可以应用在很多方面。 在实现的过程中还有一个需要注意的东西,就是remove 和resume 要对称,不然就可能导致时间很慢或错误。。。#include <stdio.h>#include <string.h>#include <iostream>using namespace std;#define N 111000#define INF 0x3fffffffint n,m;int g[1010][ 阅读全文
posted @ 2013-03-20 16:38 chenhuan001 阅读(179) 评论(0) 推荐(0) 编辑
摘要:入门题吧。。。Perfect ServiceTime Limit:2000MSMemory Limit:65536KTotal Submissions:1220Accepted:593DescriptionA network is composed ofNcomputers connected byN− 1 communication links such that any two computers can be communicated via a unique route. Two computers are said to beadjacentif there is a communi 阅读全文
posted @ 2013-03-18 13:33 chenhuan001 阅读(288) 评论(0) 推荐(0) 编辑
摘要:贪心,先用dfs从1号结点开始,将经过的每个点都记录下来, 然后反向贪心, 这样就可以保证每次都先判断完子结点然后再判断父结点。 然后就是在在判断每两个相邻的点时(必须取一个),我们为了保证选的点数最小所以每次都选这个点的父亲结点,因为选了父亲结点绝对比选这个结点优。 然后每次都这样选择那么就可以保证最后结果最优。 然后要注意的是,每次确定一个点为支配集后,这个点的父亲结点也标记为可以到达的. Cell Phone NetworkTime Limit: 1000MSMemory Limit: 65536KTotal Submissions: 4930Accepted: 1739Descript 阅读全文
posted @ 2013-03-17 22:53 chenhuan001 阅读(194) 评论(0) 推荐(0) 编辑
摘要:无聊和欧阳一起比赛。。。才发现差距是巨大的, 欧阳的思维+编程的速度比我快了3倍左右。 也就是一般的题 我a了一题, 他就可以a 3题。加油吧, 菜鸟。a. 题意是简单的,但是情况稍微一点多。。。 注意这些情况就可以了#include <stdio.h>#include <string.h>#include <iostream>using namespace std;int main(){ int x,y; int x1,y1,x2,y2; int n,m,a,b; scanf("%d%d%d%d",&n,&m,& 阅读全文
posted @ 2013-03-17 17:05 chenhuan001 阅读(216) 评论(0) 推荐(0) 编辑
摘要:最近公共祖先。。 表示卡在一个位置卡了很久。。思维还是差了些,在一颗树上记录距离只需记录到根结点的距离,如果要求两个点的距离(一个点时另一个点的祖先)只需将他们到根结点的距离相减就行了.唉,其他的就是普通的LCA (离线)。等下去学有限的LCAHow far away ?Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2412Accepted Submission(s): 893Problem DescriptionThere are n ho 阅读全文
posted @ 2013-03-15 14:50 chenhuan001 阅读(260) 评论(0) 推荐(0) 编辑
摘要:这题想了比较久, 一直都有一个想法可是无法确切的提出。 那就是在题目中给出的残留网络中进行某些回流的操作然后得到一个负值就可以减少费用。。。可是我还是没有想到-只要残留网络中存在着负环那么就可以根据负环来更新最小费用。消圈定理:残留网络里如果存在负费用圈,那么当前流不是最小费用流。(证明略)那么就可以用spfa找出负环,然后对于环上的边都改变一个流向. 就可以得到结果。Time Limit:1000MSMemory Limit:65536KTotal Submissions:2631Accepted:688Special JudgeDescriptionThe City has a numbe 阅读全文
posted @ 2013-03-11 10:26 chenhuan001 阅读(368) 评论(0) 推荐(0) 编辑
摘要:其实题意很明确,最小费用最大流, 但是我这2货就建图就太二了, 我把所有的情况都弄到一个图里面。 总的点数有5000个,加上这么多的边,果断TLE。。。后面知道第k个的情况是独立的,所以可以分成K次建图。 然后每次的点为100, 这样复杂度会小很多很多。 以后注意了,不要那么二的全部都在一起。 要坚持点边越少越好。Minimum CostTime Limit:4000MSMemory Limit:65536KTotal Submissions:11552Accepted:3899DescriptionDearboy, a goods victualer, now comes to a big 阅读全文
posted @ 2013-03-10 09:43 chenhuan001 阅读(186) 评论(0) 推荐(0) 编辑
摘要:赤裸裸的最小费用最大流,不过话说KM 算法当然也可以搞定。Going HomeTime Limit: 1000MSMemory Limit: 65536KTotal Submissions: 14859Accepted: 7604DescriptionOn a grid map there are n little men and n houses. In each unit time, every little man can move one unit step, either horizontally, or vertically, to an adjacent point. For e 阅读全文
posted @ 2013-03-09 15:26 chenhuan001 阅读(167) 评论(0) 推荐(0) 编辑
摘要:10分钟左右A了... What Is Your Grade?Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 6195Accepted Submission(s): 1867Problem Description“Point, point, life of student!”This is a ballad(歌谣)well known in colleges, and you must care about your sc... 阅读全文
posted @ 2013-03-09 10:15 chenhuan001 阅读(189) 评论(0) 推荐(0) 编辑
摘要:现在正享受着彻底征服一道题的快感... 爽做这题是曲折的, 首先拿到题目马上想的是用k次dp来做。 很快的敲好了,然后果断wa。 后面想不通于是自己生成数据, 发现确实dp很难解决这个问题,因为k次dp的做法在这题中已相当于一种贪心, 而这题明显贪心是有问题的.看看这个数据就知道了:4 31 2 3 50 2 1 11 4 2 33 4 1 2发现如果每次找都找最大路的时候,最后的结果是32, 明显结果是34,这就是每步最优却不能保证最后的结果最优.这时发现,网络流的回流可以很好的解决这一问题,因为有回流所以可以保证k次流时费用最小。 因为网络流算法在后续的寻找增广路的过程中,通过回流可以改变 阅读全文
posted @ 2013-03-08 21:26 chenhuan001 阅读(235) 评论(0) 推荐(0) 编辑
摘要:a. 最近做过的最痛苦的a题。 平时a题最多也就5分钟,可是这题我却卡了近一个小时。题意很简单,以一种规则画圈, 然后求给出点需要转多少次方向.找规律方法 1 #include <stdio.h> 2 #include <string.h> 3 #include <math.h> 4 #include <algorithm> 5 #include <iostream> 6 using namespace std; 7 8 9 int main()10 {11 int x,y;12 scanf("%d%d",& 阅读全文
posted @ 2013-03-06 16:16 chenhuan001 阅读(207) 评论(0) 推荐(0) 编辑
摘要:求几个数的LCM, 可以知道的是,从第一个开始每两个求一次最小公倍数,然后得到的就是答案。Least Common MultipleTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 20767Accepted Submission(s): 7739Problem DescriptionThe least common multiple (LCM) of a set of positive integers is the smallest posi 阅读全文
posted @ 2013-03-05 08:15 chenhuan001 阅读(161) 评论(0) 推荐(0) 编辑
摘要:纠结了很久的一道题目,从拿到题目开始就没有想法, 再到看了几天才看懂了怎么做。 为了看懂题解我还特意去看了看线性规划,这题确实不简单。这建图的思路很值得学习!关于题解, 网上有大神的详细解题报告,如果想彻底的搞懂建议去看点线性规划基础的东西,不然会对其中的松弛操作,还有不等式的建立搞不清楚。我的理解,首先看到题目就可以知道这个必定和线性规划有关, 整个就一个线性规划的模型, 然后自然的就会列出不等式,进行松弛操作。 在得到一组等式后, 又可以想到的是, 那种用网络流求解不等式的方法, 当时要满足其中的变量要正负都出现一次, 然后等式两两相减,最后就是建图, 用最小费用流求解了。1061: [N 阅读全文
posted @ 2013-03-05 08:01 chenhuan001 阅读(354) 评论(0) 推荐(0) 编辑
摘要:爱到深处伤到死,没死继续codeforces.a. 简单模拟题、b. 统计字符串中x,y的个数,输出的为然后一个x抵消一个y,输出剩下的.c. dp题, 这个状态转移以前没有见过,学习了下. 还有这题用其他的O(N*N)的算法,步骤不能太多容易超时,比赛的时候就写了一种 n*n 的超时算法。记得以前做的dp题,每次状态转移时都是根据固定的前面一层转移到这层. 而这次这个dp是连之前的也一起改变, 也就是当save[i]==save[j] 的时候 然后就让id=j . 具体看代码#include <stdio.h>#include <string.h>#include & 阅读全文
posted @ 2013-03-02 10:32 chenhuan001 阅读(260) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示