COJ 1697:模拟

题意:给一个边长A B C的长方体,求取出N个1*1*1的正方体后所剩几何体的表面积(包括内部)

思路:取出正方体后对原几何体表面积的影响,取决于取这个正方体前,其与原几何体接触的面数

比如说该正方体取出前有4个面和原几何体有联系,那取出后表面积+2

这样可以看到面数为0 1 2 3 4 5 6,分别对应表面积变化-6 -4 -2 0 2 4 6

以此考虑就好

#include"cstdio"
#include"queue"
#include"iostream"
using namespace std;
const int N = 2005;
struct node{
    long long x,y,z;
    node(){}
    node(long long a,long long b,long long c):x(a),y(b),z(c){}
}p[N];

int s[7];
int pre[N];
long long a,b,c,n;

int get_(node t){
    int ans=6;
    if(!t.x) ans--;
    if(!t.y) ans--;
    if(!t.z) ans--;
    if(t.x==a-1) ans--;
    if(t.y==b-1) ans--;
    if(t.z==c-1) ans--;
    return ans;
}

bool check(node a,node b){
    if(a.x==b.x&&a.y==b.y&&(a.z-b.z==1||a.z-b.z==-1)) return true;
    if(a.x==b.x&&a.z==b.z&&(a.y-b.y==1||a.y-b.y==-1)) return true;
    if(a.z==b.z&&a.y==b.y&&(a.x-b.x==1||a.x-b.x==-1)) return true;
    return false;
}

int main(){
    //freopen("in.txt","r",stdin);
    s[0]=-6;
    for(int i=1;i<=6;i++) s[i]=s[i-1]+2;
    while(~scanf("%lld%lld%lld%lld",&a,&b,&c,&n)){
        for(int i=0;i<n;i++){
            long long x,y,z;
            scanf("%lld%lld%lld",&x,&y,&z);
            p[i]=node(x,y,z);
        }

        long long ans=(a*b+b*c+a*c)*2;
        for(int i=0;i<n;i++) pre[i]=get_(p[i]);
        for(int i=0;i<n;i++){
            for(int j=0;j<i;j++)
                if(check(p[i],p[j]))
                    pre[i]--;
            ans+=s[pre[i]];
        }
        printf("%lld\n",ans);
    }
    return 0;
}
时间: 2024-10-18 22:33:50

COJ 1697:模拟的相关文章

0709模拟题

7.9模拟比赛 注:本场考试3道题,时间3个小时.全部为codevs上的题目 1.2124 美丽的大树 题目描述 Description 平江路是苏州最美丽的道路,路中间的绿化带上种了两行漂亮的大树,每行50棵,一共100棵大树,这些大树被编上了号,编号方式如下: 1 3 5 7 ………… 45 47 49 …………99     第一行 2 4 6 8 ………… 46 48 50 …………100    第二行 但是昨天晚上却发生了一件令人震惊的大事--可恶的破坏分子竟然偷去了这100棵大树中的一

C++编程实现对工厂产品生产流程的模拟

花费二个多月的时间编写了可以实时模拟工厂产品生产流程的程序,工厂产品生产流程的模拟,就是计算在工艺文件所规定的工序下,不同种类的多件产品(同一类别的产品可以有多件)在不同类别的多台设备(同一类别的设备可以有多台)上全部生产完毕所需的总时间.每一件产品可以在生产流程中先后多次在同一类设备上生产而且生产时间可以不同,某一给定时刻多件产品有可能需要在同一台设备上生产,造成设备占用冲突,这时必须按一定的算法对造成冲突的产品在设备等待队列上按优先级排队.产品在设备上加工完毕准备进入下一台设备生产时有同类型

CentOS系统启动及内核大破坏模拟实验

讲过了centos的启动流程,此时是不是想来点破坏呢?那就尽情的玩耍吧,记得在实验之前拍个快照,万一哪个环节错误恢复不回来了呢,毕竟数据无价,话不多说,开始. 一.删除伪系统根.(ramdisk文件) (1)模拟误操作删除ramdisk文件. ①模拟误删除initramfs-3.10.0-514.el7.x86_64.img文件. ②为当前正在使用的内核重新制作ramdisk文件 格式为:mkinitrd /boot/initramfs-$(uname -r).img $(uname -r) (

NYOJ 2356: 哈希计划【模拟】

题目描述 众所周知,LLM的算法之所以菜,就是因为成天打游戏,最近LLM突然想玩<金庸群侠传X>,结果进去后各种被虐,LLM就开始研究这个游戏的代码,顺便还学会了一点点点点lua语言,然后就开始了伟大的改游戏代码之旅,然后LLM发现自己too young了,这个游戏把所有的文本都进行了哈希,如果自己改了代码或者剧情文本的话它哈希出来的值就会和原来的哈希值不一样......然后游戏就会打不开.....,现在LLM发现了文本的哈希函数,要求你写个程序,功能为: 输入一段字符串,输出一个哈希值 为了

爬虫——模拟点击动态页面

动态页面的模拟点击: 以斗鱼直播为例:http://www.douyu.com/directory/all 爬取每页的房间名.直播类型.主播名称.在线人数等数据,然后模拟点击下一页,继续爬取 #!/usr/bin/python3 # -*- conding:utf-8 -*- __author__ = 'mayi' """ 动态页面的模拟点击: 模拟点击斗鱼直播:http://www.douyu.com/directory/all 爬取每页房间名.直播类型.主播名称.在线人数

爬虫——网站模拟登录

使用Selenium与PhantomJS模拟登录豆瓣:https://www.douban.com/ #!/usr/bin/python3 # -*- conding:utf-8 -*- __author__ = 'mayi' """ 模拟登录豆瓣:https://www.douban.com/ """ from selenium import webdriver # 调用环境变量指定的PhantomJS浏览器创建浏览器对象,executable

python爬虫 模拟登陆校园网-初级

最近跟同学学习爬虫的时候看到网上有个帖子,好像是山大校园网不稳定,用py做了个模拟登陆很有趣,于是我走上了一条不归路..... 先上一张校园网截图 首先弄清一下模拟登陆的原理: 1:服务器判定浏览器登录使用浏览器标识,需要模拟登陆 2: 需要post账号,密码,以及学校id python走起,我用的2.7版本,用notepad++写的,绑定python可以直接运行 由于是模拟网页登陆,需要导入urllib urllib2 cookielib库,前两个有与网页直接的接口,cookielib就是用来

Android模拟位置信息

Android模拟位置程序,俗称GPS欺骗,只能修改采用GPS定位的软件. 手机定位方式目前有4种:基站定位,WIFI定位,GPS定位,AGPS定位 常见的修改手法: 1. 抓包欺骗法,抓包改包欺骗服务器端, 但是得专门去针对某款app,而且现在很多app数据包都加密了 2. hook java层经纬度获取函数, 这个方法以前可以用,现在不行了 3. hook native层经纬度获取函数 4. 使用允许模拟地址位置信息(不是很通用有版本限制) 为了修改微信朋友圈地理位置信息,为了好玩 试过了上

CSU 1112: 机器人的指令【模拟题】

1112: 机器人的指令 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 1858  Solved: 682 [Submit][Status][Web Board] Description 数轴原点有一个机器人.该机器人将执行一系列指令,你的任务是预测所有指令执行完毕之后它的位置. ·LEFT:往左移动一个单位 ·RIGHT: 往右移动一个单位 ·SAME AS i: 和第i 条执行相同的动作.输入保证i 是一个正整数,且不超过之前执行指令数 In