摘要:
有几个参数和它们的大致值: 0x7f:$10^{300}$ 0x42:$10^{11}$ 0x43:$10^{16}$ 0xfe:$-10^{300}$ 0xc2:$-10^{13}$ 阅读全文
摘要:
link 主要难点在读题。首先理清所谓“可交换集”的意义。可交换集是对于下标而言的,,每个可交换集是一个数对,相当于是把数列中的两个位置连接了起来,而所有可以通过这些边到达的下标集合被称为一片云。一片云是好的当且仅当云中对应下标在原数列中组成的集合和排序后对应下标组成的集合完全相同。很显然假如一片云 阅读全文
摘要:
link 一个有趣且古老的贪心题,有些思维难度。 首先把精灵选择矮人的过程替换为矮人选择精灵的过程,每个矮人有许多精灵可以选择,他只能选择其中一个,剩下的精灵可以推给下一个矮人,这样一来就变成了什么样的策略使得矮人输的次数更大。对于一个矮人,假如存在比它强的精灵那么一定会选,因为多赢一次总是好的;那 阅读全文
摘要:
set支持二分查找,毕竟它本身就是一个平衡树(似乎是传说中的红黑树?)。同时erase操作也很方便,演示: set<int>s; for(int i=1;i<=5;i++)s.insert(i); //data in set:1 2 3 4 5 set<int>::iterator it=s.low 阅读全文
摘要:
如题,放个枚举子集的板子,可以把 $O(4^N)$ 砍成 $O(3^N)$。 for(int j=i;j;j=(j-1)&i); 阅读全文
摘要:
link 给定一些串,每个串可以进行重组,最小化这些串最后组成的Trie的结点数。 数据范围指向状压DP。很明显最后的答案和每个串一开始的字符顺序无关,于是可以记录每个串中每个字符的数量。然后发现在两个串合并的时候,为了使得树上结点最少,考虑贪心地把相同的字符排到前面去,于是最后的答案是 $len_ 阅读全文
摘要:
link 一道很好的线段树题目。 题外话:今天上午,全宇宙内最弱的辣鸡 Feyn 再一次和正解擦肩而过,下午这个蒟蒻看题解甚至没有看懂题解的写法(参考题解链接,我实在没看出来它的两棵线段树咋维护的,为啥觉得它只写了一棵呢,果然我还是太弱了),于是这个连题解都看不懂的菜鸡花了一下午时间研究了一种低效但 阅读全文
摘要:
link 蒟蒻只会打表。 由于题目中 $K$ 和 $M$ 都很小,那么我们可以考虑找出一个长度为 $K$ 的区间满足其中刚好有 $L$ 个质数,保存下来到时候输出即可。给出打表程序的代码,代码中有注释: #include<bits/stdc++.h> #define feyn const int N 阅读全文
摘要:
link 一道挺有价值的题,标的是数位DP但感觉不像呢,它感觉更像是一个递推和差分,DP倒真的说不上(毕竟它没有记忆化)。 首先第一列出现的元素是容易求的,但第二列似乎是麻烦的。但考虑一下发现,容易想到假如不考虑进位的话那么第二列的所有数应该都是回文数,而既然都是回文数了那么它的取值集合的大小就会大 阅读全文
摘要:
link 明显的最小割,但数据范围比较大(虽然据讨论可以水过但我没去试)。于是考虑使用正确复杂度的算法,想到对偶图。然后这就是一个对偶图的板子了,图都给你画出来了正常加边跑最短路即可。需要注意的是加边的时候要加无向边,在这个地方卡了一会。每日维生素B。 #include<bits/stdc++.h> 阅读全文
摘要:
link 由于相邻的两个数不能同时选择,于是考虑把相邻的两个元素连边。又由于整张图很明显可以进行黑白染色,于是连边之后的图会形成一张二分图。于是寻找最大的方案就变成了割掉最小的方案,跑最大流最小割即可。 #include<bits/stdc++.h> //#define feyn #define i 阅读全文
摘要:
link 其实感觉这玩意不应该叫什么自动机,这似乎就是一个个人yy出来的东西。。。 给定一个文本串和许多模式串,询问每个模式串是不是文本串的子序列。如果是询问字串的话直接上kmp即可,但子序列呢。考虑贪心,寻找文本中第一个和模式串第一个元素相同的元素位置,选择它相较于选择其它值相同的元素肯定不劣,毕 阅读全文
摘要:
link 排队那道题的数据加强版,那道题是动态逆序对,这道题是动态带权逆序对,实际是差不多的。直接上线段树套动态开点线段树的板子就可以了,取模方面比较严格导致我的int写法一直没过,开龙龙宝宝就可以了。空间卡得比较死,甚至我用241M过掉的这道题(空间限制是250M,请叫我空间带师)。写法上注意两个 阅读全文
摘要:
复习。主要是考场上要用迭代器的时候突然忘了。我是傻逼。放个板子以防以后忘了。 map<int,int>a; a[3]=3; a[2]=2; a[1]=1; a[100]=1; map<int,int>::iterator it=a.begin(); while(it!=a.end()){ if(it 阅读全文
摘要:
link 暴力容斥。 虽然跑得比其它方法慢一些,但也不算太慢(最慢的点也就六十毫秒),个人觉得这种方法比较无脑,代码细节要少一些,简单来说就是好写。 首先合法的数对是可以暴力求得的,然后考虑补集转化,求出 Slavko 获胜的方案数就可以啦。但他获胜的方案怎么求呢?可以想到他的方案可以基于某种取法下 阅读全文