zoukankan      html  css  js  c++  java
  • Daliy Algorithm -- day 102

    Nothing to fear


    种一棵树最好的时间是十年前,其次是现在!

    那些你早出晚归付出的刻苦努力,你不想训练,当你觉的太累了但还是要咬牙坚持的时候,那就是在追逐梦想,不要在意终点有什么,要享受路途的过程,或许你不能成就梦想,但一定会有更伟大的事情随之而来。 mamba out~

    2020.8.7


    人一我十,人十我百,追逐青春的梦想,怀着自信的心,永不言弃!

    合唱队形

    关键点在于反向再求一次最长上升子序列,最后比较每个数字 i 从左边到 以 i 为结尾得LIS 和 从右边到以i为结尾得LIS .

    ans = min(ans , ans - f[i] - g[i]) + 1;

    #include <bits/stdc++.h>
    
    using namespace std;
    const int N = 105;
    int n;
    int h[N];
    int f[N] , g[N];
    int main()
    {
    	cin >> n;
    	for(int i = 1;i <= n ;i ++)
    		cin >> h[i];
    
    	for(int i = 1;i <= n;i ++)
    	{
    		f[i] = 1;
    		for(int j = 1;j < i;j ++)
    		{
    			if(h[i] > h[j])
    				f[i] = max(f[i], f[j] + 1);
    		}
    	}
    	for(int i = n;i >= 1;i --)
    	{
    		g[i] = 1;
    		for(int j = i + 1;j <= n;j ++)
    		{
    			if(h[i] > h[j])
    				g[i] = max(g[i] , g[j] + 1);
    		}
    	}
    	int ans = n;
    	for(int i = 1;i <= n;i ++)
    	{
    		ans = min(ans , n - g[i] - f[i]);
    	}
    	cout << ans + 1 << endl;
    	return 0;
    }
    

    打印数字三角形

    水题

    #include <bits/stdc++.h>
    
    using namespace std;
    int n;
    int main()
    {
    	cin >> n;
    	int cnt = 1;
    	for(int i = 1;i <= n;i ++)
    	{
    		for(int j = 1;j <= i;j ++){
    			printf("%4d",cnt++);
    		}
    		cout << endl;
    	}
    	return 0;
    }
    

    开心的金明

    #include <bits/stdc++.h>
    
    using namespace std;
    
    const int N = 30005;
    const int M = 50;
    int v[N] , w[N];
    int f[M][N];
    
    int main()
    {
    	int n , m;
    	cin >> n >> m;
    	for(int i = 1;i <= m;i ++)
    	{
    		cin >> v[i] >> w[i];
    	} 
    	memset(f , 100000000 , sizeof f);
    	f[0][0] = 0;
    	for(int i = 1;i <= m;i ++)
    	{
    		for(int j = 0;j <= n;j ++)
    			f[i][j] = f[i-1][j];
    		for(int j = v[i];j <= n;j ++)
    		{
    			if(j >= v[i])
    				f[i][j] = max(f[i][j] , f[i-1][j-v[i]] + v[i] * w[i]);
    		}
    	}
    	cout << f[m][n] << endl;
    	return 0;
    }
    

    最大值

    线段树板子题

    #include <bits/stdc++.h>
    
    #define ls u << 1
    #define rs u << 1 | 1
    
    using namespace std;
    
    const int N = 200005;
    
    struct node{
    	int l , r , val = 0;
    }tr[4 * N];
    
    // 向父节点反馈信息
    void pushup(int u)
    {
    	tr[u].val = max(tr[ls].val , tr[rs].val);
    }
    // 建树
    void build(int u , int l , int r)
    {
    	tr[u].l = l , tr[u].r = r; // 标注该节点所管辖的区间
    	if(l == r) return;
    	int mid = l + r >> 1;
    	build(ls , l , mid), build(rs , mid + 1 , r);
    	//pushup(u);
    }
    // 单点修改
    void modify(int u , int x , int v)
    {
    	if(tr[u].l == x && x == tr[u].r)
    	{
    		tr[u].val = v;
    		return;
    	}
    	int mid = tr[u].l + tr[u].r >> 1;
    	if(x <= mid)modify(ls , x , v);
    	else modify(rs , x , v);
    	pushup(u);
    }
    // 区间查询
    int query(int u,int l,int r)
    {
    	if(tr[u].l >= l && tr[u].r <= r)return tr[u].val;
    	int mid = tr[u].l + tr[u].r >> 1;
    	int val = -1;
    	if(l <= mid)val = max(val , query(ls , l , r));
    	if(r > mid) val = max(val , query(rs , l , r));
    	return val;
    }
    int main()
    {
    	int m , p , n = 0 ,val = 0;
    	cin >> m >> p;
    	build(1 , 1 , m);
    	for(int i = 0;i < m;i ++)
    	{
    		char op;int x;
    		cin >> op >> x;
    		if(op == 'A')
    		{
    			n++;
    			modify(1 , n , (x + val) % p);
    		}else {
    			val = query(1 , n - x + 1, n);
    			cout << val << endl;
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    java io系列23之 BufferedReader(字符缓冲输入流)
    java io系列22之 FileReader和FileWriter
    java io系列21之 InputStreamReader和OutputStreamWriter
    java io系列20之 PipedReader和PipedWriter
    java io系列19之 CharArrayWriter(字符数组输出流)
    java io系列18之 CharArrayReader(字符数组输入流)
    java io系列17之 System.out.println("hello world")原理
    java io系列16之 PrintStream(打印输出流)详解
    java io系列15之 DataOutputStream(数据输出流)的认知、源码和示例
    java io系列14之 DataInputStream(数据输入流)的认知、源码和示例
  • 原文地址:https://www.cnblogs.com/wlw-x/p/13455559.html
Copyright © 2011-2022 走看看