zoukankan      html  css  js  c++  java
  • 集训作业 洛谷P3913 车的攻击

    这个题一开始被我想复杂了,但总体差不多。

    脑子清醒后我直接看他占领了几条长,几条宽,比如一个长3宽3的地图。

    被占领了一条宽,就可以看成一个长3宽2的地图。这个长3宽2的地图就是出去可以被攻击的点剩下的格子的数量。

    所以就可以写代码了:

    #include<iostream>
    #include<cstdio>
    #include<map>
    #include<cmath>
    #include<algorithm>
    using namespace std;
    long long s[1005];
    long long a,b,shu,zshu,shu2;
    long long x[1000005],y[1000005];
    int main()
    {
    	scanf("%lld%lld",&a,&b);
    	for(int i=0;i<b;i++)
    	{
    		scanf("%lld%lld",&x[i],&y[i]);
    	}
    	sort(x,x+b);
    	sort(y,y+b);
    	for(int i=0;i<b;i++)
    	{
    		if(x[i]!=x[i-1])//如果有一条新的宽被占领,我就把被占领的宽数+1
    		{
    			shu++;
    		}
    		if(y[i]!=y[i-1])//如果有一条新的长被占领,我就把被占领的长数+1
    		{
    			shu2++;
    		}
    	}
    	printf("%lld",a*a-(a-shu)*(a-shu2));//原来的大小减去不会被攻击到的大小就是会被攻击到的大小啦。
    	return 0;
    }
    

    总结:或许可以不用仔细的排查重复的攻击点,可以排查重复的攻击排呢。

  • 相关阅读:
    vue组件通信类型限制
    vue父子组件通信
    vue组件data必须是函数
    vue组件模块抽离
    vue局部组件语法糖
    leetcode刷题-47全排列2
    leetcode刷题-46全排列
    leetcode刷题-43字符串相乘
    leetcode刷题-40组合总和2
    leetcode刷题-39组合总和
  • 原文地址:https://www.cnblogs.com/lichangjian/p/12853497.html
Copyright © 2011-2022 走看看