牛客之旅
随便玩哇
开学了8
go on
展开
-
递归实现指数型枚举
#include <bits/stdc++.h>using namespace std;int n;void dfs(int u, int state){ if(u==n) { for(int i=0;i<n;i++) if(state>>i&1) // 第i位是1吗 cout << i + 1 << ' '; // 从1开始 cout << endl; return; } dfs(原创 2021-09-23 10:26:41 · 50 阅读 · 0 评论 -
拓扑排序+小根堆
题目链接#include<iostream>#include<cstdio>#include<string>#include<ctime>#include<cmath>#include<cstring>#include<algorithm>#include<stack>#include<climits>#include<queue>#include<map>原创 2021-09-11 11:45:35 · 131 阅读 · 0 评论 -
dfs跑指数型遍历 哥三好
#include<iostream>#include<cstring>using namespace std;typedef long long ll;const int mod = 1e9 + 7;const int N=1e5+100;ll f[107][107][107];ll dfs(ll x, ll y, ll z){ if(x<2 and y<2 and z<2) return 1; if(f[x][y][z] != -1原创 2021-09-10 08:17:17 · 74 阅读 · 0 评论 -
树状数组+哈希+二分
#include <bits/stdc++.h>using namespace std;#define ull unsigned long long#define in __int128_t#define lowbits(x) x&-xconst int X = 133331;const int N = 1e5 + 10;in mod;string s;ull f[N], c[N];int n, m;inline void add(int x, ull y){原创 2021-09-08 16:57:59 · 97 阅读 · 0 评论 -
卷王之王 (优先队列 + 时间复杂度分析)
题意: 给定 n 个数, 接下来 m 次操作,每次输入一个 x ,如果数列中存在小于等于x的值,则加上x错误 : 用优先队列操作,优先队列操作对象是第一个字符,当然也可以自己定义。题解: 把小于等于x 的数字取出来,放入vector中,然后依次进行加法,之前的想法是用一个while,但是会加多次而不是一次。分析: 因为x值是有限定的,每个数 a[I] += x ,最多加log(x) 次, 然后这个数就比x的范围大了,永远不会再出队列。时间复杂度: m * log(n) * log(x)默认是大跟堆原创 2021-09-07 16:44:30 · 1177 阅读 · 0 评论 -
牛客月赛 简单题记录
象棋: 随便模拟几个,发现如果大于2的都能压缩到2void solve(){ cin >> n >> m; if(n>2) n = 2; if(m>2) m = 2; cout << n * m << endl;}皇城:没有被打败过的有资质成为冠军const int N=1e5+100;int n, m;bool vis[N];void solve(){ cin >> n >原创 2021-09-07 13:06:41 · 62 阅读 · 0 评论 -
最短串 (思维 + 简单模拟)
链接:https://ac.nowcoder.com/acm/contest/20263/B来源:牛客网题目描述 :给定22个由小写字母和问号组成的字符串a与b,问号代表你想要的任何字符。请你找出最短的字符串s,要求s包含a和b两个字符串,你只需要输出s的长度即可。队友和我说,一前一后直接拼接,把相同的部分直接减掉。数组开小,wa了一发// Problem: 最短串// Contest: NowCoder// URL: https://ac.nowcoder.com/acm/contest原创 2021-09-07 13:03:21 · 159 阅读 · 0 评论 -
四面楚歌 (简单bfs + 从外面开始搜索防止内存炸)
卡了很久,写得不是特别多吧, 四个方向的数组也不熟。从 0 开始搜就行了#include<iostream>#include<cstdio>#include<string>#include<ctime>#include<cmath>#include<cstring>#include<algorithm>#include<stack>#include<climits>#includ原创 2021-09-07 11:25:59 · 93 阅读 · 0 评论 -
杨辉三角(杨辉三角性质 + 组合数+求导数)
上面的公式y取 1然后进行一堆构造,对比.当mod 很多的时候,可以写一个mod 函数,(师兄说的)mod和乘法的优先级,从左往右依次执行。// Problem: 杨辉三角// Contest: NowCoder// URL: https://ac.nowcoder.com/acm/contest/20263/C// Memory Limit: 524288 MB// Time Limit: 2000 ms// // Powered by CP Editor (https://cped.原创 2021-09-07 11:22:39 · 306 阅读 · 0 评论 -
零一奇迹(预处理+二进制构造+思维)
一个长度为 n 的01字符串,有多少子串满足,其所表示的二进制数,对应的十进制数值在 l 和 r 之间(只统计不含前导零),取的位置可以决定不同。询问的时间复杂度是1e4, 字符长度是1e5,不能每次都暴力查找。因为每次修改的位置只有一个,遇到多次询问的问题,可以预处理,然后每次O(1) 时间复杂度去询问。因为每次修改的范围大不,所以询问之前的修改,也是可以接受的。每次修改:cul( (max(1, x - 63) ), x ) 把修改的范围缩小(这道题的灵魂之处)先统计要修改的位置,然后修改,再原创 2021-09-06 20:02:01 · 110 阅读 · 0 评论 -
牛客月赛(构造)
首先证明 x * y = n + m找到一个不能整除的点,然后合法进行构造。这个贴了比人的代码:#include<bits/stdc++.h>#define ll long longusing namespace std;ll n, m, x, y;void work(){ cin >> n >> m; for(ll i = 1; i * i <= n + m; ++i) { if((m + n) % i) continue; x原创 2021-09-06 12:22:47 · 76 阅读 · 0 评论 -
加减 (双指针+前缀和)
题目:给定一个长度为n的序列,进行加一减一的操作不超过k次,最多有多少个数相同?思路:维护若干个区间,每个区间都能在k步内变为同一个数,求最长的区间。尽量往中位数靠。两个问题:感觉有点像 O(n^2) ;而且偶数的时候,中位数默认是中间左边的数。#include <iostream>#include <algorithm>using namespace std;#define ll long long const int N = 1e5 + 10;ll n, k,原创 2021-09-05 11:05:32 · 323 阅读 · 0 评论 -
擅长解密的小红同学(多重集排列)
链接对于这题来说,求期望就是求排列的种类。简单证明:(0代表失败,1代表成功)1次 12次 013次 001...n次 000 ...0001当n趋于无穷的时候,所有的方法都被尝试过一遍。排列种类数:多重集排列问题:直接排列,然后取消相同元素的顺序:ans=(n0+n1+n2+...+n9)!/n1!∗n2!∗...∗n9!ans = (n_0 + n_1 + n_2 +...+n_9)! / n_1! * n_2! * ... * n_9!ans=(n0+原创 2021-09-04 00:27:00 · 264 阅读 · 0 评论 -
Chino with Equation 不定方程
假设未知数m个不定方程,用插板法来想,求正整数解:m个桶,放n件东西,每个桶至少一件: C(n-1, m-1)求非负数解:C(n+m-1, m-1)看m和的数据范围,用什么方式求组合数可以用费马小定理// Problem: Chino with Equation// Contest: NowCoder// URL: https://ac.nowcoder.com/acm/contest/553/D// Memory Limit: 524288 MB// Time Limit: 2000原创 2021-09-03 11:21:47 · 172 阅读 · 0 评论 -
Happy Number(思维 / dfs求排列/ 模拟)
链接:https://ac.nowcoder.com/acm/contest/11260/H来源:牛客网Digits 2, 3 and 6 are happy, while all others are unhappy. An integer is happy if it contains only happy digits in its decimal notation. For example, 2, 3, 263 are happy numbers, while 231 is not.#incl原创 2021-08-14 17:24:19 · 100 阅读 · 0 评论 -
最大数(线段树pushup操作)
#include <iostream>#include <cstdio>using namespace std;const int N = 200007;int m, p;struct Node{ int l, r; int v;}tr[N * 4];void pushup(int u){ tr[u].v = max(tr[u<<1].v, tr[u<<1|1].v);}void build(int u, int l,原创 2021-08-13 19:36:08 · 217 阅读 · 0 评论 -
起床困难综合症
对于二进制的每一位,初始为0, 结果为1 加上初始为1, 结果为1 在条件内加上初始为0, 结果为0 不变初始为1, 结果为0 不变// Problem: 起床困难综合症// Contest: NowCoder// URL: https://ac.nowcoder.com/acm/contest/996/E// Memory Limit: 1048576 MB// Time Limit: 2000 ms// // Powered by CP Editor (https://cpedi原创 2021-08-08 11:43:00 · 169 阅读 · 0 评论 -
牛客练习赛81——小 Q 与异或
这个方法看不太懂,主要是rand的位置,rand可以出现0-max_rand 的值,可能出现0!!但是概率极小。但为什么给定它是1,不行呢?#include<bits/stdc++.h>#define ll long long#define ios ios::sync_with_stdio(false);cin.tie(0)#define rep(i,a,b) for(int i=a;i<=b;++i)const int maxn=1e6+10;using namespac原创 2021-06-25 19:00:02 · 99 阅读 · 0 评论