
补题
开学了8
go on
展开
-
招募军队 (超级源点)
超级源点+最大/最小生成树招募军队#include<bits/stdc++.h> using namespace std;#define ff first#define ss second#define lowbit(x) (x&-x)#define pf(a) printf("%d\n",a)#define mem(x,y) memset(x,y,sizeof(x))#define dbg(x) cout << #x << " = " <原创 2022-03-15 11:24:34 · 149 阅读 · 0 评论 -
C. Portal
https://codeforces.com/contest/1581/problem/C暴力n^4 方,当枚举最后一列之前,判断是否大于16,大于就剪枝,16是最坏情况下的修改数为什么16是最坏情况呢?想想,5行4列,四个边角不需要改变,那就是4*5 - 4 = 16;先枚举行,再枚举列,枚举最后一列的时候,之前的矩形需要修改的数量已经是确定好了,如果已经确定好的数都大于最坏情况,直接break;然后就是一些预处理啦, 保证每次在O(1)时间内算出当前方案需要修改的数。// Problem:原创 2021-09-30 22:23:31 · 214 阅读 · 0 评论 -
G limit
#include <iostream>#include <cmath>#define ll long longconst int N = 1e5 + 10;ll n, t, a[N], b[N], sum, op;ll gcd(ll a, ll b){ return a%b ? gcd(b,a%b):b;}int main(){ scanf("%lld %lld", &n, &t); for(int i = 1; i <= n.原创 2021-09-26 15:57:41 · 158 阅读 · 0 评论 -
Busiest Computing Nodes (线段树维护区间最小值)
2021icpc 网络赛第一场a题参考:https://www.acwing.com/file_system/file/content/whole/index/content/2958989/题目大意:给定k个节点,每个节点可以运行有起始时间和终止时间的项目,每个项目到来都会询问第 (i%k, i %k+1, … 0 …i%k-1) 是否空闲,所有k个节点都没有空闲,这个项目跳过,否则按照访问的优先顺序,寻找到第一个合适的节点运行该项目,并更新这个节点的结束顺序。思路:需要把每次询问控制在 log(k原创 2021-09-26 11:11:12 · 214 阅读 · 0 评论 -
C - Book 拓扑排序
https://codeforces.com/contest/1573/problem/C判断还有度的节点一定放在最后注意更新的操作:如果比当前节点小,当前节点加一再比较,否则直接比较最后输出最大的操作次数就可以。#include<bits/stdc++.h>using namespace std;const int N = 2e5 + 10;vector<int> to[N];int main() { ios::sync_with_stdio(false); ci原创 2021-09-24 10:50:39 · 94 阅读 · 0 评论 -
B. Swaps
https://codeforces.com/contest/1573/problem/B思路:答案 = 奇数交换的次数 + 偶数交换的次数固定一个值,更新另外一个值就可以,固定哪个都是一样的,是个镜像操作。更新操作:先按照原来的排序方式,分配好初始位置,从大到小更新,最大的位置没法更新,分配初始位置 and 另外一个数组的起始位置 是从1开始的,所以要减两个1// Problem: B. Swaps// Contest: Codeforces - Codeforces Round #743 (D原创 2021-09-23 12:28:08 · 233 阅读 · 0 评论 -
D. The Strongest Build
给 n 个slots,每个slots 有若干个卡片,每个卡片上的数值都可以提升英雄的实力(数值已经升序排好)告诉你,有一些卡片的序号被banned,不能使用,剩下哪些卡片可以使得英雄的实力总和最大,要求输出卡片的序号。比如说,第i个slots 有对用三个卡片,第三个卡片被baned ,那么你选择的序号是二,因为二肯定大于等于一。输出所有的序号,保证一定有答案。https://codeforces.com/contest/1574/problem/D题解:(1)二维数组如果过大,会爆内存(2)记录原创 2021-09-22 23:52:43 · 128 阅读 · 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 · 1207 阅读 · 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 · 366 阅读 · 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 · 285 阅读 · 0 评论 -
二次函数 + 三分算法
不用三分也可以,就是一个二次函数#include<iostream>#include<vector>#include<algorithm>#define ll long longusing namespace std;vector<ll> v[55];ll A, B, C, D, N;ll g(ll x){ ll res = 0; while(x) { res += x % 10; x /= 10; } return原创 2021-08-30 20:58:27 · 136 阅读 · 0 评论 -
cf交互题
链接#include <iostream>#include <algorithm>using namespace std;const int N = 1e4 + 10;int a[N], b[N];int main(){ int n, k; scanf("%d %d", &n, &k); for(int i = 1; i <= n - 1; i++) { printf("and %d %d\n", i, i+1); fflu原创 2021-08-30 17:44:40 · 396 阅读 · 0 评论 -
小跟堆和大跟堆的操作
头文件: intclude < queue>修改一个节点,保持原来的顺序,时间复杂度: O(logn)O(logn)O(logn)默认是大跟堆,大跟堆有两种操作:(1)priority_queue<ll, vector<ll>, less<ll> >a; // 注意最后的空格 (2)大跟堆其实不用那么麻烦,直接:priority_queue<ll> a, b;小跟堆:priority_queue<ll, vector&l原创 2021-08-21 22:19:49 · 134 阅读 · 0 评论 -
D. Say No to Palindromes(全排列,找规律)
产生排列的方式点击#include <iostream>#include <algorithm>#include <vector>using namespace std;const int N = 2e5+10;int n, m;char a[N];int s[6][N];vector<string> neg;void init(){ neg.push_back("abc"); for(int i=0;i<6;i++)原创 2021-08-03 22:55:27 · 143 阅读 · 0 评论 -
题解记录*
百度之星二第一题注意负数取余的过程#include <bits/stdc++.h>using namespace std;#define LL long longconst int mod = 998244353;int a, b, k;LL qmi(LL a, int b){ LL ans = 1; for(;b;b>>=1,a=a*a%mod) if(b&1) ans = ans * a % mod;原创 2021-08-02 23:44:46 · 68 阅读 · 0 评论 -
C - Jumps on a Circle
题目大意一个环,从0开始到p-1,开始位于0的位置,第一次走1步,第二次走2步,第三次走3步…问n步后走过了多少个不同的点?题解通过简单模拟发现,2p步后回到原点如果n大于2p,那么相当于2p+1,2p+2…那么和原来的又相同了意思就是2p范围内是有效的,超过了就一直重复之前的行为。就算是0步,原来的点是0,也是1个不同的点。#include <iostream>#include <cmath>using namespace std;#define ll l原创 2021-07-07 21:24:54 · 94 阅读 · 0 评论 -
I. chino with mates
题目大意blind date event – 相亲nnn 名男性, mmm 名女性男性的个性值为aia_iai, 女性的个性值为bjb_jbj ,当ai∗bi在[L,R]a_i * b_i在 [L, R]ai∗bi在[L,R] 这个范围就算配对合格。求有多少对?题解lower_bound( begin,end,num):从数组的begin位置到end-1位置二分查找第一个大于或等于num的数字,找到返回该数字的地址,不存在则返回end。通过返回的地址减去起始地址begin,得到找到数字原创 2021-07-07 09:56:11 · 266 阅读 · 0 评论 -
F. chino with ball
题目大意有 NNN 个小球在光滑水平的地上,初始速度有三种情况,−1,0,1-1, 0, 1−1,0,1求 kkk 秒后各个小球的位置题解可以把小球碰撞后当作是穿过去了,这样编号就乱了,用起始的位置来维护一下。代码#include<bits/stdc++.h>#define ll long long#define rep(i,a,b) for(int i=a;i<=b;++i)#define ff first#define ss secondusing name原创 2021-07-06 17:46:40 · 156 阅读 · 0 评论 -
cocktail with pony
题目大意在一维数轴上,狼的起始位置是x1x_1x1,马的起始位置的x2x_2x2 。每轮狼移动v1v_1v1步,小马移动v2v_2v2 步,每一步都可以向左或者向右移动。狼和马轮流先移动,第一轮狼先动,第二轮马先动。如果两个动物位置相同,那么马被抓住。移动不能超过数轴n的长度代码#include <iostream>using namespace std;int n,v1,v2,x1,x2;// 模拟int main(){ int t; cin >>原创 2021-07-06 16:51:44 · 354 阅读 · 1 评论 -
J. do NOT a=2b
https://codeforces.ml/group/vFwRVj9WjO/contest/335370/problem/J题目大意给定长度为n的数组中不能出现a=2ba=2ba=2b问最少删除多少个元素题解从111到10610^6106排列开,其中a=2ba=2ba=2bdp[i][0]dp[i][0]dp[i][0] 奇数dp[i][1]dp[i][1]dp[i][1] 偶数当 iii 为奇数时, 直接记录。为偶数时, 判断一下前面的数是否扣掉再加代码#include <原创 2021-07-06 11:22:08 · 555 阅读 · 1 评论 -
K. chino with c language(水题)
https://codeforces.ml/group/vFwRVj9WjO/contest/335370/problem/K题目大意memcpy不检查源地址和目标地址是否有重叠memmove考虑重叠的情况代码#include<bits/stdc++.h>using namespace std;const int maxn = 1e5+10;char s[maxn], t[maxn];void solve(){ int n,l,p1,p2; cin &g原创 2021-07-06 10:02:33 · 364 阅读 · 0 评论 -
Codeforces Round #727 (Div. 2)
https://codeforc.es/contest/1541cfabcda题意:n、x、tn、x、 tn、x、t三个数。有n个人,每个人工作 ttt。第一个人从000开始,第二人从xxx开始,第三个人从2x2x2x开始,一直到(n−1)x(n-1)x(n−1)x开始。如果一个人工作结束之前(含结束时)有yyy人在工作,那么这个人的不满意度是yyy,求所有的不满意度之和。题解:数据给大了,只能O(n)O(n)O(n)了注意:#include<bits/stdc++.h>原创 2021-06-27 18:03:18 · 135 阅读 · 1 评论 -
Codeforces Round #728 (Div. 2)a-c
https://codeforc.es/contest/1541cfabca给定一个数n,1 2 3 4 … n 每个数不在原位,求最小移动次数,对应的序列分别讨论n为偶数和奇数的情况#include <bits/stdc++.h>using namespace std;int main(){ int t, n; scanf("%d", &t); while(t--){ scanf("%d", &n);原创 2021-06-26 16:22:11 · 92 阅读 · 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 · 123 阅读 · 0 评论 -
Codeforces Round #721 (Div. 2)
链接Palindrome Game (easy version思维大意思路code1code2大意给定一个01回文串规则如下:(1)先手必须把不是1的数换成1(2)如果不是回文串可以对其进行翻转(3)对方翻转了,你这次就不能翻转,只能进行换数(4)最终串全变成1,则游戏结束思路思维题,给得很巧,存在三种情况:(1)如果全是1,平局(2)最特殊的情况是,串中0个数 i >= 3,串中间有个0(3)其他情况都是先手胜先手可以把中间的0换为1,还是回文串,e.g. 000 变成原创 2021-05-24 22:05:42 · 67 阅读 · 1 评论 -
I. Xor-sequences-dp-矩阵快速幂
链接Xor-sequences大意思路code1优化代码大意题面exclusive or operation :异或运算定义 x1, x2, ..., xkx_1, x_2, ..., x_kx1, x2, ..., xk 是一个异或序列,异或运算xor(xi,xi+1)xor(x_i ,x_{i+1})xor(xi,xi+1) 的结果在二进制表示下‘1’的个数是三的倍数。输入序列 x1, x2, ..., xnx_1, x_2, ..., x_nx1原创 2021-05-22 22:49:02 · 108 阅读 · 0 评论 -
Dexterina’s Lab,动态规划+矩阵快速幂
链接Dexterina’s Lab大意思路code1code2大意题面给定若干个堆,两人每次从一个堆中拿一个或者多个东西,最后没有东西拿的人输输入n: 堆的数量,1 ≤ n ≤ 1091 ≤ n ≤ 10^91 ≤ n ≤ 109x: 一个堆中所含东西的最大数量,只能从[0,x][0 ,x][0,x]选输入 x+1 个数:P(0), P(1), … , P(X), 其中P(i) 表示一个堆恰有 i 个东西的概率输出先手赢的概率思路前 i 堆石子XOR 和为x,转移方程:dp[i原创 2021-05-22 20:32:02 · 135 阅读 · 0 评论 -
矩阵快速幂(快速幂)模板题目Decoding Genome
这类题目的难点在于,数据量大,需要用到高精度,也就是快速幂https://codeforces.com/group/vFwRVj9WjO/contest/328371/problem/H#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <algorithm>#define M原创 2021-05-22 01:47:00 · 1036 阅读 · 0 评论 -
D. Add One -动态规划
题目大意:数字的每位每次加一动态规划预处理:#include <bits/stdc++.h>#include<bits/stdc++.h>#define ll long long#define rep(i,a,b) for(int i=a;i<=b;++i)#define fep(i,a,b) for(int i=b;i>=a;--i)#define mem(x,y) memset(x,y,sizeof(x))#define inf 2147483647原创 2021-05-19 00:49:33 · 169 阅读 · 0 评论 -
C. Barcode --待补思路
https://codeforces.com/contest/225/problem/C#include<iostream>#include<cmath>#include<cstring>#define LL long long#define INF 0x3f3f3f3f using namespace std; const int maxn=1e3+100;char mp[maxn][maxn];int a[maxn],b[maxn];int .原创 2021-05-18 15:14:27 · 94 阅读 · 0 评论 -
Quiz--思维
据说cin 和 cout 比 scanf 要慢一些有些程序,开头没有玄学优化,部分数据可能过不了代码是抄的,卡了挺久的,写一写思路:每k−1k-1k−1个正确的题,插入一个错题,这是一个区间有n/kn/kn/k个区间剩下的题数不够一个区间的时候,n % k加起来就是不加倍的情况下正确题数ll x1 = n%k;ll x2 = n/k * (k-1);ll xx = x1 + x2;填坑:题回答正确需要加倍题,每遇到k−1k-1k−1之后的k就填坑,之前已经填了xxxxxx个坑,现在原创 2021-05-18 14:00:23 · 72 阅读 · 0 评论 -
A. Tetrahedron——中间计算过程会爆内存
简单版动态规划:不需要脑子,有眼睛就可以。也不算吧,注意内存会爆#include<bits/stdc++.h>#define ll long long#define rep(i,a,b) for(int i=a;i<=b;++i)#define fep(i,a,b) for(int i=b;i>=a;--i)#define mem(x,y) memset(x,y,sizeof(x))#define inf 2147483647const int mod = 1e9+7原创 2021-05-17 14:00:24 · 96 阅读 · 0 评论 -
Codeforces Round #719 (Div. 3)(a,b,c)
题目https://codeforc.es/contest/1520这里写目录标题abcdef1f2ga一个字符串,出现在一个地方的字符,不能再第二个地方出现AAAAZAAAAAAAAAZAAAAAAAAAZAAAAA -------NOFFGZZZYFFGZZZYFFGZZZY ------------- YES#include<bits/stdc++.h>#define ll long long using namespace std;const int N = 1e4;原创 2021-05-08 20:17:28 · 115 阅读 · 0 评论 -
B - Nastia and a Good Array(div2 )
官方题解https://codeforc.es/blog/entry/90477代码:#include "bits/stdc++.h"using namespace std;int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int q; cin >> q; while (q--) { int n; cin .转载 2021-05-08 19:41:18 · 143 阅读 · 0 评论 -
A. Nastia and Nearly Good Numbers(简单思维)
https://codeforc.es/contest/1521/problem/A#include<bits/stdc++.h>#define ll long longusing namespace std;ll a, b;void solve() { cin >> a >> b; if(b==1){ cout << "NO\n"; return; } cout <<原创 2021-05-08 09:39:06 · 347 阅读 · 0 评论 -
Group Project(二分图)
https://ac.nowcoder.com/acm/contest/13926/F二分图,先挖个坑原创 2021-05-07 22:29:41 · 88 阅读 · 0 评论 -
In-place Sorting(逆向思维,数组下标用vector代替)
https://ac.nowcoder.com/acm/contest/13926/H题目:给定n个数字,每个数字6和9能互换,输出不减序列,或者输出“impossible”思路:对于每个数字,先把6全换成9;换成6(6比较小,为了输出最小序列),如果换了还是不减序列,则换。否则保持9,如果保持9还是比之前的数小,输出“impossible”例如:4979666160换94979999190依次换6,能换则换4679699160注意:如果不想要数组的下标,则原创 2021-05-07 20:51:36 · 185 阅读 · 0 评论 -
Jam-packed(思维)
https://ac.nowcoder.com/acm/contest/13926/I有n个瓶子,每个箱子最多装k个瓶子,尽可能多装,问最少装多少个思路:tmp = n / kn / (tmp+1)除以tmp+1 ,肯定可以装完。#include<bits/stdc++.h>#define ll long longusing namespace std;int main(){ ll n, k; cin >> n >> k; if(n &l原创 2021-05-07 20:26:32 · 1901 阅读 · 0 评论 -
Figure Skating(map映射的用法,string 映射到int)
链接:https://ac.nowcoder.com/acm/contest/13926/E来源:牛客网Figure skating 花样滑冰gymnastics 体操execute 执行contestant 参赛者Olympics observers from the Bookmakers’ Association for the Prevention of Cheating are tasked with assessing the objectivity of the jury. Th原创 2021-05-06 17:38:09 · 201 阅读 · 0 评论