(比赛)A - Simple String Problem
A - Simple String Problem
Time Limit:10000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu
Description
In the process of repairing the network, workers can take two kinds of operations at every moment, repairing a computer, or testing if two computers can communicate. Your job is to answer all the testing operations.
Input
1. "O p" (1 <= p <= N), which means repairing computer p.
2. "S p q" (1 <= p, q <= N), which means testing whether computer p and q can communicate.
The input will not exceed 300000 lines.
Output
Sample Input
- 4 1
- 0 1
- 0 2
- 0 3
- 0 4
- O 1
- O 2
- O 4
- S 1 4
- O 3
- S 1 4
Sample Output
- FAIL
- SUCCESS
- //题意是,电脑都坏了,可以一个一个修复,电脑只能在一定的距离内才能连通,在询问是否连通的时候输出是否连通。
第一行是 n ,d ,d 是代表电脑能连通的最大距离,然后是 n 行坐标,在然后是命令 O 代表修复电脑,S 代表查询两个电脑是否连通- 并查集简单的应用,压缩了路径就只用了1秒
1125 ms
- #include <iostream>
- #include <stdio.h>
- #include <math.h>
- using namespace std;
- struct Com
- {
- int x,y;
- int on;
- }com[];
- int p[];
- int find(int x)
- {
- if (x!=p[x])
- p[x]=find(p[x]);
- return p[x];
- }
- int Distance(int a,int b,double x)
- {
- double j=(com[a].x-com[b].x)*(com[a].x-com[b].x);
- double k=(com[a].y-com[b].y)*(com[a].y-com[b].y);
- double l=sqrt(j+k);
- if (x<l)
- return ;
- return ;
- }
- int main()
- {
- int n,i;
- double s;
- scanf("%d%lf",&n,&s);
- for (i=;i<=n;i++)
- {
- scanf("%d%d",&com[i].x,&com[i].y);
- com[i].on=;
- p[i]=i;
- }
- char str[];
- int k;
- while(scanf("%s",str)!=EOF)
- {
- if (str[]=='O')
- {
- scanf("%d",&k);
- if (com[k].on==)
- continue;
- com[k].on=;
- for (i=;i<=n;i++)
- {
- if (i==k||com[i].on==) //未修复
- continue;
- if (Distance(i,k,s))//距离超出
- continue;
- int fa=find(k);
- int fb=find(i);
- p[fa]=fb;
- }
- }
- if (str[]=='S')
- {
- int a,b;
- scanf("%d%d",&a,&b);
- int fa=find(a),fb=find(b);
- if (fa==fb)
- {
- printf("SUCCESS\n");
- //没有这种情况
- /* if (a!=b)
- printf("SUCCESS\n");
- else if (a==b&&com[a].on)
- printf("SUCCESS\n");
- else
- printf("FAIL\n");*/
- }
- else
- printf("FAIL\n");
- }
- }
- return ;
- }
(比赛)A - Simple String Problem的更多相关文章
- FZU - 2218 Simple String Problem(状压dp)
Simple String Problem Recently, you have found your interest in string theory. Here is an interestin ...
- FZU - 2218 Simple String Problem 状压dp
FZU - 2218Simple String Problem 题目大意:给一个长度为n含有k个不同字母的串,从中挑选出两个连续的子串,要求两个子串中含有不同的字符,问这样的两个子串长度乘积最大是多少 ...
- fzu2218 Simple String Problem
Accept: 2 Submit: 16 Time Limit: 2000 mSec Memory Limit : 32768 KB Problem Description Recent ...
- FZU 2218 Simple String Problem(简单字符串问题)
Description 题目描述 Recently, you have found your interest in string theory. Here is an interesting que ...
- FZU2218 Simple String Problem(状压DP)
首先,定义S,表示前k个字符出现的集合,用二进制来压缩. 接下来,推出dp1[S],表示集合为S的子串的最长长度. 然后根据dp1[S]再推出dp2[S],表示集合为S或S的子集的子串的最长长度. 最 ...
- FZU-2218 Simple String Problem(状态压缩DP)
原题地址: 题意: 给你一个串和两个整数n和k,n表示串的长度,k表示串只有前k个小写字母,问你两个不含相同元素的连续子串的长度的最大乘积. 思路: 状态压缩DP最多16位,第i位的状态表示第i位 ...
- Water --- CSU 1550: Simple String
Simple String Problem's Link: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1550 Mean: 略. analy ...
- hdu4976 A simple greedy problem. (贪心+DP)
http://acm.hdu.edu.cn/showproblem.php?pid=4976 2014 Multi-University Training Contest 10 1006 A simp ...
- hdu 1757 A Simple Math Problem (乘法矩阵)
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
随机推荐
- 3. Spring Boot热部署【从零开始学Spring Boot】
转载:http://blog.csdn.net/linxingliang/article/details/51584549 在编写代码的时候,你会发现我们只是简单把打印信息改变了下,就需要重新部署,如 ...
- 倍福TwinCAT(贝福Beckhoff)基础教程1.2 TwinCAT安装配置
由于TC2和TC3都有可能用到,个人推荐都安装,但是注意必须是先安装的TwinCAT2,然后安装TwinCAT3,如果反了可能两个都没法用(打开TcSwitchRuntime提示Both TwinCA ...
- iOS11
_tab.estimatedRowHeight = 0; if (@available(iOS 11.0, *)) { //当有heightForHeader delegate时设置 _tab.est ...
- Java 调用存储过程、函数
一.Java调用存储Oracle存储过程 测试用表: --创建用户表 create table USERINFO ( username ) not null, password ) not null ...
- 标准库priority_queue的一种实现
优先级队列相对于普通队列,提供了插队功能,每次最先出队的不是最先入队的元素,而是优先级最高的元素. 它的实现采用了标准库提供的heap算法.该系列算法一共提供了四个函数.使用方式如下: 首先,建立一个 ...
- 字典树-HDOJ-1247-Hat’s Words
Hat's Words Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- 【经典数据结构】B树与B+树(转)
本文转载自:http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html 维基百科对B树的定义为“在计算机科学中,B树 ...
- C#中执行存储过程并在SQL server中调试
1.编写存储过程 ) drop PROCEDURE [dbo].[sp_calcPci_of_baseRcd_GTmpTbl] CREATE PROCEDURE [dbo].[sp_calcPci_o ...
- 使用Gitolite搭建Gitserver
Gitolite是一款Perl语言开发的Git服务管理工具.通过公钥对用户进行认证.并可以通过配置文件对些操作进行基于分支和路径的精细控制. Gitolite採用的是SSH协议而且使用SSH公钥认证. ...
- 【leetcode】118. Pascal's Triangle
@requires_authorization @author johnsondu @create_time 2015.7.23 19:54 @url [Pascal's Triangle](http ...