
笔记
luna_sama
ACM小白一枚~
欢迎讨论与交流~
(⁄ ⁄•⁄ω⁄•⁄ ⁄)
展开
-
查询数组中能被k整除且不小于z的连续子序列和的个数
题目:小圆前辈的数组小圆前辈最近收到了一个长度为nnn数组。她怀疑是不怀好意的魔女给她的陷阱,于是她对数组进行了剖析后发现了两个关键的整数kkk和zzz,而解读此数组只要算出的所有连续子序列中有多少满足:1,所有数的和为kkk的倍数;2,且其和至少为zzz;这个问题难到了小圆前辈,她便把这个问题交给了你,如果你能帮她解决的话,她将奖励你一个Accept。输入描述:第一行只有三个整数n,k,zn,k,zn,k,z。第一行共n个整数a[1]...a[n]a[1]...a[n]a[1]...a[n原创 2021-10-16 16:00:06 · 337 阅读 · 0 评论 -
专题训练——并查集
并查集分类:#mermaid-svg-XFMSSLLMqpqg3iIV .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-XFMSSLLMqpqg3iIV .label text{fill:#333}#mermaid-svg-XFMSSLLMqpqg3iIV .node rect,#mermaid-svg-XF原创 2021-10-15 09:01:23 · 148 阅读 · 0 评论 -
用lower_bound简化最长上升子序列代码
小知识本质上为二分查找所以序列必须升序(定义序列大小后降序也可以)lower_bound会找出序列中第一个大于等于x的数upper_bound会找出序列中第一个大于x的数差别在于是否包含等于x的数用法:lower_bound(a,a+n,x);//在a[]中找到第一个不大于x的数lower_bound(a,a+n,x,cmp);//实际上还可以加上比较函数lower_bound(a,a+n,x,greater<int>());//这样就改为降序序列该函数的返回值是一个指原创 2021-10-06 19:20:38 · 227 阅读 · 0 评论 -
归并排序
归并排序如题:给定你一个长度为 n 的整数数列。请你使用归并排序对这个数列按照从小到大进行排序。并将排好序的数列按顺序输出。输入格式输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。输出格式输出共一行,包含 n 个整数,表示排好序的数列。数据范围1≤n≤100000代码如下:#include<iostream>using namespace std;const int N=1e5+5;int a[N]原创 2021-05-04 14:49:31 · 428 阅读 · 0 评论 -
快排(第k个数)
第k个数如题:给定一个长度为 n 的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k 个数。输入格式第一行包含两个整数 n 和 k。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整数数列。输出格式输出一个整数,表示数列的第 k 小数。数据范围1≤n≤100000,1≤k≤n代码如下#include<iostream>using namespace std;const int N=1e5+5;int a[N],n,k原创 2021-05-04 13:54:51 · 162 阅读 · 0 评论 -
Codeforces Round #696 (Div. 2) B. Different Divisors题解
思路:素数筛法由题设可知,4个因子分别是1,a,b,n(a,b均为素数)为了节省时间,不妨先把1~40000的素数先筛出来。代码:#include <cstdio>#include <iostream>#include <cmath>#include <string.h>#include <stdlib.h>#include <algorithm>using namespace std;const int n=原创 2021-01-25 17:06:20 · 163 阅读 · 0 评论 -
Codeforces Round #632 (Div. 2) A - Puzzle From the Future题解
思路:贪心的构造1,不能构造1就构造0。我的代码:#include <cstdio>#include <iostream>#include <cmath>#include <string.h>#include <stdlib.h>#include <algorithm>using namespace std;char a[100005];void solve(){ int n; int i,i1,i2,te原创 2021-01-25 14:24:30 · 127 阅读 · 0 评论 -
Codeforces Round #640 (Div. 4) G. Special Permutation题解
思路:当n<4时显然不存在,当n>=4时,构造……n-4,n-2,n,n-3,n-1,n-5,n-7……。代码:#include <cstdio>#include <iostream>#include <cmath>#include <string.h>#include <stdlib.h>#include <algorithm>using namespace std;void solve(){原创 2021-01-25 13:50:25 · 127 阅读 · 0 评论 -
Codeforces Round #640 (Div. 4) F. Binary String Reconstruction题解
思路:构造类似于00……0011……1101010……的字符串,注意考虑n0,n1,n2分别为0的情况。代码:#include <cstdio>#include <iostream>#include <cmath>#include <string.h>#include <stdlib.h>#include <algorithm>using namespace std;void solve(){ int n0,n原创 2021-01-25 13:42:36 · 96 阅读 · 0 评论 -
Codeforces Round #640 (Div. 4) E. Special Elements题解
代码:#include<iostream>using namespace std;int a[8005];bool b[8005];void solve(){ int n; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; b[i]=false; } for(int i=1;i<=n;i++) { for(int sum=a[i],j=i+1;j<=n;j++) { su原创 2021-01-22 09:25:48 · 110 阅读 · 0 评论 -
Codeforces Round #640 (Div. 4) D. Alice, Bob and Candies题解
题解:简化代码:#include<iostream>using namespace std;int ac[1005];void solve(){ int n,i; cin>>n; for(i=0;i<n;i++)cin>>ac[i]; int a=0,b=0,an=0,bn=0,bs=0,l=0,r=n-1; while(l<r) { for(a=0;a<=b&&l<=r;l++) a+=ac[l]原创 2021-01-21 15:20:46 · 160 阅读 · 0 评论 -
不能被n整除的第k个数(n>2)
笔记:小技巧简化代码:int n,k;cin>>n>>k;cout<<k/(n-1)*n+(k%(n-1)?k/(n-1):-1)<<endl;相关题目:Codeforces Round #640 (Div. 4) C — K-th Not Divisible by n原创 2021-01-21 14:11:11 · 593 阅读 · 0 评论 -
将一个整数拆分成k个同奇偶且大于0的数
笔记:如题简化代码:int原创 2021-01-21 13:59:07 · 448 阅读 · 0 评论 -
关于拆分一个整数(如123→100+20+3)
笔记:拆分一个整数简化代码:int n,i=1,a[101],an=0;cin>>n;while(n){ if(n%10!=0)a[an++]=n%10*i; n/=10; i*=10;}这样可以得到拆分后数字的数量an和拆分后的数组a[]相关题目:Codeforces Round #640 (Div. 4) A — Sum of Round Numbers...原创 2021-01-21 13:19:44 · 159 阅读 · 0 评论