算法
wushi55555
这个作者很懒,什么都没留下…
展开
-
H题的题解
比如第1个1,也就是点15,取0那么后面的数就可以任意选,所以我们就可以从点1往点15连一条值为0的边,取1的情况我们先把数用一个he累积下来,继续往下细分,后面的位置如果是0,就取0,到了点17也就第二个1,如果取0那么就可以任意取,我们从点1往点17连值为he的边,也就是前面的位置能取1就取1的情况,取1的情况继续往后推。开头我们说点1没有连向他的边,但因为点1永远是首位,他的取0分支的he为0,也就是有他的情况永远在取1分支中,这所有数首位都是如此。其中会发现点1没有取的边,这个后面能处理。...原创 2022-08-26 23:11:56 · 173 阅读 · 0 评论 -
基础的算法
基础算法 双指针 给定一个长度为 n 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。 样例: 5 1 2 2 3 5 #include<iostream> using namespace std; const int N=100010; int q[N],w[N],n; int main() { cin>>n; int res=0; for(int i=0,j=0; i<n; i++) { cin>>q[i]; w[q[i]]++;原创 2021-10-03 14:59:26 · 71 阅读 · 1 评论 -
查找的练习
查找 #include <stdio.h> void main () { int a[8]={-12,0,6,23,56,80,100,115}; int n,low,high,mid,found; low=0; high=7; found=0; scanf("%d",&n); while(1) {mid=(high+low)/2; if (a [mid] != n) { if(a[mid]<n) {low=mid+1;} if(a[原创 2021-08-24 23:21:14 · 66 阅读 · 0 评论 -
冒泡排序的练习
冒泡排序 #include <stdio.h> void main () { int a[10]={32,34,24,46,756,144,3,63,52,26}; int d,b,c,t,i; c=9; for(d=0;d<9;d++) { for(b=0;b<c;b++) { if(a[b]<=a[b+1]) {t=a[b];a[b]=a[b+1];a[b+1]=t;} } b=0; c--; } i=0; while(i&原创 2021-08-24 01:47:54 · 120 阅读 · 0 评论