kickstart-F
A题
Anagrams字符串是指两个字符串中都出现相同的字母且这些字母出现的次数相同。
小数据完全可以暴力,遍历A的子串,遍历B的子串,通过bool f(i,j,k,l)计算A[i,j], B[k,l]是否符合要求,其中f函数要做的就是统计字母出现次数O(L)复杂度,同时4重循环找两个子串,总的复杂度是O(L^5).
下面优化一下,两个子串不等长肯定false,所以可以省略一个循环,bool f(i,j,k,k+(j-i)), 复杂度O(L^4).
能不能再优化呢?空间换时间好了,预处理B的子串,将字母统计量hash数组num[26]转换为string存到set中,时间复杂度O(L^2),为什么这么少呢,因为大神解法省去了计算统计量的循环,已知B[i..j]就可以直接计算B[i..j+1]了. 再遍历A的子串,统计它的字母统计量后看set中是否存在,存在cnt++即可. 最后的时间复杂度O(L^2)。
B题
一定要仔细读题,任意两个path的距离不等,观察样例特点,发现可以变化的只发生在距离为0的点,互相连接的点。其中因为要求最短距离,所以每次只统计与当前点邻接的最短距离,并记录端点。
#include <iostream>
#include<stdio.h>
#include <set>
#include <string>
using namespace std; int main()
{
//freopen("/Users/zjg/CLionProjects/ac/B-large-practice.in","r",stdin);
//freopen("/Users/zjg/CLionProjects/ac/B-large-practice.out","w",stdout);
int T;
cin>>T;
for(int t=;t<=T;t++)
{
int v,e;
set<int> zero;
int nn[v];
int dis[v];
fill(dis,dis+v,);
for(int i=;i<e;i++)
{
int a,b,d;
cin>>a>>b>>d;
a--,b--;
if(d<dis[a])
{
dis[a]=d;
nn[a]=b;
}
if(d<dis[b])
{
dis[b]=d;
nn[b]=a;
}
if(d==)
{
zero.insert(a);
zero.insert(b);
}
}
long long ans=;
for(int i=;i<v;i++)
{
if(nn[i]==-)continue;
if(nn[nn[i]]==i)
{
ans<<=;
nn[nn[i]]=-;
nn[i]=-;
}
else if(zero.count(nn[i]))
ans<<=;
}
cout<<"Case #"<<t<<": "<<ans<<endl;
}
return ;
}
kickstart-F的更多相关文章
- Mysql_以案例为基准之查询
查询数据操作
- google Kickstart Round F 2017 四道题题解
Problem A. Kicksort 题意抽象一下为: 对于一个每次都从数列正中间取划分数的快速排序,给定一个1-n的排列,问快排的复杂度对于这个排列是否会退化为最坏复杂度. 数据范围: 测试组数1 ...
- KickStart 无人值守安装系统
一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...
- kickstart+ftp+tftp+dhcp+PXE
##########yum less install.log #看安装log yum install system-config-kickstart* -y yum install tftp* -y ...
- [转]CentOS 6.4下PXE+Kickstart无人值守安装操作系统
一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...
- 烂泥:KVM、kickstart与nginx集成
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 前几篇文章介绍了FTP.NFS与KVM.kickstart集成的案例,从这篇文章开始,我们来介绍HTTP方式与KVM.kickstart集成. HTTP ...
- 烂泥:KVM、kickstart与FTP集成
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在上一篇文章中,我们介绍了有关KVM.kickstart与NFS集成的相关内容.在这节我们将继续介绍FTP与KVM.kickstart集成的相关操作. ...
- 烂泥:KVM、kickstart与NFS集成
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 其实这篇文章原本是可以不写的,不过为了学习NFS的使用形式还是写下,算是作为一个笔记. 有关NFS的搭建与配置,可以参考我以前的文档<烂泥:NFS ...
- 烂泥:KVM与kickstart集成
本文由秀依林枫提供友情赞助,首发于烂泥行天下. KVM与kickstart集成在这里我要说明下,因为在前面有关CentOS无人值守安装的文章中,我提到过如果要使用网卡PXE功能的话,内网中必须有DHC ...
- CentOS6 PXE+Kickstart无人值守安装
一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...
随机推荐
- ES6学习笔记四(类和对象)
{ // 构造函数和实例 class Parent{ constructor(name='mukewan'){ this.name=name; } } let v_parent=new Parent( ...
- Git学习笔记04-管理修改
Git跟踪并管理的是修改,而非文件.新增文件,修改一行,删除一点,都算是修改. 在.git工作区新增一个文件,test.txt,输入test git ...然后git add add之后修改t ...
- 设计模式C++学习笔记之一(Strategy策略模式)
无意中,从网上下到一本电子书<24种设计模式介绍与6大设计原则>,很好奇这里有24种设计模式,印象中GOF写的<设计模式>(Design Patterns),好像只有23种吧. ...
- 判断鼠标进入容器的方向小Demo
参考资料: 贤心博客:http://sentsin.com/web/112.html, Math.atan2(y,x) 解释 :http://www.w3school.com.cn/jsref/jsr ...
- Laravel 5.2错误-----Base table or view not found: 1146 Table
报出这个问题,我想就是数据库表名不对导致的. 为什么呢?感觉laravel太强大了,很专业的感觉. 因为它对单词命名的单复数区分的很清楚吧.laravel会自动的将模型名自动替换成名称的复数形式,然后 ...
- 【原创】大数据基础之Flume(2)Sink代码解析
flume sink核心类结构 1 核心接口Sink org.apache.flume.Sink /** * <p>Requests the sink to attempt to cons ...
- [HTTP] 基本认证的工作流程
HTTP的基本认证涉及两个字段,一个是请求字段 Authorization: Authorization: Basic xxx 一个是响应字段 WWW-Authenticate WWW-Authent ...
- [MySql]GRANT权限的一些技巧
运用 '; 可以快速创建一个用户拥有某表的SELECT操作: 运用 SHOW GRANTS FOR 'test_1'@'localhost'; 分析该用户的最终GRANT权限: MySql默认把tes ...
- Python-Django-Ajax进阶
ajax上传文件: <h2>基于ajax上传文件</h2><p>名字 <input type="text" id="filena ...
- centos6.5 Python.7 pip install PIL --allow-external PIL --allow-unverified PIL报错 no such option: --allow-external
解决办法 pip install pillow 使用from PIL import Image ,正常!!