博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SRM 628 DIV2
阅读量:5290 次
发布时间:2019-06-14

本文共 1061 字,大约阅读时间需要 3 分钟。

250  想想就发现规律了。

500  暴力,括号匹配。

1000

给一个f数组,如果i存在,那么f[i]也得存在,问这样的集合有多少种。

先拓扑一下,dp[i] = mul(dp[son]+1)最后环里面的元素的乘积是结果。

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define LL long longint p[51][51],o[51],flag[51],nt[51];LL dp[51];LL temp;void dfs(int x){ flag[x] = 1; temp *= dp[x]; if(flag[nt[x]] == 1) return ; flag[nt[x]] = 1; dfs(nt[x]);}class InvariantSets{ public : LL countSets(vector
f) { int i,j,n,z; LL ans = 1; n = f.size(); for(i = 0;i < n;i ++) { p[i][f[i]] = 1; dp[i] = 1; nt[i] = f[i]; o[f[i]] ++; } for(;;) { z = 0; for(i = 0;i < n;i ++) { if(o[i] == 0&&!flag[i]) { flag[i] = 1; z = 1; for(j = 0;j < n;j ++) { if(p[i][j] == 1&&!flag[j]) { dp[j] *= (dp[i] + 1); o[j] --; } } } } if(!z) break; } for(i = 0;i < n;i ++) { temp = 1; if(flag[i] == 0) { dfs(i); ans *= (temp+1); } } return ans; }};
View Code

 

转载于:https://www.cnblogs.com/naix-x/p/3876201.html

你可能感兴趣的文章
上海2017QCon个人分享总结
查看>>
HIVE快速入门 分类: B4_HIVE 2015-...
查看>>
Mysql安装方法及安装问题解决
查看>>
Java动态代理的两种实现方式:
查看>>
PHP trait
查看>>
Redis的常用命令(三)
查看>>
HDOJ 4749 Parade Show
查看>>
python 多线程并发threading & 任务队列Queue
查看>>
【黑马程序员】资深程序员的见解
查看>>
1_fbauto
查看>>
IO体系、集合体系、多线程、jdbc
查看>>
关于时间:UTC/GMT/xST/ xDT
查看>>
[51Nod1089] 最长回文子串 V2(Manacher算法)
查看>>
Asp.Net生命周期系列六
查看>>
php引用 =& 详解
查看>>
Codeforces 914D Bash and a Tough Math Puzzle (ZKW线段树)
查看>>
POJ 3009: Curling 2.0
查看>>
DLNA介绍(包含UPnP,2011/6/20 更新)
查看>>
ANGULARJS5从0开始(2) - 整合bootstrap和font-awesome
查看>>
Android 使用Parcelable序列化对象
查看>>