08 2017 档案

摘要:首先这个题化成两个集合还是很容易的想到的,但是不知道怎么用二进制表示,感觉这个题的脑洞还是很大的。 为什么可以用二进制表示化成集合可以包含所有的点对,因为要是两个数不同的话肯定会有一个二进制的位数不同 所以就包含了所有的点对。 阅读全文
posted @ 2017-08-26 10:46 Heilce 阅读(394) 评论(0) 推荐(0)
摘要:题意: 求一个大小为k的子序列,然后使这个序列乘积后面的0最多。 题解: 这种一还是应该从大局考虑的,考虑怎么才能生成0的个数最多。 我们可以知道的是只有2和5的乘积可以生成10。 然后我们可以定的状态就是 dp[i][j]为大小为i的subset,2的个数为j此时的5的个数。 方程写下来的话,然后 阅读全文
posted @ 2017-08-22 16:39 Heilce 阅读(102) 评论(0) 推荐(0)
摘要:1、这个题被我以前做的题迷住了,总是把我的思路带偏其实这个就是一个简单的二分。 2、我们在定状态的时候会发现很多的量我们没有办法统计,如果长度定的话我们还是很好的统计的。 3、dp[i][j] : 阅读全文
posted @ 2017-08-21 21:28 Heilce 阅读(131) 评论(0) 推荐(0)
摘要:1:求相同班级的学生不相邻的全排列 f[i][j]代表已经处理完了前i个班级,有多少个空隙左边和右边的同学的班级相同。 我们考虑把第i个班级的同学分成k组,然后有u组分在了左边和右边相同的空隙中,其他的分在了左边和右边不相同的空隙中。 首先把把a[i]个学生分成k组,所以这个分法一共有C[a[i]- 阅读全文
posted @ 2017-08-21 18:31 Heilce 阅读(661) 评论(0) 推荐(0)
摘要:题解: 主要的思路就是怎么能让这两个串链接起来,还有就是明白AC自动机主要处理什么问题,知道了这些这个问题就能很好的解决了。。 阅读全文
posted @ 2017-08-21 10:24 Heilce 阅读(187) 评论(0) 推荐(0)
摘要:题解: 要是这个东西没有反对称的概念,我们直接AC自动机+dp就可以很愉快的解决了,但是现在有了这个反对称的原则,在不考虑跨过中间的部分的话这个还是很容易的解决的,dp[i][j][k][state]代表到了第i个位置,在左串的j节点,右边的k节点此时的state,但是这样子的话我们发现了一个问题就 阅读全文
posted @ 2017-08-21 09:41 Heilce 阅读(260) 评论(0) 推荐(0)
摘要:就是碰见三个圆或者四个圆的时候就想一下怎么用其他的东西等价一下啊。。。 阅读全文
posted @ 2017-08-09 23:29 Heilce 阅读(222) 评论(0) 推荐(0)
摘要:其实这种中档的问题,要是好好思考的话还是可以想出来的就是要深入的思考,实在不行就改变一下思路。 这个书写bitset的模板还是应该好好的记住的,真的感觉不错。 阅读全文
posted @ 2017-08-09 23:26 Heilce 阅读(403) 评论(0) 推荐(0)
摘要:这个题的背包的思想还是很容易想到的,但是这个bitset优化还是有点神奇的呀。。 阅读全文
posted @ 2017-08-09 23:22 Heilce 阅读(141) 评论(0) 推荐(0)
摘要:#include #include #include #include using namespace std; const int N=1e5+100; const int mod=1000000; int cur; long long ans; int times,root; int x1,x2; struct node { int father,lson,rson,date; }t... 阅读全文
posted @ 2017-08-05 23:18 Heilce 阅读(157) 评论(0) 推荐(0)