- 博客(20)
- 资源 (2)
- 收藏
- 关注
原创 Codeforces 408D Long Path
D. Long Pathtime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputOne day, little Vasya found himself in a maze c
2014-03-31 13:48:42 721
原创 POJ-3070 Fibonacci 矩阵快速幂
上次周赛遇到一道DP+快速幂的题目,结果不会用快速幂,学习一下。题目给出了公式,求第n位的数,不过只保留后4位,mod 10000 就可以了。#include #include #include #include #include #include using namespace std;struct mat{ __int64 a[2][2];};mat solve(
2014-03-30 14:47:28 498
原创 POJ-2063 完全背包
给你一笔钱,你要将这笔钱去投资,现在有t种股票,每种股票都有一个价值和年收益,问你如何投资在n年后的最大收益并且股票的价值都是1000的倍数,所以后面优化,对每个价值除以1000#include #include #include #include #include #include #define maxn 50000using namespace std;int t;
2014-03-26 20:48:38 440
原创 HDU-1248 完全背包
中文题,不能更水。#include #include #include #include #include #define maxn 10100using namespace std;int s[5]={150,200,350},v[5]={150,200,350};int sum[maxn];int main(){ int t; int n; cin>>t; wh
2014-03-26 20:46:56 536
原创 POJ-3450 3080 KMP
两道题基本一样,求出给的多行字符串里最长的公共子串,若长度相同,取字典序小的那一个POJ-3080 数据规模较小,POJ-3450把长度开大就好了,全是暴力枚举过的POJ-3450#include #include #include #include #include #include #include using namespace std;char str[440
2014-03-25 16:33:08 421
原创 POJ-2406 Power Strings KMP
如何判断是否是循环语句思考了很久,最后还是参考了别人的思路#include #include #include #define max 1000000using namespace std;int next[max];char str1[max];int get_next(char *pat){ int j=0,k=-1; int len=strlen(pat)
2014-03-23 22:57:52 468
转载 状态压缩DP总结
DP搞的头都大了,找到一篇好文留着慢慢看。动态规划本来就很抽象,状态的设定和状态的转移都不好把握,而状态压缩的动态规划解决的就是那种状态很多,不容易用一般的方法表示的动态规划问题,这个就更加的难于把握了。难点在于以下几个方面:状态怎么压缩?压缩后怎么表示?怎么转移?是否具有最优子结构?是否满足后效性?涉及到一些位运算的操作,虽然比较抽象,但本质还是动态规划。找准动态规划几个方面的问题,深刻
2014-03-23 16:57:13 536
原创 PO-J1125 Stockbroker Grapevine 最短路径
标准的最短路径模板题目#include #include #include #include #include using namespace std;const int inf=20;int dist[101][101];int i,j,k;int n; //经纪人个数void floyd(){ for(k=1;k<=n;k++) for(i=1;i<=n;
2014-03-22 23:26:48 491
原创 DP训练 POJ-1050 To the Max
题意:给出一个矩阵,求出最大子矩阵。最大子矩阵就是该矩阵的所有元素之和最大。思路:把该问题转化为一维数组最大连续子串和问题,即二维转化为一维。假设求出的最大子矩阵为从x行到y行,从第c列到第r列,则该矩阵转化为一维即用数组储存从第1列到第n列的所有x行到第y行的元素和,求数组的最大连续子串和。#include #include #include #include #incl
2014-03-22 23:01:12 482
原创 DP训练 hdu 1003 Max Sum 最大连续子段和
开始专项有目的做题,从水题开始吧。。。#include #include #include #include #define maxn 110000using namespace std;int n,a[maxn];int max(int a,int b){ if(a>b) return a; return b;}/*int maxsum(int v[]){ in
2014-03-22 22:49:50 476
原创 DP训练 K好数
问题描述如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。输入格式输入包含两个正整数,K和L。输出格式输出一个整数,表示答
2014-03-21 20:40:49 425
原创 POJ-1988 Cube Stacking 带权并查集
给你编号从1到30000块砖,有2种操作:1.M a b 表示把a放在b的上面。还有一种情况是:假如1的下面还有一个2,3的下面还有一个4,那么move1,3的意思就是把1所在的全部立方体放在3全部立方体的上面,而且保持原来1和3所在堆的立方体的顺序。移动后从上到下依次为1,2,3,4.且只能是这一种情况2.count a 表示询问a下面有几块砖带权值的并查
2014-03-21 18:05:23 553
原创 POJ-2492 A Bug's Life 带权并查集
#include #include #include using namespace std;const int maxn=20010;int n,m,p[maxn],sex[maxn];int find(int x){ if(p[x]==-1) return x; int y=p[x]; p[x]=find(p[x]); sex[x]=(sex[y
2014-03-21 16:23:23 447
原创 POJ-2524 Ubiquitous Religions 并查集
超水,最基础的应用,跟HDU的畅通工程一个难度#include #include #include #include #include #include #define maxn 50001using namespace std;int father[maxn];int n,m;void init( ){ for(int i=0;i<maxn;i++) { fat
2014-03-21 00:34:50 547
原创 POJ 1611--The Suspects 并查集
有一个学校,有N个学生,编号为0-N-1,现在0号学生感染了,凡是和0在一个社团的人就会感染,并且这些人如果还参加了别的社团,他所在的社团照样全部感染,求感染的人数。#include #include #include #include #include #include #define maxn 30001using namespace std;int father[maxn
2014-03-21 00:20:28 492
原创 codeforces 404B Marathon
挺好的一道题,结果因为自己粗心错掉了,边界数据给漏掉了。题意是一个运动员绕一个边长为a的正方形跑道跑,从(0,0)开始,每跑d米要喝水,喝nci,问n次的坐标。做法:(运动员在第几条线段上前进的距离+d)/a,得出可以前进多少线段,结果mod4 分别匹配就好了,循环处理n次#include #include #include #include #include using n
2014-03-20 09:05:35 595
原创 POJ-1308 并查集
#include #include #include #include #include #include #include #define maxn 10005using namespace std;int bin[maxn],vis[maxn];int find(int x){ int r=x; while(bin[r]!=r) { r=bin[r]; }
2014-03-18 23:04:18 594
原创 POJ-2155 Matrix 二维树状数组
#include #include #include #include #include #define maxn 1005using namespace std;int c[maxn][maxn],n;int bit(int n){ return n&(-n);//二进制 }int sum(int n,int m){ int ans=0; for(int i=n;i
2014-03-18 15:57:17 535
原创 ZOJ 3710 Friends 暴力
DescriptionAlice lives in the country where people like to make friends. The friendship is bidirectional and if any two person have no less than kfriends in common, they will become friends in sev
2014-03-11 20:19:04 570
原创 poj 3264 RMQ与线段树
用线段树和RMQ都可以做的题,给出一个数组,多次查询一个区间内之间最大值与最小值的差RMQ算法,使用一个二维数组预处理,使得查询时实现O(1)的查询效率.用一个二维数组f(i,j)记录区间[i,i+2^j-1](持续2^j个)区间中的最小值。其中f[i,0] = a[i]; 所以,对于任意的一组(i,j),f(i,j) = min{f(i,j-1),f(i+2^(j-1),j-1)}来
2014-03-01 19:56:01 564
机器学习实战
2017-10-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人