UVALive-7222 National Disaster【思维+排序+模拟】
来源:互联网 发布:河南胸模招聘淘宝 编辑:程序博客网 时间:2024/05/21 14:49
题目大意:
给你N个点的坐标,两个人互相能够看到的限制是两个人处于的位子的距离小于等于p.此时给你一个01矩阵,表示报告上写的内容,其中Aij如果是1的话,表示i能够看到j.
现在已知报告会有一部分错误,让你找到一个值p,使得错误最少。如果p有多解,输出最小值。
思路:
最多一共有200个点,那么一共就有40000种距离,我们不妨将其按照从小到大排序,那么初始的时候如果我们选定p==0.那么结果矩阵就是全0的.
那么此时作为初始结果矩阵,我们每一次将一种距离放置矩阵中,使得这个位子从0变成1.
过程维护一下最小值即可。
Ac代码:
#include<stdio.h>#include<iostream>#include<string.h>#include<algorithm>using namespace std;#define ll long long intstruct node{ ll x,y,diss;}b[500*500];ll x[5000];ll y[5000];ll dis[500][500];ll temp[500][500];ll a[500][500];ll n,sum,cnt;int cmp(node a,node b){ return a.diss<b.diss;}void init(){ cnt=0; for(ll i=0;i<n;i++) { for(ll j=0;j<n;j++) { dis[i][j]=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]); b[cnt].x=i; b[cnt].y=j; b[cnt].diss=dis[i][j]; cnt++; } }}int main(){ ll t; ll kase=0; scanf("%lld",&t); while(t--) { scanf("%lld",&n); memset(temp,0,sizeof(temp)); for(ll i=0;i<n;i++)scanf("%lld",&x[i]); for(ll i=0;i<n;i++)scanf("%lld",&y[i]); for(ll i=0;i<n;i++) { for(ll j=0;j<n;j++) { scanf("%lld",&a[i][j]); } } init(); sort(b,b+cnt,cmp); ll output,output2; ll sum=0; for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(temp[i][j]!=a[i][j])sum++; } } output2=sum,output=0; for(int i=0;i<cnt;i++) { temp[b[i].x][b[i].y]=1; if(a[b[i].x][b[i].y]==1) { sum--; } else { sum++; } if(i+1==cnt||b[i].diss!=b[i+1].diss) { if(sum<output2) { output2=sum; output=b[i].diss; } if(sum==output2) { output2=sum; output=min(output,b[i].diss); } } } printf("Case #%lld: ",++kase); printf("%lld %lld\n",output,output2); }}
0 0
- UVALive-7222 National Disaster【思维+排序+模拟】
- UVALive 7512 November 11th(模拟, 思维)
- uvalive 7635 National Bomb Defusing Squad (几何)
- 模拟 codeforces567B Berland National Library
- UVALive 7417 思维
- UVALive 7339 Owllen【思维】
- UVALive-7601 Football(思维)
- CodeForces 567B Berland National Library【思维】
- 思维模拟
- UvaLive-5713-Qin Shi Huang's National Road System
- UValive 5713 Qin Shi Huang's National Road System
- UVALive 3497 brainfuck [模拟]
- UVALive 4723 水模拟
- UVALive 6833 (模拟 水~)
- UVALive 7503--模拟
- UValive 7269 (模拟)
- UVALive 6833【模拟】
- UVALive 7327【模拟】
- POJ2528
- python中的文件名操作模块glob
- 二叉树两个结点的最低共同父结点
- Java学习笔记_004_补充_抽象类
- 【Linux网络编程】超时检测
- UVALive-7222 National Disaster【思维+排序+模拟】
- 关于MATLAB中imfilter函数的说明
- scp命令获取远程文件
- java中的“死锁”现象
- 基于GLT的FY-3气象卫星的几何校正
- 【敏捷开发每日一贴】需求管理和实例化需求
- 通过Http获取远程数据 转化为Class类的通用方法
- ALSA(lib和util)交叉编译与测试
- 操作系统------进程管理(进程)