上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 38 下一页
摘要: 简单的01背包,把S看体积,把F看价值,把它们变正数处理就可以了。在处理负数时,因为减一个负数相当于加一个,所以要从前往后。#include #include #include #include #include #include using namespace std;int dp[200010]... 阅读全文
posted @ 2015-02-14 22:55 chenjunjie1994 阅读(161) 评论(0) 推荐(0) 编辑
摘要: P是端点,牛在区域中啊。。。#include #include #include #include using namespace std;const int N=1005;int pt[N],s[N];int n,p,c;int slove(int st){ int ans=0; int l=st... 阅读全文
posted @ 2015-02-14 22:24 chenjunjie1994 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 直接模拟就好,这里利用了scanf不读空格的优势吧。。#include #include #include #include using namespace std;char st[100];bool vis[300];int main(){ //freopen("t.txt", "r", s... 阅读全文
posted @ 2015-02-13 23:52 chenjunjie1994 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 直接DFS,因为实在没想到什么剪枝了...注意一点是,10.11使用的是1011哦#include #include #include #include #define LL __int64using namespace std;int n,ct,k;char str[20];void dfs(LL... 阅读全文
posted @ 2015-02-13 23:01 chenjunjie1994 阅读(371) 评论(0) 推荐(1) 编辑
摘要: 这道题我记得是携程比赛上的一道。开始时想直接设面积,但发现不可以,改设能否构成三角形。设dp[i][j][k]为前i根木棍构成边长为j和k的三角形,那么转移可以为dp[i][j][k]=dp[i-1][j-len[i]][k]|dp[i-1][j][k-len[i]]。当发现可以构成三角形时,再用海... 阅读全文
posted @ 2015-02-13 22:08 chenjunjie1994 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 明天补上。。。这道题的思路确实很精致。考虑到连的边肯定不会是一个环,所以至少有一个断点。于是,可以枚举这个断点。断点一确定,那么连边的走向也就确定了。用D【i】表示由i开始可以到达的最远点即可。对于中间被断开的点,保存[1,left],[right,n]即可。#include #include #i... 阅读全文
posted @ 2015-02-12 23:43 chenjunjie1994 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 一水,最小生成树,缓解心情#include #include #include #include using namespace std;const int inf=(1lowest[k]){ minc=lowest[k]; pos=k; } } // coutmap[pos][k]) ... 阅读全文
posted @ 2015-02-12 17:05 chenjunjie1994 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 把边按权值排序后,就相当于求一个子序列以1开始和以n结束。由于边权递增,而且相差>=k,所以,边的顺序也必定是递增的。知道,当处理一条出边时,必定是从入边选择一条最优的边,考虑两个因素,入边的权值和入边以前的总的代价。优化很容易想到,每个结点维护一个数组,就不需要从头扫描边数组了。但这个维护的结点的... 阅读全文
posted @ 2015-02-12 15:45 chenjunjie1994 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 范围 内的斐波那契的数不多,求出范围内的数,再暴力枚举即可。#include #include #include #include #include using namespace std;#define N 1000000000__int64 foci[200];int fc=0,cnt;__i... 阅读全文
posted @ 2015-02-12 12:10 chenjunjie1994 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #define LL __int64 7 using namespace std; 8 9 LL dp[25][1>=1;27 }28 return ret... 阅读全文
posted @ 2015-02-11 18:22 chenjunjie1994 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 一开始又往打表想了。。。。不过,打表确实不好处理,转DFS。DFS有几个要注意的问题,1、对于枚举以零开始的数。我纠结了很久,最终学习别人的方法,设一个BOOL,并且假设最高一位有零,很方便。2、当枚举到字符串最后一位的情况3、对于连续的相同字符的处理,可以当一符合字符位置移动时,枚举的指针立即移动... 阅读全文
posted @ 2015-02-11 14:14 chenjunjie1994 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 超内存了,呃。。。不知道如何优化了。首先要判断区间的和是否和1~n的和相等。再个,记录下每个数字前一次出现的位置,求这些位置的最大值,如果小于左端点,则表示有这样的一个序列。呃~~~第二个条件当时曾有想过,但认为要在O(1)时间内得出不可能,后来才知道,还有ST算法啊。。。。不让熟练啊。。。#inc... 阅读全文
posted @ 2015-02-08 15:37 chenjunjie1994 阅读(293) 评论(0) 推荐(0) 编辑
摘要: 这道题本来很水,以前做过一样的,斐波那契数列,用矩阵快速幂的方法求,本来很水,以前做过很多次,为毛做的时候没想到T_T#include #include #include #include #define LL __int64using namespace std;const LL MOD=1000... 阅读全文
posted @ 2015-02-08 14:32 chenjunjie1994 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 真是跪了,一看范围就不会往枚举的方向想,没想到真用枚举加剪枝了。。。-》——-》解释一下代码中的上限:例如4567,当枚举最高位时,很明显不能超过4,所以有上限,但当最高位为3以下时,低位就是没有上限的,可以从0~9枚举。当之前的和#include #include #include #includ... 阅读全文
posted @ 2015-02-07 22:00 chenjunjie1994 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 和上题类似,但加上了一个条件要被13整除。可以想到要设三维。开始时设DP[I][J][K],直接设能否被13整除为一类,但转移不了。。。可以设DP[I][J][K]令J为除13后的余数,I为位数,K代表位数中13的情况,这样转移就方便了。 1 #include 2 #include 3 #inc... 阅读全文
posted @ 2015-02-07 09:58 chenjunjie1994 阅读(269) 评论(0) 推荐(0) 编辑
上一页 1 ··· 11 12 13 14 15 16 17 18 19 ··· 38 下一页