南昌理工学院ACM集训队
文章平均质量分 52
ziyou_zi
这个作者很懒,什么都没留下…
展开
-
统计美丽子数组数目
1原创 2023-03-12 18:43:57 · 95 阅读 · 0 评论 -
2021-08-15 cells (LGV引理+多项式卷积)
说得挺详细的 lgv引理,后面用 线性代数知识 转化 最后fft卷一下 #include <bits/stdc++.h> #define o(x) cout << (x) << endl; using namespace std; typedef long long LL; const int N = 1 << 21, M = 1e6 + 1, mo = 998244353; const double PI = acos(-1); int n, m;..原创 2021-08-15 15:34:23 · 153 阅读 · 0 评论 -
2021-08-01 多项式乘法(fft)
多项式乘法 题目1 题意: 求一个最小模数 mod ,使得 n 个数 a1,a2,a3,...,ana_1, a_2, a_3, ...,a_na1,a2,a3,...,an 模 mod 都不相等 思路: a mod m == b mod m <==> m | abs(a - b) 所以求出 n 个数中 两两的差值 , 枚举模数 用筛法思想去判断是否符合要求(不能是任意差值的约数) 用 fft 去快速计算 n 个数两两的所有差值 #include <bits/stdc++.h>原创 2021-08-01 12:47:24 · 96 阅读 · 0 评论 -
2021-07-23 I love permutation
I love permutation 题意:给你一个 a, p(大于a的奇质数) bx=a∗x(modp)b_x = a * x (mod p)bx=a∗x(modp) x [1, p - 1] 求逆序对数量是奇数还是偶数 思路:(题解)枚举样例容易看出数组 b 是 1 ~ p - 1 的全排列 令这个排列为p,排列的第 i 个数为 p(i) ,排列的逆序对数为 n(p ) sgn(p)=(−1)n(p)sgn(p) = (-1) ^ {n(p)}sgn(p)=(−1)n(p) 判断 sgn(p原创 2021-07-23 18:01:16 · 90 阅读 · 0 评论 -
2021-07-18 TOYS
TOYS toys 题意: 有一个矩形盒子,放入n块按照x轴排序的不相交的隔板,这样就将矩形盒子分成了n+1块区域。现在将m个玩具放入这个矩形盒子,统计每个区域的玩具个数。 思路: 利用叉乘的性质判断在当前隔板的左边还是右边,由于每个玩具在隔板的左边或右边具有单调性,所以可以二分优化 ac代码: 枚举+二分O(mlogn) #include <iostream> #include <stdio.h> #include <string.h> #include原创 2021-07-18 09:17:24 · 190 阅读 · 0 评论 -
概率 & 期望 入门题
概率&期望 基础题 1 1 题意: 你在一个迷宫里,面前有n扇们,每个门有一个数字k; 如果k为正数,则通过这扇门,走k分钟就能出去, 如果为负数,则通过这扇门走-k的分钟回到迷宫; 走每扇门概率一样.问走出迷宫所需时间的期望值; 思路: 先列式子:分正负二种情况 E(x)=∑i=1k11.0/n∗abs(ai)+∑i=1k21.0/n∗(abs(bi)+E(x))E(x) = \sum_{i=1}^{k_1}1.0/n * abs({a_i}) + \sum_{i=1}^{k_2}1.0/n原创 2021-07-10 17:56:20 · 215 阅读 · 0 评论 -
蓝桥杯 12届 补题
原博客 试题 C: 直线* 本题总分:10 分 【问题描述】 在平面直角坐标系中,两点可以确定一条直线。如果有多点在一条直线上, 那么这些点中任意两点确定的直线是同一条。 给定平面上 2 × 3 个整点 {(x, y)|0 ≤ x < 2, 0 ≤ y < 3, x ∈ Z, y ∈ Z},即横坐标 是 0 到 1 (包含 0 和 1) 之间的整数、纵坐标是 0 到 2 (包含 0 和 2) 之间的整数 的点。这些点一共确定了 11 条不同的直线。 给定平面上 20 × 21 个整点 {(x,原创 2021-04-19 11:50:59 · 63 阅读 · 0 评论 -
2020牛客国庆集训派对day3 Leftbest
思路 将数据存在容器vector中(方便插入排序) 利用函数lower_bound()二分快速查找应该插入的位置插入进行排序及大于当前数的最小数进行求和。 T了几发 一开始用的for()查找应该插入的位置,和sort()排序 第一次用函数lower_bound() wa了几发 因为可能有相等的数,而lower_bound()是二分查找>=的数 #include<bits/stdc++.h> using namespace std; #define ll long long inline l原创 2020-10-03 16:34:26 · 98 阅读 · 0 评论 -
中国剩余定理
中国剩余定理 模板 #define LL long long const int maxn = 100000 + 10; LL a[maxn],m[maxn],n=3;//a[]存余数,m[]存除数,n个数 LL ex_gcd(LL a,LL b,LL &x,LL &y){//拓展欧几里得 if(b==0){x = 1;y = 0;return a;} LL ans = ex_gcd(b,a%b,x,y); LL temp = x; x = y; y原创 2020-09-30 18:18:51 · 58 阅读 · 0 评论 -
hdu 2197
hdu 2197 度为n的01串的总数为 2^n 。 举例子找规律 求本原串,将01 0101串的总数 减 非本原串数。 而非本原串可以由本原串得到。 n的非本原串 等于 n的因子(不包过它本身)的本原串的和 f [ n ] = 2^n − ∑ ( f [ i ] ) − 2 其中i是n的大于等于2的因子。 #include <queue> #include <cstdlib> #include <cmath> #include <cstdio> #inc原创 2020-09-28 22:26:57 · 78 阅读 · 0 评论 -
蓝桥杯 历届试题 带分数
带分数【全排列】 n=a+b/c 1,a<n 2,b>c 3,b%c==0 #include <queue> #include <cstdlib> #include <cmath> #include <cstdio> #include <string> #include <cstring> #include <iostream> #include <algorithm> using namespace原创 2020-09-23 19:11:19 · 134 阅读 · 0 评论 -
HDU 1582 AC Again
HDU 1582 AC Again 图小深搜 填充法 #include <queue> #include <cstdlib> #include <cmath> #include <cstdio> #include <string> #include <cstring> #include <iostream> #include <algorithm> using namespace std; char s[55][原创 2020-09-21 14:56:39 · 71 阅读 · 0 评论 -
合理方案数
合理方案数 Description L镇有n个村庄编号为0~n-1,为了交通方便村庄之间需要建设道路,任意两个村庄v1与v2之间建设道路的花费为v1|v2( | 符号为2进制按位或),现在需要使用最小花费使得所有村庄全部联通,请你输出所有可行的方案数(方案数可能很大,你只需输出对10^9+7取模的结果) Input 输入一个数n,为村庄的个数(2<n<5000) Output 输出所有可行的方案数(方案数可能很大,你只需输出对10^9+7取模的结果) Sample Input 1 7 Sampl原创 2020-09-10 23:30:27 · 128 阅读 · 0 评论 -
糖豆人吃糖豆串【简单dp】
糖豆人吃糖豆串 Description 在糖豆世界,所有东西都是能吃的,包括糖豆人自己,好了,你知道了这些并没什么用。 有一个糖豆人,它手里有n个糖豆,每个糖豆都有一个甜度,而且它有一个奇怪的味蕾,每吃完一个糖豆后,它的味蕾感就会加1,它吃一个糖豆获得的甜度为 糖豆的甜度*味蕾感,如今它想把所有的糖豆按顺序串起来做成一个糖豆串,每次只能吃左边的第一个或者吃右边的第一个,直到全部吃完,请问它最多能得到多少甜度。 Input 只有两行输入,第一行包含2个正整数 糖豆数量n,初始味蕾感q. 第二行包含n个正整数,原创 2020-09-10 23:29:02 · 252 阅读 · 0 评论 -
小C的询问
小C的询问 Description 小K魔导师得到了一个序列,这个序列有n个数。他困惑了,小C询问了它q个问题,他都回答不上来,现在他来请教你。对于每一个询问都由一组[L, R]组成,问题是要回答这个区间所有数的和,所有数的与,所有数的或。聪明的你一定能帮助小K回答这些问题。 Input 输入第一行为一个T,代表有T组数据,每组数据第一行为一个n,第二行为n个整数。第三行为一个Q,代表有Q个询问,每个询问都由一组[L, R]组成。 (1 <= T <= 10, 1 <= L <= R原创 2020-09-10 23:25:25 · 112 阅读 · 0 评论 -
小K的矩阵
小K的矩阵 Description 小K得到了一个N * N的矩阵。这个矩阵最外圈都是1,每往里走一圈值会加1。小K想知道这个矩阵里所有数的和是多少(答案对1e9 + 7取模)。可以结合下面图片理解矩阵: Input 输入第一行为一个T,代表测试样例组数,每组测试样例一个n,表示n * n的矩阵大小。 (1 <= T <= 100000,1 <= n <= 100000000) Output 输出T行答案,每行答案一个整数,表示n * n矩阵内所有数的和模1e9 + 7的结果。原创 2020-09-09 18:32:48 · 123 阅读 · 0 评论 -
hdu2709
hdu2709 思路 奇数时dp[i]=dp[i-1] 偶数时dp[i]=dp[i-2]+dp[i/2] #include <queue> #include <cstdlib> #include <cmath> #include <cstdio> #include <string> #include <cstring> #include <iostream> #include <algorithm> using原创 2020-08-29 16:07:12 · 88 阅读 · 0 评论 -
hdu4334
hdu4334 题意: 给你5个数组,每个数组里有相同数量的元素,让你判断是否能在每个数组中选取1个元素使5个数相加为0 思路 把5个数组合并成3个(1,2,2),再进行排序贪心求解 事实上考虑如下问题,快速求解序列A,序列B中,是否有Ai+Bj=x ,记得是某知名公司的一道面试题吧,是两个指针的应用,将A,B升序排列,初试 i 指针指向A[1] ,j 指针指向 B[b_size] ,比较Ai + Bj 与 x 的大小。 若A[i]+B[j] < x , i 指针右移 ; 若 A[i]+B[j]>原创 2020-08-29 12:44:46 · 130 阅读 · 0 评论 -
HDU 1572
HDU 1572(下沙小面的(2)) 题意: 给出给出每两个站点间的距离,从0站点出发,给出k个人想要到达的站,问把k个人都送到最短路程是多少 思路 k个人的目的站点的全排列就是车的所有路线 采用暴搜求全排列,所有情况比较求最短路程 ,也可以用STL里全排列直接暴力求解 #include <queue>//求k位乘客目的地的全排列的路程最小的 #include <cstdlib> #include <cmath> #include <cstdio> #inc原创 2020-08-28 16:25:34 · 103 阅读 · 0 评论 -
HDU - 1571 队列
HDU - 1571 【队列】 题意 中文不需要太多解释 规则 1,如果本来就在这个地点而且还要去这个地点,就不送了。 2,最多接纳7个乘客。 3,每次送人的时候,送最早上车的人。 4,如果到达一个地点,车上还有人拥有相同目的地的人会一起下车。 5,如果车上没有乘客却又GO指令,则忽略该指令 思路 用队列模拟情况 #include <queue> #include <cstdlib> #include <cmath> #include <cstdio> #in原创 2020-08-26 17:12:51 · 128 阅读 · 0 评论 -
Visible Trees
Visible Trees 原题链接 数论:容斥原理 题意: 给定一个 m * n 的方格,左下角的点为(1,1),右上角的点(n,m),然后每个方格都是一棵树,然后一个人站在(0,0)点,往森林里看,当两棵树在一条线上的时候,它只能看到最前面的那个点,后面的树就不计了,计算能够看到多少颗树。 思路: 先筛选法求出所有素因子,再根据容斥原理求每一行的互质点的个数,最后求和。 #include <queue> #include <cstdlib> #include <cmath&原创 2020-08-23 10:33:35 · 129 阅读 · 0 评论 -
hdu 6860 Fluctuation Limit
hdu 6860 Fluctuation Limit —南昌理工学院ACM集训队 原题链接 题意 给你n个范围[li,ri]和一个整数k,要求构建一个长度为n的数组ai,要求保证ai >= li && ai <= ri,并且保证相邻两个ai之间的差值的绝对值不大于k。若可以,那么输出YES并输出他的价格序列;否则出NO。 思路 根据限制条件一步步缩小ai的范围,如果第一个数字的范围是[l1,r1],那么第二个数字选择的范围就是[l1-k,r1+k]与[l2,r2]的交集。由于是相原创 2020-08-15 16:01:25 · 129 阅读 · 0 评论 -
牛牛的木板&&牛牛的字符反转
牛牛的木板 原题链接 题意: 一段长n的序列,由0/1组成。可把m个0改1,求序列中最大连续1的个数。 思路: 尺取法(双指针法) 设置一对指针l, r。最开始都指向第一个元素。 l,r是区间左右端点,r指针先不断往右遍历, 当区间内0的个数超过m时,l指针向右遍历,要跳过一个0,(维持一个区间内改了m个0的状态) 其间不断用区间大小更新ans最大值 class Solution { public: /** * * @param n int整型 * @param m原创 2020-08-08 17:28:25 · 172 阅读 · 0 评论