题目大意:给一个长度为$n(1\leqslant n\leqslant24)$的序列$S$和$k(0\leqslant k\leqslant2)$个数. 求有多少种$S$的排列方式使得其任何一个前缀和都不是$k$个数里的任意一个. 题解:状压$DP$,枚举当前选的数的状态和下一个数,卡常,枚举下一个数的时候不可以直接枚举,要枚举$lowbit$看是从哪个数转移过来的,洛谷那道题特别卡常,需要开$O(2)$ 卡点:无 C++ Code: #include <cstdio> #define max…
P2396 yyy loves Maths VII 题目背景 yyy对某些数字有着情有独钟的喜爱,他叫他们为幸运数字;然而他作死太多,所以把自己讨厌的数字成为"厄运数字" 题目描述 一群同学在和yyy玩一个游戏 每次,他们会给yyy n张卡片,卡片上有数字,所有的数字都是"幸运数字",我们认为第i张卡片上数字是ai 每次yyy可以选择向前走ai步并且丢掉第i张卡片 当他手上没有卡片的时候他就赢了 但是呢,大家对"厄运数字"的位置布置下了陷阱,如果…
这道题是一个状压动归题.子集生成,每一位表示是否选择了第$i$个数. 转移:$f[S] = \sum f[S-\{x\}]$且$x\in S$,当该子集所有元素的和为$b_1$或$b_2$时不转移. 初始化:$f[\{\}]=1$,其他为$0$. 目标:$f[全集]$. 注意常数即可. #include <bits/stdc++.h> using namespace std; #define re register #define rep(i, a, b) for (re int i = a;…
题目:https://www.luogu.org/problemnew/show/P2396 题意:有n个数,每次选择一个表示走$a[i]$步,每个数只能选一次. 最多有两个厄运数字,如果走到了厄运数字就不能继续走下去了. 选完所有数有多少种方案. 思路:n很小,状压. 用state表示已经选了哪几个数.如果state是厄运数字就continue 不是的话state就需要加上所有是1的,这道题卡常,所以可以用上lowbit.再开O2优化. #include<cstdio> #include&l…
P2397 yyy loves Maths VI (mode) 题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居然也不会,所以只好找你 题目描述 udp2:第一题因为语言性质问题,比赛结束后将所有c/c++的程序的内存调为2.2mb后重测. 他让redbag找众数 他还特意表示,这个众数出现次数超过了一半 一共n个数,而且保证有 n<=2000000 而且每个数<2^31-1 输入输出格式 输入格式: 第一…
P2393 yyy loves Maths II 题目背景 上次蒟蒻redbag可把yyy气坏了,yyy说他只是小学生,蒟蒻redbag这次不坑他了. 题目描述 redbag给了yyy很多个数,要yyy计算这些数的和.必须要快,redbag只给了yyy1秒的时间!!! 输入输出格式 输入格式: 一行,很多个数 输出格式: 一行,一个实数(四舍五入精确到5位小数),表示这些数的和. 输入输出样例 输入样例#1: 复制 1 输出样例#1: 复制 1.00000 说明 [数据规模] 对于100%的数据…
P2393 yyy loves Maths II 题目背景 上次蒟蒻redbag可把yyy气坏了,yyy说他只是小学生,蒟蒻redbag这次不坑他了. 题目描述 redbag给了yyy很多个数,要yyy计算这些数的和.必须要快,redbag只给了yyy1秒的时间!!! 输入输出格式 输入格式: 一行,很多个数 输出格式: 一行,一个实数(四舍五入精确到5位小数),表示这些数的和. 输入输出样例 输入样例#1: 复制 1 输出样例#1: 复制 1.00000 说明 [数据规模] 对于100%的数据…
题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居然也不会,所以只好找你 题目描述 他让redbag找众数他还特意表示,这个众数出现次数超过了一半一共n个数,而且保证有n<=2000000而且每个数<2^31-1 输入输出格式 输入格式: 第一行一个整数n第二行n个整数 输出格式: 一行,这个众数 输入输出样例 输入样例#1: 5 2 3 3 3 3 输出样例#1: 3 说明 时间限制 1s空间限制 3.5M…
Link: P2396 传送门 Solution: 一眼能看出$O(n*2^n)$的状压$dp$ 但此题是个卡常题,$n=23/24$的时候就别想过了 这题算是提供了一种对状压$dp$的优化思路吧 原来我们要用$n$的时间来查找当前有哪些位为1,然后从这些位来转移 但实际上可以通过树状数组中$lowbit$函数的方式用$popcount(i)$的复杂度来得到所有的1 此时总的复杂度降到了$O(\sum_{i=1}^{2^n-1} popcount(i))$,实际上就是$O(n*2^{n-1})$…
洛谷 P1580 yyy loves Easter_Egg I 题解: 队列+字符串 #include <cstdio> #include <string> #include <cstring> #include <iostream> #include <algorithm> using namespace std; ; ; char a[MAXN],b[MAXN],n1[MAXN],n2[MAXN]; int main() { gets(a);…
题目背景 Soha的出题效率着实让人大吃一惊.OI,数学,化学的题目都出好了,物理的题还没有一道.于是,Huntfire,absi2011,lanlan对soha进行轮番炸,准备炸到soha出来,不料,人群中冲出了个kkksc03…… 题目描述 yyy loves OI(Huntfire),yyy loves Maths(lanlan),yyy loves Chemistry(absi2011)对yyy loves Physics(soha)进行轮番炸,轰炸按照顺序进行,顺序为Huntfire,…
题目大意:很多人@一个人,如果那个人忍不住说话了,就轰炸成功,如果那个人没说话或者别的人没有@他或@很多个人,则轰炸失败.(具体见原题) 解题思路:字符串处理,好好用sscanf即可(细节见代码). C++ Code: #include<cstring> #include<algorithm> #include<cstdio> char s[1050],zha[1050],shuohua[1050],At[1050]; int q=1; int main(){ fget…
感觉很是妙啊……这题数次误入歧途...最开始想的二维dp,单调队列优化:无果,卒.于是没忍住看了下标签:暴力枚举?搜索?于是开始想记忆化搜索.以为会有什么很强的剪枝之类的:30分,卒.最后终于回到正道上:50 0000的数据,只可能有O(n) & O(nlogn)两种复杂度吧?在这样的思想+标签线段树的指引下,总算是走向了光明. 暴力,正解的开端.首先考虑最开始的二维dp,转移方程为:dp[i] = min(dp[k] + 1) (k ∈ 1 ~ i - 1) , 且 i ~ k + 1为合法区…
题目大意:给你一个实数x($0<x\leq 1$),要你求x/23的值(保留8位小数). 解题思路:此题用double读的精度是不够的,用long double直接读入也会WA,正确做法是“scanf("%18Lf",&x);”,按此方法即可保证精度. 时间复杂度$O(1)$ ~\(≧▽≦)/~ C++ Code: #include<cstdio> int main(){ long double d; scanf("%18Lf",&…
题目背景 yyy对某些数字有着情有独钟的喜爱,他叫他们为幸运数字;然而他作死太多,所以把自己讨厌的数字成为"厄运数字" 题目描述 一群同学在和yyy玩一个游戏 每次,他们会给yyy n张卡片,卡片上有数字,所有的数字都是"幸运数字",我们认为第i张卡片上数字是ai 每次yyy可以选择向前走ai步并且丢掉第i张卡片 当他手上没有卡片的时候他就赢了 但是呢,大家对"厄运数字"的位置布置下了陷阱,如果yyy停在这个格子上,那么他就输了 (注意:即使到了…
P2397 yyy loves Maths VI (mode) 题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居然也不会,所以只好找你 题目描述 udp2:第一题因为语言性质问题,比赛结束后将所有c/c++的程序的内存调为2.2mb后重测. 他让redbag找众数 他还特意表示,这个众数出现次数超过了一半 一共n个数,而且保证有 n<=2000000 而且每个数<2^31-1 输入输出格式 输入格式: 第一…
P2393 yyy loves Maths IIlong double比如保留5位小数*1000000都变成整数最后再/1000000避免精度误差scanf("%Lf",&x);printf("%.Lf",x); #include<iostream> #include<cstdio> #include<queue> #include<algorithm> #include<cmath> #inclu…
P2397 yyy loves Maths VI (mode) 神奇的摩尔投票法(大雾) 保证众数个数大于一半. 两两相消,剩下的那个必定是众数. 我们只要开2个变量,一个存个数,一个存值即可. (luogu的数据卡快读???) luogu P2397 code: #include<cstdio> using namespace std; int cnt,id,n,q; int main(){ scanf("%d",&n); ;i<=n;++i){ scanf…
洛谷题目传送门 贪心小水题. 把线段按左端点从小到大排序,限制点也是从小到大排序,然后一起扫一遍. 对于每一个限制点实时维护覆盖它的所有线段,如果超过限制,则贪心地把右端点最大的线段永远删去,不计入答案.显然这样做对后面的决策更有利. 以右端点为键值,需要资瓷动态插入,删除最小值.最大值,multiset就行了. 代码很短,常数应该比较大,但不知为何暂时混了个rk1. #include<bits/stdc++.h> #define R register int #define G if(++i…
题目背景 自动上次redbag用加法好好的刁难过了yyy同学以后,yyy十分愤怒.他还击给了redbag一题,但是这题他惊讶的发现自己居然也不会,所以只好找你 题目描述 [h1]udp2:第一题因为语言性质问题,比赛结束后将所有c/c++的程序的内存调为2.2mb后重测.[/h1] 他让redbag找众数 他还特意表示,这个众数出现次数超过了一半 一共n个数,而且保证有 n<=2000000 而且每个数<2^31-1 输入格式 第一行一个整数n 第二行n个整数 输出格式 一行,这个众数 输入输…
题目描述 他让redbag找众数 他还特意表示,这个众数出现次数超过了一半 一共n个数,而且保证有 n<=2000000 而且每个数<2^31-1 时间限制 1s 空间限制 3.5M(你没看错3.5M)(实际后来改成了5M) 题解: 一眼众数感觉很水,直接存下来,sort一下,然后统计连续出现次数 但是5M??? 发现,2000000的空间开不下, 但是可以开下一半?? 然后就先输入前1000000个.sort,记录出现次数最多的数,和它的出现次数. 再输入剩下的,sort,记录出现次数最多的…
P4882 lty loves 96! 题目背景 众所周知,\(lty\)非常喜欢\(96\)这两个数字(想歪的现在马上面壁去),更甚于复读(人本复)! 题目描述 由于爱屋及乌,因此,\(lty\)对于那些含有\(96\)的数也非常喜欢,而这里的含有不是一般的含有,而是具有以下性质的含有(三条都需要满足): 这个数为一个\(N\)位数,且没有前置零 这个数中至少要出现\(M\)次\(9\)和\(6\)(例:\(986996\)中出现了\(5\)次,\(9\)出现了\(3\)次,\(6\)出现了\…
题目描述 Koishi十分喜欢数论. 她的朋友Flandre为了检测她和数论是不是真爱,给了她一个问题. 已知 给定和个数,求对取模. 按照套路,呆萌的Koishi当然假装不会做了,于是她来向你请教这个问题,希望你能在秒内给她答案. 输入输出格式 输入格式: 第一行包含两个整数和,接下来一行个整数表示. 输出格式: 一个整数,表示答案 输入输出样例 输入样例#1: 3 5 1 2 4 5 0 输出样例#1: 44044 说明 表示若干个数的最小公倍数 对于10%的数据: 对于另外20%的数据:…
题目描述 Koishi喜欢线段. 她的条线段都能表示成数轴上的某个闭区间.Koishi喜欢在把所有线段都放在数轴上,然后数出某些点被多少线段覆盖了. Flandre看她和线段玩得很起开心,就抛给她一个问题: 数轴上有个点突然兴奋,如果自己被身上覆盖了超过条线段,这个点就会浑身难受然后把Koishi批判一番. Koishi十分善良,为了不让数轴上的点浑身难受,也为了让自己开心,她想在数轴上放入尽量多的线段. 按照套路,Koishi假装自己并不会做这道题,所以她就来求你帮忙.并承诺如果你解决了问题就…
题目描述 Koishi决定走出幻想乡成为数学大师! Flandre听说她数学学的很好,就给Koishi出了这样一道构造题: Task1:试判断能否构造并构造一个长度为的的排列,满足其个前缀和在模的意义下互不相同 Taks2:试判断能否构造并构造一个长度为的的排列,满足其个前缀积在模的意义下互不相同 按照套路,Koishi假装自己根本不会捉,就来找你帮忙辣. 输入输出格式 输入格式: 第一行两个整数和,分别表示Task类型和测试点内的数据组数. 接下来行,每行一个整数表示每组数据中的 输出格式:…
正解:贪心 解题报告: 传送门! 首先在学习贪心的入门题的时候我们就知道,当x=1的时候,也就是每条线段不能相交的时候的做法——就按右端点排序然后能选就选,也就是会议安排问题,原因显然?就你选右端点更靠左的线段显然不会更劣 然后现在考虑x!=1了怎么做 于是考虑类似的套路,依然是右端点排序能选就选,考虑什么时候不能选了?就加入现在新加入了一条线段,然后导致有个点被覆盖次数超过x了,那肯定就是要从覆盖了这个点的边中删去一条?然后就考虑删哪条?那就显然是把右端点最靠右的给删了,证明的话,因为我们是从…
这道题告诉我们推式子的时候头要够铁. 题意 问一个\(n\times m\)的棋盘,摆上\(n\times 2\)个中国象棋的炮使其两两不能攻击的方案数,对\(998244353\)取模. \((n\leq m\leq 2000)或(n\leq m\leq 100000且m-n\leq 10)\). 题解 怎么两个数据范围搞搞. 显然合法方案等价于每行每列炮的数量不超过\(2\),那么每一行就必定放\(2\)个炮了. 我们记\(f(n,m)\)为答案,考虑如何归约到规模更小的问题. 那么我们枚举…
正解:构造 解题报告: 传送门! 这题俩问嘛,就分成两个问题港QwQ 就按顺序趴,先港第一问QwQ 首先要发现,n在膜n意义下就是0嘛 那作为前缀和的话显然它就只能放在第一个 然后再想下,发现,如果n是奇数那1+...+n显然是n的倍数,就又是个膜意义下=0的,GG 偶数显然麻油关系咯QwQ 所以我们就可以先特判下,如果n是奇数直接GG辣(昂n==1要特判下吼QwQ 然后显然的是既然有解了就是一定能表示出所有的[0,n-1] 然后我们就这么想吼(以下表示都是在膜意义下的QwQ 1+n=1 3+(…
题目链接:https://www.luogu.org/problemnew/show/P2397 卡空间. 对于众数出现次数 > n/2 我们考虑rand. 每次正确的概率为1/2,五个测试点,全对的概率为1/32. 所以: #include <ctime> #include <cstdio> #include <cstdlib> using namespace std; int n, m; int main() { scanf("%d",&a…
Link: P2397 传送门 Solution: (1)在这里记录一个小小的黑科技:摩尔投票法 (线性时间复杂度,$O(1)$的空间复杂度求众数) 从数组的第一个元素开始,假定它代表的群体的人数是最多的 设置一个计数器,在遍历时遇到不同于这个群体的人时就将计数器-1,遇到同个群体的人时就+1 只要在计数器归0时就重新假定当前元素代表的群体为人数最多的群体再继续遍历 那么到了最后,计数器记录的那个群体必定是人最多的那个群体 其实就是抵消的思想嘛,记录当前有可能为众数的数,思想还是不错的    …