首页 > TAG信息列表 > POI2008

解题报告——P3477 [POI2008]PER-Permutation

这道题如果不是任意模数的话还是比较平凡的( 这道题的式子其实很好推,根据康托展开的思路,一位一位考虑,只不过是多重集,可能有重复情况,排除即可,每一位的式子为: \[ans_i=\dfrac{(n-i)!}{\prod cnt_j}\times\sum^n_{k=i+1}[ a_k<a_i] \](\(cnt_j\) 为 \(i-n\) 之间 \(j\) 的个数,\(a_i\)

[POI2008]BLO-Blockade

P3469 [POI2008]BLO-Blockade 题意: 有一个连通的有向图,求出删除一个点后,不能连通的点对的个数 (\((x,y),(y,x)\) 算两对) 分析: 很明显,既然涉及到环类求点集的题目,很明显是 \(tarjan\) 。 有一个性质: 从一个点集到另一个点集,形成的点对个数(相反算两对) 是:\(2 \times size[x]*size[

8.7日 Dp/贪心 专场模拟赛

 感觉挑的题都很好 T1   T2   T3   T4       [SDOI2012]吊灯 [NOI2014] 随机数生成器   [POI2008]MAF-Mafia [SCOI2008] 奖励关

[POI2008]PER

很有思维的一道题 这个题的题面非常简单,出题人很友好,没有搞什么奇怪的背景,(卡农(P3214)的作者看看人家),所以理解题面就是: 一句话题意: 给定一个长度为 \(n\) 的数列,求这个数列是在其全排列中的排名是多少,输出排名 \(mod\) \(m\) 的结果。 赵小兵同学:这不就是个康托展开嘛,看我A掉这个大

Blockade(tarjan求割点...)-poi2008

Blockade(tarjan求割点...)-poi2008 题意:n个点,m条边双向连通,无重边,自环;输出n个数,代表把第i个点去掉后,有多少访问不能发生a->b ≠b->a; 解:对于一个点有两种情况: 1,非割点:结果(n-1)*2,这个点不能到别的店,别的点也不能到这个点; 2,割点。 判断一个点是否为割点 1,对于根节点,计算其子树数量,

P3469 [POI2008]BLO-Blockade

P3469 题解 题意 给出一张有\(n\)个点,\(m\)条边的无向连通图,问对于每个节点\(i\),去掉与\(i\)相连的所有边后,有多少对有序点对\((x,y)\)不再连通。 分析 根据割点的定义可知,若\(i\)不为割点,则只有剩下的\(n-1\)对点不与\(i\)联通,答案为\(2(n-1)\)。 若\(i\)为割点,则原图一定被分为

[POI2008] CLO

zz:http://hzwer.com/3010.htmlByteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 你要把其中一些road变成单向边使得:每个town都有且只有一个入度Input第一行输入n m.1 <= n<= 100000,1 <= m <= 200000 下面M行用于描述M条边.OutputTAK或

BZOJ1113: [Poi2008]海报PLA

Description N个矩形,排成一排. 现在希望用尽量少的矩形海报Cover住它们. Input 第一行给出数字N,代表有N个矩形.N在[1,250000] 下面N行,每行给出矩形的长与宽.其值在[1,1000000000]2 1/2 Postering Output 最少数量的海报数.   题解:先假设一共盖住一个矩形需要一张海报,那么

POI2008 CLO-Toll

[POI2008]CLO-Toll 题意描述 Byteotia城市有n个 towns m条双向roads. 每条 road 连接 两个不同的 towns ,没有重复的road. 你要把其中一些road变成单向边使得:每个town都有且只有一个入度 题解: 这道题是并查集的一种应用。 我们在大脑中开始想象。 所有点入度都为1是一种什么样子的

[POI2008]PER-Permutation

[POI2008]PER-Permutation 带重复的康托展开! 根本不需要中国剩余定理就可以A掉! 看完题面你会惊人地发现这好像一个康托展开!(显然是不同的啦) 首先我们来看康托展开这个东西在数组为排列时怎么打 ------->度娘 int cantor(int a[],int n){//cantor展开,n表示是n位的全排列,a[]表示全

luogu 3467 [POI2008]PLA-Postering 单调栈

Code: #include<bits/stdc++.h>#define setIO(s) freopen(s".in","r",stdin) #define ll long long using namespace std; ll sta[300000],x,y; int main(){ int n,tp=0; scanf("%d%lld%lld",&n,&x,&y); sta[++tp]

BZOJ1123 [POI2008]BLO(割点判断 + 点双联通缩点size)

1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 using namespace std; 5 6 typedef long long ll; 7 const int maxn = 1e5 + 5; 8 const int maxm = 5e5 + 5; 9 int dfn[maxn], low[maxn], head[maxn];10 ll ans[maxn], siz[maxn];1

BZOJ1112[POI2008]砖块Klo——非旋转treap

题目描述 N柱砖,希望有连续K柱的高度是一样的. 你可以选择以下两个动作 1:从某柱砖的顶端拿一块砖出来,丢掉不要了. 2:从仓库中拿出一块砖,放到另一柱.仓库无限大. 现在希望用最小次数的动作完成任务. 输入 第一行给出N,K. (1 ≤ k ≤ n ≤ 100000), 下面N行,每行代表这柱砖的高

BZOJ.1132.[POI2008]Tro(极角排序)

BZOJ 洛谷 考虑暴力,每次枚举三个点,答案就是\(\frac12\sum_{k<j<i}(i-k)\times(j-k)\)。 注意到叉积有分配率,所以固定\(k\),枚举\(i,j\),\(Ans=\frac12\sum_{k<i}(i-k)\sum_{k<j<i}(j-k)\),前缀和即可。 还有个问题是叉积是有符号的。初始时将所有点按\((y,x)\)排序,枚举\(k\)的时候将

bzoj1123:[POI2008]BLO

传送门 提示:被删掉的点也要算点对,\((i,j)\)和\((j,i)\)是不同的点对 显然找出割点就行了,记下size,对于各子树统计一下答案 代码: #include<cstdio> #include<iostream> #include<algorithm> using namespace std; void read(int &x) { char ch; bool ok; for(ok=0,ch=getcha

[POI2008]BLO-Blockade

题目传送门 题意:给定一张无向图,求每个点被封锁之后有多少个有序点对$(x,y)(x!=y,1<=x,y<=n)$满足$x$无法到达$y$。 题目强调了所有村庄都相互可达。 首先会想到割顶,因为如果删去割顶,就会导致图的连通块增加。反之不变。 不是割顶答案就应该是$(n-1)*2$。因为连通块没有增加意味着除