HDU 3682 水模拟
n*n*n的图形,m条线,每条线上的方格被删除。问一共删除了多少个方格
ans=m*n 。然后推断一下直线相交的交点。去重就可以
#include "stdio.h"
#include "string.h"
int xy[1010][1010],xz[1010][1010],yz[1010][1010],hash[1010]; struct node
{
int x,y,z;
} mark[1010];
int main()
{
int Case,n,m,i,j,cnt,a,b,ans,sum;
char ch1,ch2;
scanf("%d",&Case);
while (Case--)
{
scanf("%d%d",&n,&m);
if (m==0)
{
printf("0\n");
continue;
}
memset(xy,0,sizeof(xy));
memset(xz,0,sizeof(xz));
memset(yz,0,sizeof(yz)); cnt=0;
while (m--) // 去重边
{
getchar();
scanf("%c=%d,%c=%d",&ch1,&a,&ch2,&b);
if (ch1=='X' && ch2=='Y' && xy[a][b]==0)
{
mark[cnt].x=a;
mark[cnt].y=b;
mark[cnt++].z=-1;
xy[a][b]=1;
}
if (ch1=='Y' && ch2=='X' && xy[b][a]==0)
{
mark[cnt].x=b;
mark[cnt].y=a;
mark[cnt++].z=-1;
xy[b][a]=1;
}
if (ch1=='X' && ch2=='Z' && xz[a][b]==0)
{
mark[cnt].x=a;
mark[cnt].z=b;
mark[cnt++].y=-1;
xz[a][b]=1;
}
if (ch1=='Z' && ch2=='X' && xz[b][a]==0)
{
mark[cnt].x=b;
mark[cnt].z=a;
mark[cnt++].y=-1;
xz[b][a]=1;
}
if (ch1=='Y' && ch2=='Z' && yz[a][b]==0)
{
mark[cnt].y=a;
mark[cnt].z=b;
mark[cnt++].x=-1;
yz[a][b]=1;
}
if (ch1=='Z' && ch2=='Y' && yz[b][a]==0)
{
mark[cnt].y=b;
mark[cnt].z=a;
mark[cnt++].x=-1;
yz[b][a]=1;
}
} ans=n;
for (i=1; i<cnt; i++) //去重点
{
memset(hash,0,sizeof(hash));
sum=n;
for (j=0; j<i; j++)
{
if (mark[i].x==mark[j].x && mark[i].x!=-1)
{
if (mark[i].y==-1 && mark[j].y!=-1)
{
if (hash[mark[j].y]==0)
sum--;
hash[mark[j].y]=1;
}
if (mark[i].z==-1 && mark[j].z!=-1)
{
if (hash[mark[j].z]==0)
sum--;
hash[mark[j].z]=1;
}
} if (mark[i].y==mark[j].y && mark[i].y!=-1)
{
if (mark[i].x==-1 && mark[j].x!=-1)
{
if (hash[mark[j].x]==0)
sum--;
hash[mark[j].x]=1;
}
if (mark[i].z==-1 && mark[j].z!=-1)
{
if (hash[mark[j].z]==0)
sum--;
hash[mark[j].z]=1;
}
} if (mark[i].z==mark[j].z && mark[i].z!=-1)
{
if (mark[i].x==-1 && mark[j].x!=-1)
{
if (hash[mark[j].x]==0)
sum--;
hash[mark[j].x]=1;
}
if (mark[i].y==-1 && mark[j].y!=-1)
{
if (hash[mark[j].y]==0)
sum--;
hash[mark[j].y]=1;
}
}
} ans+=sum;
}
printf("%d\n",ans);
}
return 0;
}
HDU 3682 水模拟的更多相关文章
- hdu 3682 10 杭州 现场 C - To Be an Dream Architect 简单容斥 难度:1
C - To Be an Dream Architect Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d &a ...
- hdu 3682 10 杭州 现场 C To Be an Dream Architect 容斥 难度:0
C - To Be an Dream Architect Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d &a ...
- CodeForces.158A Next Round (水模拟)
CodeForces.158A Next Round (水模拟) 题意分析 校赛水题的英文版,坑点就是要求为正数. 代码总览 #include <iostream> #include &l ...
- CodeForces.71A Way Too Long Words (水模拟)
CodeForces71A. Way Too Long Words (水模拟) 题意分析 题怎么说你怎么做 没有坑点 代码总览 #include <iostream> #include & ...
- HDU-1042-N!(Java大法好 && HDU大数水题)
N! Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Subm ...
- Intel Code Challenge Elimination Round (Div.1 + Div.2, combined) A B C D 水 模拟 并查集 优先队列
A. Broken Clock time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- HDU 4121 Xiangqi 模拟题
Xiangqi Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4121 ...
- hdu 5071 Chat(模拟)
题目链接:hdu 5071 Chat 题目大意:模拟题. .. 注意最后说bye的时候仅仅要和讲过话的妹子说再见. 解题思路:用一个map记录每一个等级的妹子讲过多少话以及是否有这个等级的妹子.数组A ...
- hdu 4740【模拟+深搜】.cpp
题意: 给出老虎的起始点.方向和驴的起始点.方向.. 规定老虎和驴都不会走自己走过的方格,并且当没路走的时候,驴会右转,老虎会左转.. 当转了一次还没路走就会停下来.. 问他们有没有可能在某一格相遇. ...
随机推荐
- rocketmq,zookeeper,redis分别持久化的方式
1.rocketmq持久化: RocketMQ 的所有消息都是持久化的, 先写入系统 PAGECACHE, 然后刷盘, 可以保证内存与磁盘都有一份数据,访问时,直接从内存读取. RocketMQ 的所 ...
- JavaScript -- 清除缓存
在客户端有一个HTML文件,用来提交输入信息,问题在于:每次按刷新时,发觉并不是整个页面重新被装载,好似是缓存中. 因为文本框中仍出现上次输入的值,只有在地址栏中按回车整个页面才重新装载,应当怎样避免 ...
- 为什么控制台console.log一个值,总是会多一个undefined
我们发现在浏览器控制台打印东西的时候,末尾总是会莫名其妙多出一个undefined? 这是为什么呢? 大胆猜测一下,应该执行的函数没有返回值,而浏览器默认要打印出执行函数的返回值,才会打印undefi ...
- git 命令02
1.怎么添加远程库2.克隆一个远程库3.什么是分支管理4.什么是标签管理3.搭建git服务器 1.添加远程库.我以github官网上提供给用户注册https://github.com/,可以在官网了自 ...
- Linq之旅:Linq入门详解(Linq to Objects)【转】
http://www.cnblogs.com/heyuquan/p/Linq-to-Objects.html Linq之旅:Linq入门详解(Linq to Objects) 示例代码下载:Linq之 ...
- linux下软件的更新命令
linux下软件的更新命令 在ubuntu服务器下安装包的时候,经常会用到sudo apt-get install 包名 或 sudo pip install 包名,那么两者有什么区别呢? 1.区 ...
- Android视图SurfaceView的实现原理分析(示例,出错代码)
在Android系统中,有一种特殊的视图,称为SurfaceView,它拥有独立的绘图表面,即它不与其宿主窗口共享同一个绘图表面.由于拥有独立的绘图表面,因此SurfaceView的UI就可以在一个独 ...
- jquery点击li标签之后在该li标签上添加一个class,点击下一个li时删除上一个li的class
思路:点击当前li元素后是用removeClass()删除所有兄弟元素(使用siblings()获取)的class样式,然后使用addClass()为当前li添加class 具体演示如下: 1.HTM ...
- php fopen函数返回false
使用yum安装的apache2.4.6 php 7.2.2 正确安装后使用fopen()函数打开文件时返回false 百度一下又三种原因 1.目录或者文件夹权限原因 (可以用 chmod - ...
- java中Token验证
什么是Token:它是一个令牌,随机不可预测的. 为什么需要使用Token: 1,防止表单的重复提交 2:,防止跨站点的请求伪造 Token的使用流程是:首先在服务器端生成一个随机的token值并在服 ...