【bitset】【推导】hdu5961 传递
<法一>http://blog.csdn.net/u014325920/article/details/53046890
1、判断传递的条件为:若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c。
2、我们去枚举b,我们假设集合Sb={x|x−>b}表示有一条x指向b的边。我们假设集合Tb={x|b−>x},表示有有一条b指向x的边。
3、我们再去枚举Sb中的元素,假设我们当前枚举的是x,因为x是指向b的,所以我们根据题意容易得知该图是传递图的话一定满足:Tx∩Tb=Tb,然后就可以得出答案了,至于怎么处理集合的并,我们可以用bitset搞搞就可以了!!!具体看代码。
<法二>http://www.cnblogs.com/zarth/p/6671252.html

给出法一的代码
#include<cstdio>
#include<bitset>
using namespace std;
bitset<2030> S[2030];
int T,n;
char a[2030][2030];
int main(){
scanf("%d",&T);
for(;T;--T){
for(int i=1;i<=n;++i){
S[i].reset();
}
scanf("%d",&n);
for(int i=1;i<=n;++i){
scanf("%s",a[i]+1);
}
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
if(a[i][j]=='P'){
S[i].set(j);
}
}
}
bool flag=1;
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
if(a[i][j]=='P'){
if((S[j]|S[i])!=S[i]){
flag=0;
goto OUT;
}
}
}
}
OUT:
if(!flag){
puts("N");
continue;
}
flag=1;
for(int i=1;i<=n;++i){
S[i].reset();
}
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
if(a[i][j]=='Q'){
S[i].set(j);
}
}
}
for(int i=1;i<=n;++i){
for(int j=1;j<=n;++j){
if(a[i][j]=='Q'){
if((S[j]|S[i])!=S[i]){
flag=0;
goto OUT2;
}
}
}
}
OUT2:
if(!flag){
puts("N");
}
else{
puts("T");
}
}
return 0;
}
【bitset】【推导】hdu5961 传递的更多相关文章
- HDU5961 传递
传递 因为文化课复习实在捉急qwq,题解就一切从简了qwq 简单说一说 上来一看这道题没看出来突破点在哪... 去HDU上看原题,发现原题是带样例的图解的,然鹅还是没找到思路(太菜了吧) 没办法看了一 ...
- python 函数的参数定义及调用
参数定义:1. 位置参数: 这是熟悉的标准化参数,位置参数必须在调用函数中定义的准确顺序来传递,在没有默认参数的情况下,传入参数 的精确数目必须和声明的数目一致. def foo(who, ...
- hdu_5961_传递(bitset)
题目链接:hdu_5961_传递 题意: 中文,不解释 题解: 上bitset卡常,很优美的就过去了 #include<bits/stdc++.h> #define F(i,a,b) fo ...
- POJ3275:Ranking the Cows(Bitset加速floyd求闭包传递)
Each of Farmer John's N cows (1 ≤ N ≤ 1,000) produces milk at a different positive rate, and FJ woul ...
- [CSP-S模拟测试]:传递(暴力+bitset)
题目描述 我们称一个有向图$G$是传递的,当且仅当对于图$G$的三个不同顶点$a,b,c$,若图$G$中有一条边从$a$到$b$且有一条边从$b$到$c$,那么图中也有一条边从$a$到$c$.我们称一 ...
- 分布式系列文章——Paxos算法原理与推导
Paxos算法在分布式领域具有非常重要的地位.但是Paxos算法有两个比较明显的缺点:1.难以理解 2.工程实现更难. 网上有很多讲解Paxos算法的文章,但是质量参差不齐.看了很多关于Paxos的资 ...
- RNN求解过程推导与实现
RNN求解过程推导与实现 RNN LSTM BPTT matlab code opencv code BPTT,Back Propagation Through Time. 首先来看看怎么处理RNN. ...
- bzoj1045 糖果传递
escription 老师准备了一堆糖果, 恰好n个小朋友可以分到数目一样多的糖果. 老师要n个小朋友去拿糖果, 然后围着圆桌坐好, 第1个小朋友的左边是第n个小朋友, 其他第i个小朋友左边是第i-1 ...
- 图说函数模板右值引用参数(T&&)类型推导规则(C++11)
见下图: 规律总结: 只要我们传递一个基本类型是A④的左值,那么,传递后,T的类型就是A&,形参在函数体中的类型就是A&. 只要我们传递一个基本类型是A的右值,那么,传递后,T的类型就 ...
随机推荐
- Spring 路由地址的基本使用
1.下面是spring的使用基本框架连接 https://www.cnblogs.com/HD/p/4103239.html
- 什么是AMD规范
AMD规范全称是Asynchronous Module Definition,即异步模块加载机制.从它的规范描述页面看,AMD很短也很简单,但它却完整描述了模块的定义,依赖关系,引用关系以及加载机制. ...
- Perl6 Bailador框架(4):路径匹配
use v6; use Bailador; =begin pod /:one/:two/:....路径选择 这个路径, 用/分隔 每个/分隔一个, 如果你只设置两个(/admin/login),时, ...
- Android 聊天软件客户端
1.代码架构图 2.qq.model层 3.qq.app层 4.qq.Constatnt层 5.qq.util层 6.qq.broadcast层 7.qq.control层 8.qq.view层 9. ...
- Shell脚本 - nginx启动脚本
OS:CentOS/Redhat 系列 并在 Centos 6.7 和 Centos 7.2 上测试正常 #!/bin/bash # # auth: daxin # time: 2018/07/10 ...
- Python3 文件基本操作
Python文件的打开模式有: r,只读模式(默认).w,只写模式.[不可读:不存在则创建:存在则删除内容:]a,追加模式.[可读: 不存在则创建:存在则只追加内容:]"+" 表示 ...
- Git常规配置与基本用法
Git环境配置 一. 全局配置 1. 配置文件 git全局配置文件.gitconfig默认在当前系统用户文件夹下,window可运行%USERPROFILE%查找,Mac系统在cd ~查找. 具体配置 ...
- python基础===tkinter学习链接
http://effbot.org/tkinterbook/tkinter-classes.htm
- leetcode 之Reverse Linked List II(15)
这题用需要非常细心,用头插法移动需要考虑先移动哪个,只需三个指针即可. ListNode *reverseList(ListNode *head, int m, int n) { ListNode d ...
- 安装Hadoop2.7和hive2.0以及redis
安装过程很简单,主要记录期间碰到的问题: 安装过程: 下载安装包: hadoop:http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7. ...