上一页 1 2 3 4 5 6 7 8 ··· 38 下一页
摘要: A题。发现是递推可以解决这道题,a[n]=6*a[n-1]-a[n-2]。因为是求和,可以通过一个三维矩阵加速整个计算过程,主要是预处理出2^k时的矩阵,可以通过这道题 1 #include 2 #include 3 #include 4 #include 5 #define LL long... 阅读全文
posted @ 2015-10-16 20:11 chenjunjie1994 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 可以知道,当T较大时,对于LIS,肯定会有很长的一部分是重复的,而这重复的部分,只能是一个block中出现次数最多的数字组成一序列。所以,对于T》1000时,可以直接求出LIS,剩下T-=1000直接求出现次数最多的数字的个数即可。其实可以不用到1000,只需到n即可。#include #inclu... 阅读全文
posted @ 2015-10-05 23:39 chenjunjie1994 阅读(189) 评论(0) 推荐(0) 编辑
摘要: 第一次写LCT,各种模板加入。。。以后都只遇到有新意的题目再更新了这道题就是LCT,但是,难在一个回退的操作。这时,可以通过改变执行顺序,先把要回退后再做的操作先执行了,再回退到之前的执行。这时,建立一棵操作树,使用DFS可以回退的特点,就能完成这一功能。#include #include #inc... 阅读全文
posted @ 2015-10-04 20:43 chenjunjie1994 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 用线段树维护哈希,类似于进位制的一个哈希 a[i]*p^i+a[i-1]*p^i-1...然后,线段树存在某区间的哈希的值,对于更新,则只需提前计算出整段的哈希值即可。判断是否相等,由于相隔为d,只需计算(l+d,r),(l,r-d)两段哈希的值是否相等即可。为了防止一次哈希可能使不符合条件的值哈希... 阅读全文
posted @ 2015-09-24 22:00 chenjunjie1994 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 不说了,爆内存好几次,后来醒起状态有重复。。。状压+TSP#include #include #include #include #include #define LL long longusing namespace std;//#pragma comment(linker, "/STACK:10... 阅读全文
posted @ 2015-09-23 11:01 chenjunjie1994 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 数位DP题,然而不会做。设dp[i][j]表示前i位异或和为j的时候的个数。先dp出所有的可能组合使得异或和为j的个数,然后按位进行枚举。对于dp[i][j],其实不止是前i位,对于后i位的情况同样适用,当在枚举s[i]位时k,如果k#include #include #include using ... 阅读全文
posted @ 2015-09-17 16:05 chenjunjie1994 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 其实是一道状态DP题。都是行与行之间的转移,可以知道,当某j列中有一个象,如果存在情况i-1行j-1列有象而i,j-1位置无象则不可放,或者i-1,j+1有而i,j+1无同样不可放。使用快速状态转移#include #include #include #include #include #inclu... 阅读全文
posted @ 2015-09-17 16:00 chenjunjie1994 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 在一个边长为10^6正方形中,可以把它x轴分段,分成1000段。奇数的时候由底往上扫描,偶数的时候由上往下扫描。估计一下这个最长的长度,首先,我们知道有10^6个点,则y邮方向最多移动10^3*10^6。对于x轴方向,如果都在一个段内,则最多移动 10^3*10^6,如果均不在一个段内,最多就200... 阅读全文
posted @ 2015-09-17 15:56 chenjunjie1994 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 每次BC都好心酸。。。BFS+queue。。状态可以设为p_val[x][y][k],加上斗志的值。#include #include #include #include #include #include using namespace std;char str[55];int h[55][55]... 阅读全文
posted @ 2015-09-12 22:14 chenjunjie1994 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 这道题算不算脑洞题。。可以发现,当一个排列中有循环节时长度为1或2时可能有解。当为1时,只需把全部点都连到这个题即可,当为2时,就要求所有循环节长度均为偶数,这很容易理解,因为如果存在为奇数,它们之间连线之后就可以形成环或者不存在的情况了。把其他循环节上的点分别连到这两个点上即可。为什么是2呢?因为... 阅读全文
posted @ 2015-09-12 17:04 chenjunjie1994 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 树上DP题。其实有点类似于01的问题。方程很容易想到。首先,因为一条链的节点其实都是在树上的,所以很容易想到应该先求一个LCA。然后,当某节点不是链的LCA时,它的转移就是:dp[i]=sum[i],其中,sum[i]是i的子节点的dp[i]的和。如果它是某个点的LCA时,那么它的转移就是dp[i]... 阅读全文
posted @ 2015-09-10 11:19 chenjunjie1994 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 发现枚举+二分更好!我做得复杂了,竟然两个都是从左边开始枚举。找最大最小用ST算法吧。#include #include #include #include #include #define LL long longusing namespace std;const int MAX=100050;i... 阅读全文
posted @ 2015-09-09 23:33 chenjunjie1994 阅读(352) 评论(0) 推荐(0) 编辑
摘要: //枚举因子,查找和i最近的左右是i因子的点即可。#include #include #include #include #define LL long longusing namespace std;const int MAX=100010;const LL mod=1e9+7;int l_nex... 阅读全文
posted @ 2015-09-09 23:30 chenjunjie1994 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 由于最长不超过30个字符(由K的范围确定),于是,枚举所有的字符串,二分中使用二分就可以确定第K小了。#include #include #include #include using namespace std;char str[20010];int bits[32];int save[32][2... 阅读全文
posted @ 2015-09-08 10:52 chenjunjie1994 阅读(150) 评论(0) 推荐(0) 编辑
摘要: [background]保研的事终于告一段落了,之后去北京折腾了一段时间,本以为会在那里实习一个月,谁知道刚去ICT,心中就各种反感,可能是因为LP的态度吧,否则我可能会留在那里读研也说不定。花了两千多,最终灰溜溜的回来了,信心就大受打击。幸好的是,家人给予理解。八月的那一段时间,内心实在十分苦闷,... 阅读全文
posted @ 2015-09-08 10:49 chenjunjie1994 阅读(284) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 38 下一页