zoukankan      html  css  js  c++  java
  • LIS|计蒜客2019蓝桥杯省赛 B 组模拟赛(一)

    #include <bits/stdc++.h>
    using namespace std;
    const int N = 1e5 + 9;
    int f[N], a[N];
    int n;
    
    //二分查找: 在f数组中查找到第一个比x大的数的下标 
    int find(int l, int r, int x) {
    	while (l < r) {
    		int mid = (l + r) / 2;
    		if (f[mid] < x) {
    			l = mid + 1;
    		} else {
    			r = mid;
    		}
    	}
    	return l;
    }
    int lis() {
    //7
    //2 5 3 4 1 7 6
    	int len = 0;
    	for (int i = 0; i < n; i++) {
    		;//填空
    		f[k] = a[i];
    		if (k == len) {
    			len++;
    		}
    	}
    	return len;
    }
    
    int main() {
    	scanf("%d", &n);
    	for (int i = 0; i < n; i++) {
    		scanf("%d", a + i);
    	}
    	printf("%d
    ", lis());
    	return 0;
    }
    

    思路:代码填空题,没有思路就按照能想到的参数凑吧。

    首先,应该填写 int k = f(x,y,z),因为没有用到f函数 也没有定义k参数。
    第一二个参数 从find函数的形参分析应该分别表示 左下标 右下标 要查找的值x,另外分析find函数知道find函数应该是在f中查找比x大的第一个值。

    就下面那么多种情况,输入测试数据,都试一遍找到正确的就能得分!

    0 i a[i]
    0 i a[len]
    i len a[i]
    i len a[len]
    i n a[i]
    i n a[len]
    i len a[i]
    i len a[len]
    len i a[i]
    len i a[len]
    0 len a[i]
    0 len a[len]
    

    答案:int k = find(0,len,a[i]);

  • 相关阅读:
    2019ICPC徐州 H.Yuuki and a problem
    wprintf 输出中文
    bit数组
    Vs2010 Atl工程手工添加连接点
    dll非模态窗口不响应按钮消息
    VC中给控件添加ToolTip
    在Dialog中添加工具条
    在Dialog中添加状态栏
    Vc添加快捷键
    在VC中调用COM组件的方法
  • 原文地址:https://www.cnblogs.com/fisherss/p/10345283.html
Copyright © 2011-2022 走看看