05 2013 档案

摘要:1 // Code From ftiasch 2 #include <cstdio> 3 #include <cstring> 4 #include <climits> 5 #include <algorithm> 6 using namespace std; 7 8 const int N = 111111; 9 const int INF = 1000000000; 10 11 struct Node { 12 int minimum; 13 Node *left, *right; 14 15 Node(int m, Node *l, N.. 阅读全文
posted @ 2013-05-30 22:11 yefeng1627 阅读(424) 评论(0) 推荐(0)
摘要:推荐论文:1.从一类单调性看算法的优化 汤泽2.关于DP的斜率优化http://wenku.baidu.com/view/d3d979dcd15abe23482f4d58.html3. 题目分析http://wenku.baidu.com/view/7745777801f69e3143329449.html4. 动态规划四之四边形不等式和斜率优化http://wenku.baidu.com/view/383d4de59b89680203d825a3.htmlCEOI 2004锯木厂选址预处理各前缀和,然后推出普通DP,然后利用决策单调性进行优化,证明过程有点忧伤,不妨跟着论文推推。#inclu 阅读全文
posted @ 2013-05-30 15:44 yefeng1627 阅读(2023) 评论(0) 推荐(0)
摘要:先记录下 阅读全文
posted @ 2013-05-29 19:36 yefeng1627 阅读(110) 评论(0) 推荐(0)
摘要:同下 阅读全文
posted @ 2013-05-29 19:36 yefeng1627 阅读(404) 评论(1) 推荐(0)
摘要:腾个地,有时间再写。 阅读全文
posted @ 2013-05-29 19:34 yefeng1627 阅读(117) 评论(1) 推荐(0)
摘要:先腾个地.有时间再写. 阅读全文
posted @ 2013-05-29 19:33 yefeng1627 阅读(112) 评论(0) 推荐(0)
摘要:邻接矩阵: 1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #define MIN(a,b) (a)<(b)?(a):(b) 5 const int M = 110; 6 const int inf = 0x3fffffff; 7 int n, m, A[1010], pre[1010]; 8 int remain[M][M], h[M], vh[M], S, T, N;39 int DFS( int u, int flow ) 40 {41 if( u == T ) re 阅读全文
posted @ 2013-05-25 10:23 yefeng1627 阅读(338) 评论(0) 推荐(0)
摘要:全名: Aho-Corasick 自动机, 类似 Trie + next函数写法: 动态 / 静态, 个人比较偏向与静态内容: 网上一大堆,我是看的 LRJ新版白书214页静态模板:// Aho-Corasick#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<queue>#include<algorithm>using namespace std;#define Clear(x) memset(x,0,sizeof(x)) 阅读全文
posted @ 2013-05-23 11:43 yefeng1627 阅读(946) 评论(0) 推荐(0)
摘要:做了前两场虽然有点恶心,但也没今天那么想吐嘈.... 反正是一题未A..不得不承认依旧很菜..A题,死了命的提示结果错误.... 显然已模拟题.封装 remove 与 maintain 然后print.. 各种情况都考虑,将其后台数据都输出比较.还是未找到错误点在哪里..#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;const int N = 50;char mp[N][N];int n, m;bool vis[N] 阅读全文
posted @ 2013-05-22 23:03 yefeng1627 阅读(245) 评论(0) 推荐(0)
摘要:题目来源: 2012天津现场赛A, 背景为麻将的模拟题,按照要求模拟就好。B,sqrt(N)分解因子,然后暴力算即可#include<cstdio>#include<cstdlib>#include<cstring>#include<string>#include<algorithm>using namespace std;int sum(int x,int b){ int res = 0; while(x){ res += (x%b)*(x%b); x /= b; } return res;}char mp[50] = " 阅读全文
posted @ 2013-05-22 12:13 yefeng1627 阅读(208) 评论(0) 推荐(0)
摘要:// 原串最大长度N// 返回最大回文字串 res#include<cstdio>#include<cstring>#include<cstdlib>#include<string>#include<algorithm>using namespace std;const int N = 1024;int rid[N<<2];string manacher(char *s){ string t, res; int L = strlen(s); // init t += '?'; for(int i = 0; 阅读全文
posted @ 2013-05-20 12:00 yefeng1627 阅读(235) 评论(0) 推荐(0)
摘要:算法内容http://blog.sina.com.cn/s/blog_70811e1a01014esn.html题目直接看输出即可, 注意前后放 ? #, #*. 然后找最大回文串长度应该是 rid[i]*2 + (str[i] =='#')#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>#include<string>using namespace std;const int N = 1024;char s[N];int rid 阅读全文
posted @ 2013-05-20 11:45 yefeng1627 阅读(223) 评论(0) 推荐(0)
摘要:hdu 4548 美素数 用线性筛法筛选出10^6的素数,然后预处理统计下.. O(1)就能得到结果了.#include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std;const int N = (int)1e6+10;bool vis[N];int p[N], sum[N];void GetPrime(){ memset(vis,0,sizeof(0)); vis[1] = 1; int cnt = 0; for(int i = 2 阅读全文
posted @ 2013-05-19 16:31 yefeng1627 阅读(227) 评论(0) 推荐(0)
摘要:弱到一定程度了... 不过还好.又涨经值和姿势了.....hdu 4551 生日猜猜猜 月份和日期都比较小, (12,31) 果断暴力, 然后判定下当前月份和天数是否合法.#include<cstdio>#include<cstdlib>#include<cstring>using namespace std;int day[2][13] = { {0,31,28,31,30,31,30,31,31,30,31,30,31 } ,{0,31,29,31,30,31,30,31,31,30,31,30,31 }};int gcd(int a,int b){ r 阅读全文
posted @ 2013-05-19 14:34 yefeng1627 阅读(210) 评论(0) 推荐(0)
摘要:训练赛链接:http://openoj.awaysoft.com:8080/judge/contest/view.action?cid=424#overview题目来源:The 10th Zhejiang Provincial Collegiate Programming Contest还是想吐嘈 ZOJ的题目描述,与模拟题的恶心程度........AApplications 背景是ACM集训队选拔,根据OJ题数,区域赛获奖,CF/TC排名, 还有个性别, 注意的地方是CF不满三场不计算.#include<cstdio>#include<cstring>#include 阅读全文
posted @ 2013-05-18 17:13 yefeng1627 阅读(585) 评论(2) 推荐(0)
摘要:本质上是暴力模拟计算,逐位统计、以及如何寻找不被约束的状态来简化计算 是关键点。例题1 ural 1057. 1.树形结合, 按位统计. 若当前位为1, 则取0, 剩下的位任意取都比其小, ans += f[ L ][ k-tot ], L表示剩下长度. 论文这个地方写的感觉不对- -...#include#include#include#include#includeusing namespace std;int f[32][32];void init(){ memset(f,0,sizeof(f)); f[0][0] = 1; for(int i = 1; i ... 阅读全文
posted @ 2013-05-17 13:55 yefeng1627 阅读(1421) 评论(0) 推荐(0)
摘要:参考论文:郭华阳《RMQ与LCA问题》 的解法.通过构建最小生成树,然后转换成 寻找最近公共祖先来求解, 逆序处理询问,将删除改成添加边.代码在BZOJ上WA了.暂时未找到原因, 先放着... 不过有看到用splay, 动态树等做的..#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>#include<map>#include<vector>using namespace std;const int N = (int)1e5+10;co 阅读全文
posted @ 2013-05-16 19:49 yefeng1627 阅读(661) 评论(0) 推荐(0)
摘要:题目源自 XTUhttp://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1170Coins题意: 有编号为1到10^9个盒子,每个盒子为空或装部分球,现在给K个区间,形如[ L, R , num ] 表示编号为 L到R的盒子中至少有num个球,求所有盒子装球的最小数量和。线段树解法 其实不难想到解法,我们依据c的值从小到大覆盖指定区间,若出现当前区间被完整覆盖时,则意味着冲突,应该为 "Error",否则求和。重要的是如何实现,区间覆盖问题,是线段树(segment Tree)的强项。 我们且先,假定盒子数量 阅读全文
posted @ 2013-05-15 15:49 yefeng1627 阅读(446) 评论(0) 推荐(0)
摘要:题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1208题意: 中文题就不说了,都能看明白解法: 数据结构题,应该使用一个BST类型的数据结构来实现,bst,treap,avl,splay,sbt,等等都可以。 我的解法是维护两个 spaly tree,A表示宠物,B表示收养者, 对于 a = 0, 添加宠物时, 首先检查 B是否为空, 若执行 A.insert( a ), 否则,调用方法 B.deal( a ). deal( val ) 的思路: 若B中原本就有val值,则花费为0,直接删除key[x]=val的节点。 否则插... 阅读全文
posted @ 2013-05-14 21:09 yefeng1627 阅读(230) 评论(0) 推荐(0)
摘要:全文资料来自wiki:http://en.wikipedia.org/wiki/Cyclic_numberCyclic numberCyclic Number 是一个整数是,且其连续的倍数 (1,2,..,L-1) ,是其本身数字的一个循环。 常见的如下142857 × 1 = 142857142857 × 2 = 285714142857 × 3 = 428571142857 × 4 = 571428142857 × 5 = 714285142857 × 6 = 857142而形如下非连续的倍数不是076923 × 1 = 阅读全文
posted @ 2013-05-14 10:56 yefeng1627 阅读(344) 评论(0) 推荐(0)
摘要:题意, 长度为n的序列, a1,a2, ...,ai, ..., an, 求最长严格上升子序列长度,与最长下降非严格自序列长度.解法: 首先不得不吐嘈下题目的读入,恶心指数上达5颗星. 对于一套拦截系统最多能拦截多少导弹, 求个非严格下降子序列就可以了.就不废话了. 主要还是求最少拦截数量. 有一个结论, 最少拦截系统数量为 严格上升子序列. 思路如下: 假定一个最长上升子序列形式如: ...a_i ... aj ... 对于 a_i 与 a_j 之间的数 x 只可能有两类, x <= a_i , 则可以 将这些导弹划分到 a_i拦截系统, x >= aj, 则可以将这些... 阅读全文
posted @ 2013-05-13 23:34 yefeng1627 阅读(372) 评论(0) 推荐(0)
摘要:还是很弱啊,发现确实要多做CF, 不单单训练思维,而且还有代码。还能多参考大神的思路与代码。Div 2.A题, 给定 n <= 5000, 求满足 1<=a<=b<=c<=n, 的直角三角形数量.解法, 数据量不大,可以暴力枚举 a, b, 然后求满足的 cView Code #include<cstdio>#include<cstdlib>#include<cstring>#include<cmath>typedef long long LL;const int N = 10000;int main(){// me 阅读全文
posted @ 2013-05-13 12:58 yefeng1627 阅读(194) 评论(0) 推荐(0)
摘要:感谢 谢大,duoxida,zhsl ,教会了我几个训练赛当中没有想出来的题。A Force Brute题意: 没发现其水题本质啊.. 给定 N个单词, 然后问最大循环次数.解法: KMP next数组的运用, 更详细的可以看这一篇总结http://www.cnblogs.com/yefeng1627/archive/2013/04/28/3050027.html这里就简要说下, 因为求next的过程是一个一个构造循环节的, (L+1)-next[L+1] 即为当前字符串的最小循环节长度, 而 L%( (L+1)-next[L+1] ) 表示目前 循环节构造了多少个,若为0则意味着构造满了.. 阅读全文
posted @ 2013-05-12 20:38 yefeng1627 阅读(318) 评论(0) 推荐(0)
摘要:A Alice and Bob解法一, 比赛时用的解法是,因为N<=10000,那么枚举A,B分别拿的时候数量,然后求最小,然后得出A,B拿的最小次数的上下界比较,得出区间的几个关系,因为k1>=k2,判定有点复杂。特殊情况比较多。解法二,是用动态规划,状态方程 dp( i, j ) , 表示剩下 i 块石头,j = 0时,最后一次是A拿最小次数, j = 1,最后一次是B拿最小次数。转移方程为 dp( i, 0 ) = min{ dp(i-2^k,1) } +1, dp( i, 1 ) = min{ dp(i-3^k, 0) } +1 .比较下还是解法二比较好,没那么多特殊情况判 阅读全文
posted @ 2013-05-12 19:34 yefeng1627 阅读(296) 评论(0) 推荐(0)
摘要:题目来源 The 13th Zhejiang University Programming Contest链接:http://openoj.awaysoft.com:8080/judge/contest/view.action?cid=421#overviewA -Alien's Organ题意: 事件出现平均概率为a, 问出现次数小于等于N的概率解法: 泊松分布,,跟着公式算就好.View Code // p(k) = e^(-ave) * ave^k / k!#include<cstdio>#include<cmath>int main(){ double 阅读全文
posted @ 2013-05-09 13:40 yefeng1627 阅读(203) 评论(0) 推荐(0)
摘要:训练赛链接:http://www.acmore.net/contest.php?cid=1013Problem A: Yard题意: n*m的格子,有树与空地,要求每个位置上下左右树的数量为偶数.求拔除与种植最小花费.解法: 状态压缩, 第一行状态确定后,则所有行都确定. 然后枚举第一行状态,取个最小值即可.View Code #include<cstdio>#include<cstring>#include<cstdlib>#include<algorithm>using namespace std; const int inf = 0x3f3 阅读全文
posted @ 2013-05-09 13:21 yefeng1627 阅读(414) 评论(0) 推荐(0)
摘要:A: 相邻三个和最大,及对应中间位置. 暴力即可.View Code #include <iostream>#include <cmath>#include <cstring>#include <cstdio>#include <string>#include <stdlib.h>#include <algorithm>using namespace std;typedef long long LL;const LL Mod= 1e9+7;const int N = 1010;int a[N], n; int 阅读全文
posted @ 2013-05-06 10:21 yefeng1627 阅读(470) 评论(0) 推荐(0)
摘要:NOI2010的一道动态规划,乌龟棋。线性的N个位置,每个位置有个权值,从1到N,给M个牌。每个牌在[1,4]范围。求最大权值和。最初考虑在用位置来表示状态,发现实在太多,无从下手. 后观摩别人思路后.发现竟然是从4种牌着手.4种牌使用的数量就已经确定了位置, 时间复杂度O(N^4), 一句话的题解..唉.还是太弱.拿到问题考虑的方向面还不够全. 以后要多注意发掘题目所给的数据以及题目的特性. 阅读全文
posted @ 2013-05-02 23:12 yefeng1627 阅读(132) 评论(0) 推荐(0)
摘要:题意: N个城市(n<=100), 每个城市是一个矩形的(输入数据给定随机三个顶点),且四个顶点都有飞机场,城市内四个顶点移动单位花费Ti, 不同城市间通行只能坐飞机,单位花费都为m,现在给定起点城市A,和终点城市B. 求最短花费.解法: 首先是已知矩形三个顶点求第四个顶点. 然后拆点. 每个城市四个顶点. 城市间四个顶点只能坐火车,城市内顶点和其他城市顶点坐飞机.然后总共400个顶点.做一次floyd,求出任意双点间最短路,然后枚举A,B的四个顶点.取最小即可. 想法很简单....代码写起来感觉不太好~~~虽然1A...View Code #include<cstdio># 阅读全文
posted @ 2013-05-02 20:43 yefeng1627 阅读(157) 评论(0) 推荐(0)
摘要:写写思路吧,WA了数十次,都快哭了...改这改那的- -...A了以后都不知道先前哪里写搓了...设定一个阀值sqrt(M),当顶点关联的边数量超过阀值,则令其为超级点,否则为普通点,若边数量为M,则超级点数量不超过2*sqrt(M),证明如下: 因为,无向图中,假定有2*sqrt(M)个顶点相关联的边至少为sqrt(M),则边数量为, 2*sqrt(M)*sqrt(M)/2 = M, 则意味着边数量大于M,所以矛盾, 得证.我们设定一个数组 ans[3],来表示所求结果, 对于每个顶点添加一个sum[2],代表与其关联的顶点颜色为 0/1的边权和.假定我们修改一个顶点x 的颜色, 若其颜色. 阅读全文
posted @ 2013-05-01 21:48 yefeng1627 阅读(760) 评论(0) 推荐(0)

Launch CodeCogs Equation Editor