BZOJ 2725: [Violet 6]故乡的梦】的更多相关文章

2725: [Violet 6]故乡的梦 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 678  Solved: 204[Submit][Status][Discuss] Description Input Output Sample Input 6 7 1 2 1 2 3 1 3 4 2 4 5 1 5 6 1 1 3 3 4 6 3 1 6 4 1 2 1 3 4 3 6 5 Sample Output 7 6 Infinity 7 HINT…
这个题在bzoj上好像是个权限题,想做的可以去Vani的博客下载测试数据.这里有题面. 简单叙述一下题意:给你一个n个点.m条边的带权无向图,S点和T点,询问Q次删一条给定的边的S-T最短路. 其中 1<=n,m,q<=200000 . ps. 1.这个题网上好多解法都是错的.2.这个题数据范围很大. 先求S到每个点的距离ds[i].如果ds[T]为inf的话,输出Q个无解好了.然后再求每个点到T的距离dt[i].(用堆优化的Dijkstra即可.) 建一张最短路径图Gs仅包含ds[v]==d…
\(\color{#0066ff}{ 题目描述 }\) \(\color{#0066ff}{输入格式}\) \(\color{#0066ff}{输出格式}\) \(\color{#0066ff}{输入样例}\) 6 7 1 2 1 2 3 1 3 4 2 4 5 1 5 6 1 1 3 3 4 6 3 1 6 4 1 2 1 3 4 3 6 5 \(\color{#0066ff}{输出样例}\) 7 6 Infinity 7 \(\color{#0066ff}{数据范围与提示}\) \(\col…
求出最短路径树,对于一个询问(x,y) 若不在树上S->T的链上,则答案不变,若在链上,考虑用一条非树边替换这条边,这条非树边必须跨越x->y这条边,线段树维护区间最小值 #include<cstdio> #include<algorithm> #include<queue> #include<cstring> #define pr pair<long long,int> #define mp make_pair #define sc…
如果S==T,那么答案为0. 如果S与T不连通,那么答案为inf. 否则,S到T的最短路径上至少有一条边. 求出以S为源点的最短路图,是个DAG,随便抓一条S到T的最短路,记为P. 设dpS[x]表示在这个图上,能到达x点的离S最近的在P上的点,可以通过拓扑排序+DP求出. 然后求出以T为源点的最短路图,在T的最短路图里找到P. 设dpT[x]表示在这个图上,能到达x点的离T最近的在P上的点,同样可以通过拓扑排序+DP求出. 然后把P路径上的边按S到T的方向,从1开始标号. 对于一条边,如果不在…
2725: [Violet 6]故乡的梦 Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 502  Solved: 173[Submit][Status][Discuss] Description Input Output Sample Input 6 7 1 2 1 2 3 1 3 4 2 4 5 1 5 6 1 1 3 3 4 6 3 1 6 4 1 2 1 3 4 3 6 5 Sample Output 7 6 Infinity 7 HINT…
BZOJ 2709: [Violet 1]迷宫花园 Sample Input 5 ######### # # # # # # # #S# # ##### # # ## # # # ### ### ##E # ######### ######### # ## ## ### #S# # # # E ## # # ##### # ## ### # ##### # # # # ######### ######### # # # # # # # # E# # # # # # # # ## ### # #…
题目 描述 不知每日疲于在城市的水泥森林里奔波的你会不会有时也曾向往过乡村的生活.你会不会幻想过,在夏日一个静谧的午后,你沉睡于乡间路边的树荫里,一片叶子落在了你的肩上, 而你正做着一个悠长的梦,一个没有城市的梦.我们的问题,正围绕着这个梦境展开-- 从 Azure 求学的城市到 Azure 家乡的村庄由若干条路径连接,为了简化起见,我们把这些路径抽象成一个 N 个节点的无向图,每个节点用一个[1,N]内的整数表示,其中城市在S节点,Azure 的故乡在T 节点.在某些节点对(x,y)之间会有双…
2716: [Violet 3]天使玩偶 Time Limit: 80 Sec  Memory Limit: 128 MBSubmit: 1473  Solved: 621[Submit][Status][Discuss] Description Input Output Sample Input & Output 样例过大,略 HINT Source Vani原创 欢迎移步 OJ2648 [Submit][Status][Discuss] CDQ分治,分类讨论拆绝对值的方式,分别查询最优值.…
2724: [Violet 6]蒲公英 Time Limit: 40 Sec  Memory Limit: 512 MBSubmit: 1633  Solved: 563[Submit][Status][Discuss] Description Input 修正一下 l = (l_0 + x - 1) mod n + 1, r = (r_0 + x - 1) mod n + 1 Output Sample Input 6 3 1 2 3 2 1 2 1 5 3 6 1 5 Sample Outp…
题目链接:BZOJ - 2721 题目分析 题目大意:求出 1 / x + 1 / y = 1 / n! 的正整数解 (x, y) 的个数. 显然,要求出正整数解 (x, y) 的个数,只要求出使 y 为正整数的正整数 x 的个数,或者求出使 x 为正整数的正整数 y 的个数即可. 那么我们来转化一下这个式子: 通分: (x + y) / xy = 1 / n! n!(x + y) = xy 将 y 分离出来: n!x = xy - n!y n!x = (x - n!)y y = n!x / (…
题目链接:BZOJ - 2724 题目分析 这道题和 BZOJ-2821 作诗 那道题几乎是一样的,就是直接分块,每块大小 sqrt(n) ,然后将数字按照数值为第一关键字,位置为第二关键字排序,方便之后二分查找某个值在某个区间内出现的次数. 预处理出 f[i][j] 即从第 i 块到第 j 块的答案. 对于每个询问,中间的整块直接用预处理出的,两端的 sqrtn 级别的数暴力做,用二分查找它们出现的次数. 每次询问的复杂度是 sqrtn * logn . 注意:写代码的时候又出现了给 sort…
先cdq分治, 然后要处理点对答案的贡献, 可以以询问点为中心分成4个区域, 然后去掉绝对值(4种情况讨论), 用BIT维护就行了. -------------------------------------------------------------- #include<cstdio> #include<cstring> #include<algorithm> #include<cctype>   using namespace std;   #def…
虽然AC了但是时间惨不忍睹...不科学....怎么会那么慢呢... 无修改的区间众数..分块, 预处理出Mode[i][j]表示第i块到第j块的众数, sum[i][j]表示前i块j出现次数(前缀和,事实上我是写后缀和..因为下标从0开始..), cnt[i][j][k]表示第i块中的前j个数中,k出现次数.预处理O(N1.5), 询问每次O(N0.5), 总O((N+M)N0.5) --------------------------------------------------------…
一不小心速度就成了#1.... 这道题显然是求最长反链, 最长反链=最小链覆盖.最小链覆盖就是先做一次floyd传递闭包, 再求最小路径覆盖. 最小路径覆盖=N - 二分图最大匹配. 所以把所有点拆成x,y两个, 然后存在edge(u,v)就连ux->vy. 然后跑匈牙利即可. ------------------------------------------------------------------ #include<bits/stdc++.h>   using namespa…
3620: 似乎在梦中见过的样子 Time Limit: 15 Sec  Memory Limit: 128 MBSubmit: 755  Solved: 445 Description “Madoka,不要相信 QB!”伴随着 Homura 的失望地喊叫,Madoka 与 QB 签订了契约. 这是 Modoka 的一个噩梦,也同时是上个轮回中所发生的事.为了使这一次 Madoka 不再与 QB签订契约,Homura 决定在刚到学校的第一天就解决 QB.然而,QB 也是有许多替身的(但在第八话中…
2720: [Violet 5]列队春游 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 189  Solved: 133[Submit][Status][Discuss] Description Input Output Sample Input   Sample Output   HINT Source interviewstreet--virtual stick [Submit][Status][Discuss] LTY大佬来嘲讽我了“你水不水…
[Violet 5]樱花 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 671  Solved: 395[Submit][Status][Discuss] Description Input Output Sample Input   Sample Output   HINT 题解: 上面废话许多. 设n!=z,y=z+d 1/x+1/y=1/z 1/x+1/(z+d)=1/z (x+z+d)/(x*z+dx)=1/z z(x+z+d)=x*z+d…
[题目分析] KD-Tree的例题.同BZOJ2648. [代码] #include <cstdio> #include <cstring> #include <cstdlib> #include <cmath> #include <set> #include <map> #include <string> #include <algorithm> #include <vector> #includ…
1143: [CTSC2008]祭祀river Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1878  Solved: 937[Submit][Status][Discuss] Description 在遥远的东方,有一个神秘的民族,自称Y族.他们世代居住在水面上,奉龙王为神.每逢重大庆典, Y族都会在水面上举办盛大的祭祀活动.我们可以把Y族居住地水系看成一个由岔口和河道组成的网络.每条河道连接着两个岔口,并且水在河道内按照一个固定的方向流动.…
题目大意:初始给定平面上的一个点集.提供两种操作: 1.将一个点增加点集 2.查询距离一个点最小的曼哈顿距离 K-D树是啥...不会写... 我仅仅会CDQ分治 对于一个询问,查询的点与这个点的位置关系有四种,我们如今仅仅讨论左下角,剩余三个象限同理 设询问的点为(x,y),查询的点为(x',y') 则dis=(x-x')+(y-y')=(x+y)-(x'+y') 于是我们要找到查询的点左下方全部点中x'+y'最大的点.x值排序,y值维护树状数组就可以 用CDQ分治化在线为离线.保证x有序就可以…
传送门 题面太美不忍不放 分块分块 这种题的一个特点是只有查询,通常需要预处理:加入修改的话需要暴力重构预处理 预处理$f[i][j]$为第i块到第j块的众数,显然$f[i][j]=max{f[i][j-1],j中出现的数}$,复杂度$O(N^2/S)$,常数比较小吧 最近用$pair$上瘾了... 然后查询$[l,r]$时,整块直接查,两边不完整的枚举出现的数,然后加上整块里出现次数来更新 求整块的出现次数,可以用$v[i]$表示数字$i$出现位置,二分来找,复杂度$O(NSlogN)$ 或者…
题目链接 区间众数 强制在线 考虑什么样的数会成为众数 如果一个区间S1的众数为x,那么S1与新区间S2的并的众数只会是x或S2中的数 所以我们可以分块先预处理f[i][j]表示第i到第j块的众数 对于零散部分,我们还需要知道它们在区间中的出现次数.这部分至多有2sqrt(n)个 由于没有修改,离散化后对于每个数x开一个vector,把x出现位置push_back进去,查x时二分即可. 像普通分块一样更新即可.之前写了一堆特判 醉了 这个块大小怎么算..没算出来. //2520kb 19652m…
Description Input 修正一下 l = (l_0 + x - 1) mod n + 1, r = (r_0 + x - 1) mod n + 1 Output Sample Input 6 3 1 2 3 2 1 2 1 5 3 6 1 5 Sample Output 1 2 1 HINT 修正下: n <= 40000, m <= 50000 Solution 考虑分块,存两个东西,一个是两个块之间包含的区间的答案,另一个块的每个蒲公英的出现次数的前缀和 之前还要离散化 询问的…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2716 第三道KDtree!仍旧是模板.还有CDQ分治做法,见下面. 数组迷之开大?(开6e5+5还不行) 原来query( )只用传一个根. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ,INF=0x3f3f…
(X-N)(Y-N)=N^2 #include<cstdio> using namespace std; const int mod=1e9+7; int n,cnt,isprime[1000005],prime[1000005]; void Pre_prime(){ for (int i=2; i<=n; i++){ if (!isprime[i]) prime[++cnt]=i; for (int j=1; j<=cnt && i*prime[j]<=n;…
很喵的一道题(我可不是因为看了YOUSIKI的题解才变成这样的) $ans=\sum_{x<=n}\sum_{i<=n} iP(L=i)$ 其中P(x)表示视线为x的概率. 所以只需要求出对于每个人的$\sum_{i<=n} iP(L=i)$就可以了. 然后我们转化$\sum_{i<=n}P(L>=i)$ 这步很喵,大概运用的差分的思想. 然后我们大力展开之后合并,就可以得到一堆组合数,然后考虑组合数的意义,对组合数合并,最后得出$ans=\frac{n+1}{k+2}$k表…
 KD-tree可做,但是我不会暂时不考虑 大意:在二维平面内,给定n个点,m个操作.操作A:加入一个点:操作B:询问一个点与平面上加入的点的最近距离 不封装会T不封装会T不封装会T不封装会T不封装会T不封装会T不封装会T不封装会T不封装会T不封装会T不封装会T 把初始存在的点也看成加点操作 首先,曼哈顿距离取绝对值很烦,所以我们可以通过转坐标,把左上 右上 左下 右下通过转坐标都变成左下,最后取个min即可.于是对于(x,y)左下的点(x1,y1),dis=x-x1+y-y1=(x+y)-(x…
题意 在线区间众数 思路 预处理出 f[i][j] 即从第 i 块到第 j 块的答案.对于每个询问,中间的整块直接用预处理出的,两端的 sqrtn 级别的数暴力做,用二分查找它们出现的次数.每次询问的复杂度是 sqrtn * logn . #include<iostream> #include<cstring> #include<cmath> #include<cstdio> #include<algorithm> #include<vec…
题意:id=2708">链接 方法: DP 解析: 这题太神辣. 做梦都没想到DP啊,反正我不会. 先谈一个我有过的错的想法. 最小费用最大流? 能匹配的边连费用为1的,不能匹配的连费用为0的 跑最小费用最大流 然而这显然是错的.我还思考半天. 由于这道题强制假设还用费用为1的边.那必须先跑费用为1的边. 这样就不符合辣 至于自己改下这个写法? 尝试过- -.然而卡在哪里呢? 一堆费用为1的边你先跑那个呢?- -评估?评估函数怎么写啊,我不会啊. 所以这个写法显然弃疗. 然而我还曾有过一个…