zoukankan      html  css  js  c++  java
  • 202104 csp

    • 1.灰度直方图

      样例输入
      4 4 16
      0 1 2 3
      4 5 6 7
      8 9 10 11
      12 13 14 15

    样例输出
    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

    样例输入
    7 11 8
    0 7 0 0 0 7 0 0 7 7 0
    7 0 7 0 7 0 7 0 7 0 7
    7 0 0 0 7 0 0 0 7 0 7
    7 0 0 0 0 7 0 0 7 7 0
    7 0 0 0 0 0 7 0 7 0 0
    7 0 7 0 7 0 7 0 7 0 0
    0 7 0 0 0 7 0 0 7 0 0

    样例输出
    48 0 0 0 0 0 0 29

    #include<iostream>
    #include<cstring>
    #include<map>
    #include<iterator>
    using namespace std;
    int n;
    int m;
    int l;
    int main(){
    cin>>n>>m>>l;
    map<int,int> h;
    for(int i=0;i<l;i++){
        h[i]=0;
    }
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++){
           int value;
           cin>>value;
           h[value]++;
        }
    }
    for(map<int,int>::iterator it=h.begin();it!=h.end();it++){
        cout<<it->second<<" ";
    }
    return 0;
    }
    
    • 2.邻域均值


      样例输入
      4 16 1 6
      0 1 2 3
      4 5 6 7
      8 9 10 11
      12 13 14 15

    样例输出
    7

    样例输入
    11 8 2 2
    0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0
    0 7 0 0 0 7 0 0 7 7 0
    7 0 7 0 7 0 7 0 7 0 7
    7 0 0 0 7 0 0 0 7 0 7
    7 0 0 0 0 7 0 0 7 7 0
    7 0 0 0 0 0 7 0 7 0 0
    7 0 7 0 7 0 7 0 7 0 0
    0 7 0 0 0 7 0 0 7 0 0
    0 0 0 0 0 0 0 0 0 0 0
    0 0 0 0 0 0 0 0 0 0 0

    样例输出
    83

    70分

    #include<iostream>
    #include<vector>
    using namespace std;
    int n,l,r,t;
    int ans = 0;
    class Point{
    public:
        int x;
        int y;
        int value;
    };
    int isNeighbor(Point p1,Point p2){
    if(abs(p1.x-p2.x)<=r&&abs(p1.y-p2.y)<=r) return 1;
    return 0;
    }
    int main(){
    cin>>n>>l>>r>>t;
    vector<Point> v;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++){
            int value;
            cin>>value;
            Point p={i,j,value};
            v.push_back(p);
        }
    }
    for(int i=0;i<v.size();i++){
            double sum=0;
            double num=0;
        for(int j=0;j<v.size();j++){
        if(isNeighbor(v[i],v[j])) {
          
            num++;
            sum+=v[j].value;
        }
       }
       sum/=num;
    
       if(sum<=t) ans++;
    }
    cout<<ans;
    return 0;
    }
    

    优化
    使用前缀和
    [https://blog.csdn.net/CS_Kevin_1/article/details/115605466]
    [https://tigerisland.blog.csdn.net/article/details/119704146]
    主要是利用前面计算好的计算下一个(感觉像DP)
    1.先计算以(i,j)为右下角的矩阵
    2.找出递推关系
    若r=1,要计算15的领域和(即红框),则需用绿-紫-粉+棕(因为棕色被减了两次)

    ljm要加油
  • 相关阅读:
    tomcat 配置ssi
    oracle exp imp 导入 正在跳过表 plsql 导入表 成功终止 数据 被导入
    oracle 创建数据表空间和用户
    移动端开发来个总结吧
    ssl四次握手
    面试-布局
    typeof的原理?
    马上面试了就,复习一下排序
    关于webview无法设置页面标题
    关于let的生命提升
  • 原文地址:https://www.cnblogs.com/ljmmm1/p/15614556.html
Copyright © 2011-2022 走看看