• [每日一题]:糖糖别胡说,我真的不是签到题目


    题目:

    考察点:

    差分数组,思维。
    

    分析:

    Code:

    #include <set>
    #include <map>
    #include <stack>
    #include <queue>
    #include <deque>
    #include <vector>
    #include <cstdio>
    #include <string>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    
    #define x first
    #define y second
    
    #define INF 0x3f3f3f3f
    
    using namespace std;
    
    typedef long long LL;
    
    typedef pair<int,int>PII;
    
    const int maxn = 5e6 + 10;
    
    struct node {
    	int id,value;
    } cow[maxn];
    
    int c[maxn],d[maxn];
    
    int t,n,m;
    
    int main(void) {
    	scanf("%d",&t);
    	while(t --) {
    		// 多组测试样例,每次都需要初始化 差分数组 
    		memset(d,0,sizeof(d));
    		scanf("%d%d",&n,&m);
    		for(int i = 1; i <= n; i ++) {
    			scanf("%d%d",&cow[i].id,&cow[i].value);
    		}
    		// 进行区间操作 
    		for(int i = 1; i <= m; i ++) {
    			scanf("%d",&c[i]);
    			d[1] ++,d[c[i] + 1] --;
    		}
    		int s = 0;
    		// 得到发功后的新 B[i] 
    		for(int i = 1; i <= n; i ++) {
    			s += d[i];
    			cow[i].value += s; 
    		}
    		int ans = 0;
    		int max1 = -1,max2 = -1;
    		for(int i = n; i >= 1; i --) {
    			if(cow[i].id) {
    				max1 = max(max1,cow[i].value);
    				// 说明无法干掉 
    				if(cow[i].value >= max2) {
    					ans ++;
    				}
    			} else {
    				max2 = max(max2,cow[i].value);
    				if(cow[i].value >= max1) {
    					ans ++;
    				}
    			}
    		}
    		printf("%d
    ",ans);
    	}
    	return 0;
    }
    
  • 相关阅读:
    二级指针与二维数组
    二维数组的两种访问方式
    函数返回局部变量
    函数指针
    链表
    二叉树各种遍历
    二叉树常见问题
    C语言单链表实现19个功能完全详解
    halcon算子翻译——set_fuzzy_measure_norm_pair
    Halcon算子翻译——set_fuzzy_measure
  • 原文地址:https://www.cnblogs.com/prjruckyone/p/12741369.html
Copyright © 2020-2023  润新知