摘要: #include<bits/stdc++.h> using namespace std; int t; const int N = 2e5 + 10; int n,m,ans,pos[N],cnt; vector<int> g[N]; vector<bitset<N> > h; void solve 阅读全文
posted @ 2025-04-10 22:38 孤枕 阅读(1) 评论(0) 推荐(0) 编辑
摘要: //首先需要注意到,如果我们对当前序列中每个数都进行一次操作,那么实际上是令整个序列每个数都减一 //于是假设序列k,k,...,k是可以由当前序列转化过去的,那么k-1,k-1,...,k-1也是可以得到的,乃至小于等于k的每个数都是可以作为最终答案的 //于是我们发现答案具有单调性,即有答案的情 阅读全文
posted @ 2025-04-10 12:44 孤枕 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 传送门 题目大意:求斐波那契数列中第n个能整除k的位置 其实找几个数手推一下就会发现貌似是存在每种周期关系的。 这样写看似会无限重复下去,但是实际上是能通过的。根据皮萨诺周期,实际的枚举次数不会超过6k(至于证明,我也不会啊QAQ 放一个FIB数列最大公约数定理:gcd(F(m),F(n))=F(g 阅读全文
posted @ 2025-03-26 20:01 孤枕 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 1001 数列计数 一个结论:Cnm为奇数当且仅当n & k==k 于是就可以分类讨论一下,当li大于等于ai,此时[0,ai]全都可以取到,假定二进制下aik个1,方案数就是2k 否则,我们 阅读全文
posted @ 2025-03-22 16:43 孤枕 阅读(318) 评论(0) 推荐(1) 编辑
摘要: //首先让a[i] = i,如果把a[1]和a[2]调换,发现到奇数位置时就会是它本身,于是n为奇数的情况直接出来了 //而如果n为偶数,例如10,我们直接让111放在最后或,只要保证前面几个数全都有最高位的1,那么最后的答案肯定是最大的。 //但是n为偶数出现了特殊情况,例如8,此时如果还把111 阅读全文
posted @ 2025-03-20 21:07 孤枕 阅读(8) 评论(0) 推荐(0) 编辑
摘要: 记录一个trick: i=1n={n,nmod4=01,nmod4=1n+1,nmod4=20,nmod4=3 那这道题 阅读全文
posted @ 2025-03-20 14:44 孤枕 阅读(4) 评论(0) 推荐(0) 编辑
摘要: //记录一下思路历程:首先是毫无头绪 //然后想了很久注意到我可以询问01的个数和10的个数,那么这个字符串只能是010101...或者101010...这样的字符串,通过填充1到1旁边或者填充0到0旁边得到,如果01和10的数量不相同,那么01多肯定是0开头,10多肯定是1开头 //然后想到可以看 阅读全文
posted @ 2025-03-19 21:45 孤枕 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 传送门 首先肯定不能暴力建边然后求总数,会T爆 首先注意到,如果当前a[i]有因子k,k>1,那么对于以后出现的数a[j],如果也有因子k,那么肯定就能够从a[i]a[j],于是这启示我们只需要从前往后遍历的同时,记录下各个因子对应的方案 阅读全文
posted @ 2025-03-10 21:47 孤枕 阅读(2) 评论(0) 推荐(0) 编辑
摘要: ```cpp #include<bits/stdc++.h> using namespace std; long long t; const long long N = 2e5 + 10; long long l,r; void solve() { cin >> l >> r; for(long l 阅读全文
posted @ 2025-03-06 21:14 孤枕 阅读(7) 评论(0) 推荐(0) 编辑
摘要: ```cpp #include<bits/stdc++.h> using namespace std; long long t; const long long N = 2e5 + 10; long long n,m,q,tot; long long s[N],c[N],p[N]; struct n 阅读全文
posted @ 2025-03-01 10:44 孤枕 阅读(3) 评论(0) 推荐(0) 编辑
点击右上角即可分享
微信分享提示