首页 > TAG信息列表 > Ans

LeetCode 128 Longest Consecutive Sequence

Given an unsorted array of integers nums, return the length of the longest consecutive elements sequence. You must write an algorithm that runs in \(O(n)\) time. Solution 既然不能排序,那就用 \(set\) 将元素全部存进去。从所有可能序列中的最小开始遍历,逐次递增,然后

搜索插入位置

搜索插入位置 一、题目描述 给定一个有序数组。需要插入一个元素。返回插入索引。 请必须使用时间复杂度为 O(log n) 的算法。 实例 输入: nums = [1,3,5,6], target = 5 输出: 2 输入: nums = [1,3,5,6], target = 2 输出: 1 输入: nums = [1,3,5,6], target = 7 输出: 4 二、

CSP-S开小灶4

A. 山洞 暴力枚举 \(nm\) 暴力 然后发现枚举的步长每 \(n\) 个一循环 搞出从\(0, 0\) 走 \(n\) 步的数组 进而发现从 \(0\) 到 \(i\) 和从 \(x\) 到 \((x + i) \% n\) 等价 于是可以\(n^2\) 转移出走 \(n + n\) 步,然后发现可以倍增了 其实这本质上是个循环矩阵 我太菜了,今天才知道

做题记录整理栈6 T274673 黄校长的大house(有数据)(2022/9/15)

emmm 为了做好这个最大刷墙的模板,甚至专门搞了一个题目 属于是为了吃老婆饼专门找一个老婆了 这题我们可以枚举每个长度的墙面,对于第i个墙面,我们找左边第一个比它小的墙面,序号为x,右边第一个比他矮的墙面,序号为y,那么此时这个墙面会被覆盖到的最大的矩形就是[y-1,x+1]这个区间,长度为

2022HDU多校第十场 - 1002 Photos

DP+ 矩阵快速幂优化转移 Problem - 7245 (hdu.edu.cn) #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int, int> PII; const int mod = 998244353; struct matrix { int a[2][2]; matrix() { memset(a, 0, size

树的重量

树的重量 题目描述 树可以用来表示物种之间的进化关系。一棵“进化树”是一个带边权的树,其叶节点表示一个物种,两个叶节点之间的距离表示两个物种的差异。现在,一个重要的问题是,根据物种之间的距离,重构相应的“进化树”。 令N={1..n},用一个N上的矩阵M来定义树T。其中,矩阵M满足:对于任

矩阵游戏

矩阵游戏 是一道氵题; 正好拿来练矩阵乘法; 题目传送门 https://www.luogu.com.cn/problem/P1397 显然老老实实的递推挂了; 那么 很容易想到矩阵加速 如何从F(1,1)转换到F(n,m) 每一列进行m-1次乘a加b的操作A 每一行进行n-1次乘c加d的操作B 可得 F(i,n)=F(i,1)* ( A^(m-1)); (^表示次方) 同理 每

子段

题目 求最大子段和 代码 //暴力 int mis(int a[], const int N){ int ans = -0x3f3f3f3f; for(int i = 0; i < N; i++){ int sum = 0; for(int j = i; j < N; j++){ sum += a[j]; if(sum > ans)ans = sum; } } return ans; } //贪心 int mis(int num[], cons

acwing1944.记录保存

acwing.1944记录保存 原题链接:https://www.acwing.com/problem/content/1946/ 思路 将三头牛放到一个vector里,然后用哈希表来记录出现的次数 代码 #include<iostream> #include<cstring> #include<algorithm> #include<map> #include<vector> using namespace std; int main()

