2011 Multi-University Training Contest 1 - Host by HNUEarth Hour

2024-01-10 07:58

本文主要是介绍2011 Multi-University Training Contest 1 - Host by HNUEarth Hour,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 这道题木想到竟然可以转发为最短路问题,,让我纠结了近一个下午,,更悲剧的是spfa竟然写错了,,,下面说一下题意,就是在世界日这一天里为了响应号召某大学决定关掉除到图书馆,自习室,寝室的路灯,最后问最多可以关多少路灯,,思路:根据路灯的照射范围判断两个地方是不是相通如果相通就连成边同时把边权设置为1,然后求3次最短路径,,再枚举各个点找到dis1[i]+dis2[i]+dis3[i]最小的那个从而得出最多可以关的路灯。。。

AC代码:

#include<iostream>
#include<algorithm>
#include<string.h>
#include<queue>
#include<vector>
#define N 201
#define M 0xfffffff
using namespace std;
typedef struct
{ int x;int y;int r;
}Point;
typedef struct
{ int v;int len;
}Node;
vector<Node> map[N];
Point t[N];
int dis1[N],dis2[N],dis3[N];
bool visit[N];
int n,i,j;
int max(int a,int b)
{if(a>b) return a;else return b;
}
void spfa(int s,int dis[])
{ memset(visit,false,sizeof(visit));for(i=0;i<n;++i)dis[i]=M;dis[s]=0;visit[s]=true;queue<int>Q;Q.push(s);while(!Q.empty()){  int  now=Q.front();Q.pop();visit[now]=false;int len=map[now].size();for(i=0;i<len;++i)if(dis[map[now][i].v]>map[now][i].len+dis[now]){   dis[map[now][i].v]=map[now][i].len+dis[now];if(!visit[map[now][i].v]){Q.push(map[now][i].v);visit[map[now][i].v]=true;}}}
}
int main()
{  int Case;cin>>Case;while(Case--){ cin>>n;for(i=0;i<n;++i)map[i].clear();for(i=0;i<n;++i)cin>>t[i].x>>t[i].y>>t[i].r;for(i=0;i<n-1;++i)for(j=i+1;j<n;++j){  Node p;int s1=(t[i].x-t[j].x)*(t[i].x-t[j].x)+(t[i].y-t[j].y)*(t[i].y-t[j].y);int s2=(t[i].r+t[j].r)*(t[i].r+t[j].r);if(s1<=s2){ p.v=j;p.len=1;map[i].push_back(p);p.v=i;map[j].push_back(p);}}spfa(0,dis1);spfa(1,dis2);spfa(2,dis3);int ans=-1;for(i=0;i<n;++i)if(dis1[i]<M&&dis2[i]<M&&dis3[i]<M)ans=max(ans,n-(dis1[i]+dis2[i]+dis3[i]+1));cout<<ans<<endl;}return 0;}


 

这篇关于2011 Multi-University Training Contest 1 - Host by HNUEarth Hour的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/590097

相关文章

2014 Multi-University Training Contest 8小记

1002 计算几何 最大的速度才可能拥有无限的面积。 最大的速度的点 求凸包, 凸包上的点( 注意不是端点 ) 才拥有无限的面积 注意 :  凸包上如果有重点则不满足。 另外最大的速度为0也不行的。 int cmp(double x){if(fabs(x) < 1e-8) return 0 ;if(x > 0) return 1 ;return -1 ;}struct poin

2014 Multi-University Training Contest 7小记

1003   数学 , 先暴力再解方程。 在b进制下是个2 , 3 位数的 大概是10000进制以上 。这部分解方程 2-10000 直接暴力 typedef long long LL ;LL n ;int ok(int b){LL m = n ;int c ;while(m){c = m % b ;if(c == 3 || c == 4 || c == 5 ||

2014 Multi-University Training Contest 6小记

1003  贪心 对于111...10....000 这样的序列,  a 为1的个数,b为0的个数,易得当 x= a / (a + b) 时 f最小。 讲串分成若干段  1..10..0   ,  1..10..0 ,  要满足x非递减 。  对于 xi > xi+1  这样的合并 即可。 const int maxn = 100008 ;struct Node{int

AtCoder Beginner Contest 370 Solution

A void solve() {int a, b;qr(a, b);if(a + b != 1) cout << "Invalid\n";else Yes(a);} B 模拟 void solve() {qr(n);int x = 1;FOR(i, n) FOR(j, i) qr(a[i][j]);FOR(i, n) x = x >= i ? a[x][i]: a[i][x];pr2(

Post-Training有多重要?一文带你了解全部细节

1. 简介 随着LLM学界和工业界日新月异的发展,不仅预训练所用的算力和数据正在疯狂内卷,后训练(post-training)的对齐和微调方法也在不断更新。InstructGPT、WebGPT等较早发布的模型使用标准RLHF方法,其中的数据管理风格和规模似乎已经过时。近来,Meta、谷歌和英伟达等AI巨头纷纷发布开源模型,附带发布详尽的论文或报告,包括Llama 3.1、Nemotron 340

CF Bayan 2015 Contest Warm Up B.(dfs+暴力)

B. Strongly Connected City time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/475/probl

CF Bayan 2015 Contest Warm Up A.(模拟+预处理)

A. Bayan Bus time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/475/problem/A The fi

AtCoder Beginner Contest 369 D - Bonus EXP 动态规划

原题链接: https://atcoder.jp/contests/abc369/tasks/abc369_d 思路:   这道题为什么要用动态规划呢,其实,对于第i个怪物,我们有打与不打两种处理方式,而对于打,我们是获得两倍的经验值,还是一倍的经验值,与我们打了奇数只怪物还是打了偶数只怪物有关了,因此我们定义dp[i][0] 为前i只怪物总共打了偶数次,dp[i][1] 为前i只怪物总

【硬刚ES】ES基础(二十一) 单字符串多字段查询:Multi Match

本文是对《【硬刚大数据之学习路线篇】从零到大数据专家的学习指南(全面升级版)》的ES部分补充。

linux下 ping: unknown host www.baidu.com” 解决方法

问题现象 :   ping 和 telnet 都无法正常使用   而nslookup 可以正常解析到域名 $ ping  www.baidu.com  ping: unknown host  www.baidu.com $ telnet baidu.com 80  baidu.com/80: Name or service not known