考完试再来写心得吧… //#pragma GCC optimize(2) #include <bits/stdc++.h> #define sync ios::sync_with_stdio(false) #define MOD 1000000007 #define debug freopen("D:\\Learn C++\\w.txt", "w", stdout) #define maxN 10000004 using namespace s
这里是题面 先放一下做这道题可能要用到的几个性质 : _ 循环节一定是总长度的约数 _ 若字符串s有一个循环节k,则k * i也是s的循环节 _n是[l,r]这一段的循环节 的充要条件是 [l,r-n]和[l+n,r]相同(可以感性理解一下em) 知道这几点之后,就可以做这道题啦!୧(๑•̀⌄•́๑)૭ 假设
树树 solution 观察发现首先染一个连向叶子结点的点是最优的。 考虑一下这个点,如果它连向了两个叶子,那么这个点选完先手必赢。 如果它只连向一个叶子,后手一定会选这个叶子,那么就相当于在原图中删掉了这 两个点。 那么我们的做法就出来了。 先染色度数为1的点,把相邻的点删掉。 如果
Day1-T1 格雷码 格雷码是一种特殊的 \(n\) 位二进制串排列法,要求相邻的两个二进制串恰好有一位不同,环状相邻。 生成方法: \(1\) 位格雷码由两个 \(1\) 位的二进制串组成,顺序为 \(0,1\) \(n+1\) 位的格雷码的前 \(2^n\) 个串,是由 \(n\) 位格雷码顺序排列再加前缀 0 组成。 后 \(2^n
T1 打表找规律发现当2的n次方-1时f(n)=n; #include<iostream> #include<cstdio> #define ull unsigned long long using namespace std; const int N=1e7+7; ull l,r,ans; ull b[100]; int main(){ freopen("dynamic.in","r",stdin); freopen("dyn
这里假设一个字符串的前缀hash值记为 h[i],我们用的进制是base进制,那么有 h[i] = h[i-1]*base+s[i],假设 p[i] 代表 base 的 i 进制,那么可以 O(1) 地得到一个子串的 hash 值。 计算s[l]到s[r]的哈希值 typedef unsigned long long ull; ull get_hash(int l,int r){ retur
小 A 有 m 个格子从左到右排开,同时有 n 种球,编号 1⋯n ,每个格子可以(且必须)放一种球。 当 对于每一个格子 i, i 右边所有格子中球的编号都不小于 i 中球的编号 时,小 A 会认为这种放球方案是合理的。 请你求出有多少种会让小 A 认为合理的方案,方案数对 998244353998244
7-1 判断素数 (10分) 本题的目标很简单,就是判断一个给定的正整数是否素数。 输入格式: 输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于231的需要判断的正整数。 输出格式: 对每个需要判断的正整数,如果它是素数,则在一行中输出Yes,否则输出No。 输入样例
反思 一定要看数据范围,参考,利用他估计复杂度,也要注意是否为负,是否取0的细节 预处理有时挺香的 哈希有时挺香的 题目简述 T1 置换 给出的代码部分最好直接复制粘贴,要不抄错爆零两行泪qaq(有一个模数是\(99824353\),只有一个\(4\),还好这次是复制的 然后暴力一位一位算可以拿到90分
https://ac.nowcoder.com/acm/problem/15253太简单了,直接上代码吧! #include <iostream> #include <cstring> #include <cmath> #include <stdio.h> #include <cstdlib> #include <algorithm> #include <vector> #include <set> #inc
LINK:小V的序列 考试的时候 没想到正解 于是自闭. 题意很简单 就是 给出一个序列a 每次询问一个x 问序列中是否存在y 使得x^y的二进制位位1的个数<=3. 容易想到 暴力枚举。 第一个想法是在trie树上乱跳 但是可以证明 和直接暴力无异. 暴力是 mlog^3的。 可以两头枚举 枚举n的生成一
先贴代码,解析待填坑。 #include<cstdio> #include<algorithm> #define int long long #define ll long long #define ld long double #define ull unsigned long long using namespace std; int n,a[100005],b[100005]; int exgcd(int a,int b,int &x,int &y) { i
对于会溢出的乘法,除了__int128之外还有几个方法 1.类似于快速幂的思想,只不过把加法换成乘法, 快速幂:\(res=\Pi p^i*[a_i==1]\),将连乘改成连加 快速乘:\(res=\Sigma p^i*[a_i==1]\),时间复杂度O(log) 2.利用long double来在过程中替代long long 再在接下来的计算中强制转换类型 ll
问题描述 栋栋正在和同学们玩一个数字游戏。 游戏的规则是这样的:栋栋和同学们一共n个人围坐在一圈。栋栋首先说出数字1。接下来,坐在栋栋左手边的同学要说下一个数字2。再下面的一个同学要从上一个同学说的数字往下数两个数说出来,也就是说4。下一个同学要往下数三个数,说7。
目录简介第一题第二题第三题第四题第五题第六题第七题第八题第九题第十题 简介 这就是用来记录我对于《信息学奥赛一本通 · 提高篇》一书中的习题的刷题记录以及学习笔记。 一般分专题来写(全部写一起可能要加载很久...),比如本章就是用来记录哈希的。 再插一句:Loj 真是个不错的 OJ,
秒出思路,按理来说应该也能秒 A 的简单题。 第一次交没开滚动数组 MLE,第二次交数组开小 60pts,第三次才 A 掉。 果然还是我水平不足呀。 #include <cstdio> #include <cstring> inline int min(const int& a, const int& b){ return a < b ? a : b; } typedef unsigned long l
Description 有三个好朋友喜欢在一起玩游戏,A君写下一个字符串S,B君将其复制一遍得到T,C君在T的任意位置(包括首尾)插入一个字符得到U.现在你得到了U,请你找出S. Input 第一行一个数N,表示U的长度. 第二行一个字符串U,保证U由大写字母组成 Output 输出一行,若S不存在,输出"NOT POS
题目 这是一道比较裸的二维hash题目,题解出自进阶书。 思路就是列与列之间相乘p[1],行与行之间相乘p[n],其实挺好理解的,就是你把每一行的数都按顺序放在第一行后面求得的hash值就是这些,然后离线操作。 #include<bits/stdc++.h> #define ll long long #define ull unsigned long
ull quick_mul(ull a, ull b, ull r){ ull ans = 0; while(b){ if(b&1) ans = (ans+a)%r; a = (a+a)%r; b>>=1; } return ans; } 点赞 收藏 分享 文章举报 jhckii 发布了19 篇原创
题目描述 PIPI叒来考察大家字符串处理的能力啦。 给定一个字符串S,以及q次询问。 每次询问给出一个字符串T,你需要回答,对于T中的所有子串,有几个子串同S循环同构。 提示:对于一个字符串a,每次把a的第一个字符移动到最后一个,如果操作若干次后能够得到字符串b,则a和b循环同构。 所有
一般的字符串哈希:我们设置一个进制\(x\),把这个串\(s\)看做一个\(x\)进制数。 \(Num=s1*x^0+s2*x^1+s3*x^2+s4*x^3+…\) 然后对一个比较大的质数取模。 这种\(hash\)方法在随机情况下冲突的概率比较小,除非对着哈希构造方法卡。 模数一般选用一个较大的质数来减小冲突的概率。 但在
Problem J. Wiki with 35Input file: standard input Time limit: 1 secondOutput file: standard output Memory limit: 256 megabytes从前,有一对夫妻生了五胞胎,这对夫妻为了让这五兄弟比较容易让老师记得,分别给他们取名"1"、"3"、 "5"、 "7"、 "9"。而"3"
题目大意 给出 \(n\) 个一位数,求出这些一位数组成的所有不同整数的和。 分析 考虑一个数对某一位的贡献,为这个数乘以其他数的全排列数,问题转化为可重复元素的全排列。 引理 \(n\) 个元素,可分为 \(m\) 组,其中本组元素全部相同,不同组元素不同,且第 \(i\) 组有 \(p_i\) 个,则总的排列数
CSP-S 2019 D1T1 考场上第一遍读题的时候感觉不是很一眼……不是很符合D1T1的气质 之前完全没听说过格雷码是什么玩意,还是我太菜了 仔细读题后发现应该是有规律可循的 赛后据说有$O(1)$算法,反正我不会 ------------ 思路分析 写出一些小位数的格雷码全排列,再根据格雷码的生成算法,
题目链接:https://www.luogu.org/problem/P5657 话说这道题怎么是道橙题啊。 基本思路 因为n位格雷码的前2n-1位就是n-1位格雷码前面加了一位‘0’,所以可以把它们近似的看作和n-1位格雷码相同 寻找第k位格雷码是通过哪一个格雷码得出的,以4位格雷码为例,因为第10号格雷码是由5号