高精度斐波那契快读代码(解决第⑩篇文章问题

相关链接:https://www.cnblogs.com/TFLSc1908lzs/p/13531804.html 满分代码: 1 #include <bits/stdc++.h> 2 using namespace std; 3 int n,tot; 4 int ans[105][1000005]; 5 void figure(int x){ 6 for(int i=3;i<=x;i++){ 7 for(int j=1;j<=tot;j++

NC21467 [NOIP2018]货币系统

题目 原题地址:[NOIP2018]货币系统 题目编号:NC21467 题目类型:完全背包 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 524288K,其他语言1048576K 1.题目大意 给出一些货币,问简化后还剩多少类型,即去除可以由其他面额表示的货币 2.题目分析 转移方程:f[j]+=f[j-a[i]] 面额为j的货币

POJ 1995 Raising Modulo Numbers 【Solution】(快速幂)

[原题传送门](http://poj.org/problem?id=1995) 题目大意 先给定n组数据, 每组先给定m为模数, 再给定h组号码ai与bi, 输出每组数据处理的结果 题解 a^b的大小把握不住,从以下几点出发 1.考虑到求模公式:(ab)%p=(a%p)(b%p)%p 证明如下: 令a=k1p+r1,b=k2p+r2; 则(ab)%p=(k1k2pp+k1r2p+k2r1p+

博弈论 _ SG函数

定义 SG函数是指:在有向图中,对于每个节点x,设从 \(x\) 出发共有\(k\)条有向边(直接相连的边),分别达到节点\(y_1,y_2……y_k\), 定义\(SG(x)\)为\(x\)的后继节点的\(SG\)值构成的集合执行\(mex()\)运算后的值 \(mex():\)设集合S是一个非负整数集合,mex(S)就是求不属于S的最小非负整数。

SDUT 2022 Autumn Team Contest 7th

1.J题:给你T组数据,每一组数据给你一个区间,让你求这个区间的范围,区间的起始时间和终止时间可能被包含或重复     思路:思路的话,就是直接把给定的两个区间的之间的数包括端点存到vector去重,然后直接输出个数即可,或者直接存到set里直接系统去重也可 #include <iostream> #include

【ZJSU - 大红大紫:ACM - Template】比赛用模板06:多项式与几何

多项式与几何 快速数论变换 \(\tt NTT\) \(\mathcal O(N * logN)\) 。 namespace poly{ const int M = 998244353,G = 3,Gi = 332748118; const int N = 5000000; int n,m; int res,ans[5000005]; int limit = 1; int L; int RR[5000005]; LL a[N

# Educational Codeforces Round 135 (Rated for Div. 2) A-E

Educational Codeforces Round 135 (Rated for Div. 2) 传送门 A 题意: 给定n个颜色的各自的数量,每次可以使用两个不同的颜料,问最后可能剩下哪种颜料,输出任意一个即可。 分析:直接输出个数最多的那个颜料即可 void solve(){ int n;cin>>n; vector<int>a(n+1); rep(i,1,n

Educational Codeforces Round 135 (Rated for Div. 2) A-D

A. Colored Balls: Revisited 如果所有数加起来都没有最大值大,那最后剩下来的就是最大值 否则最后剩下来的可以是任何一个数 //#define int ll const int N = 2e5+10; int n,m; int a[N]; void solve() { cin>>n; int mx = 0,sum = 0,id; fo(i,1,n) { ci

P3244[HNOI2015]落忆枫音(计数dp + 组合数学 + DAG)

P3244 [HNOI2015]落忆枫音 题目传送门 题目大意 : 略 题目分析 : [\(1\)]:我们发现原图是一个 \(DAG\),那么我们很容易知道,若在一个 \(DAG\) 中找一棵生成树,那么总方案数为 \(\prod_{i = 1}^n deg_i\),因为对于每个点我们都有 \(deg_i\) 那么多种方案,又因为他是一个 \(DAG\) 所以根

多项式全(?)家桶

贴个板子,以备复习 点击查看代码 #include<cstdio> #include<cstdlib> #include<algorithm> #include<unordered_map> #include<cmath> #define mod 998244353 #define maxn 400010 #define ll long long #define it unordered_map<ll,int>::iterator

ABC264 G - String Fair

DP + 最短路 + 哈希 G - String Fair (atcoder.jp) 题意 给若干个只包含小写字母的长度<=3 的字符串 \(T_i\),每个字符串有权值 构造一个非空字符串 S,若 S 中包含上述子串,则加上这个子串的权值,求 S 的最大权值和 思路 由于 \(T_i\) 的长度不超过 3,所以对于当前的 S,若向后面再加一个

CF1068B LCM

题意: 给定b,求lcm(a,b)/a 有多少种,1<=a<=b<=1e11 解: 首先:lcm(a,b)/a=a*b/(gcd(a,b)*a)=b/gcd(a,b) 其次,若 b%a!=0,则b/gcd(a,b)=b/1=b,a不贡献 那么 问题就转化为了b的因子有多少种。 首先,O(n)的试除法是不能通过题目的 那么我们是否可以转化为O(sqrt(n))的试除法呢,也就是只求b的

"蔚来杯"2022牛客暑期多校训练营9

A Car Show 题意: 给定一个数组,请找到有多个区间 [L,R] 满足 1 到 m 的数都出现过。 分析:直接双指针就好 #include<bits/stdc++.h> using namespace std; long long n,m,s[100100],v[100100],cnt,ans; int main() { cin>>n>>m; for(int i=1;i<=n;i++) cin>>s[i]; for(int l=1

CCPC2020网络预选赛(vp)

比赛链接: https://vjudge.net/contest/513012 C - Express Mail Taking 题意: 有 \(n\) 个箱子,分别在 \(a_1, a_2, ..., a_n\) 的位置,钥匙在 \(k\) 的位置,每去打开一个箱子前都要去拿一次钥匙,刚开始在 1 的位置,问最少花几步打开所有箱子后回到 1。 思路: 位置比 \(k\) 远的箱子所花

转圈游戏

https://www.luogu.com.cn/problem/P1965 ans=(m*1ek+x)%n 求1ek用快速幂求,求解的过程每次乘法运算都需要对n取模 #include <bits/stdc++.h> using namespace std; #define N 1e5 #define INF 2e9 #define MAX 10000000 #define ll long long ll n, m, k, x; ll quick_pow(ll a

Rock and Lever

题意: 找出数列中满足,ai & aj >= ai ^ aj 的 (i,j)的数量,i<j 由样例发现,当ai 与 aj 的最高位一样时,不等式就成立 故,记录数的最高位的数目,假设一个最高位的数目为x,则能选,C(n,2)种 得到一个数的二进制的最高位,不断右移即可。 处理组合数即可。又:C(n,2)=(n/2)*C(n-1,1)=n*(n-1)/2.