[CF911B]Two Cakes】的更多相关文章

题目大意: 有两种蛋糕,分别被切成了a块和b块,要把这些蛋糕分到n个盘子里. 要求每个盘子里只能有一种蛋糕,每一种蛋糕都被分.问最优情况下,盘子里至少能放几个蛋糕. 思路: 二分答案. 由于每个蛋糕都要被分,所以二分的上界是min(a,b)而不是a+b. 然后O(n)检验即可. #include<cstdio> #include<cctype> #include<algorithm> inline int getint() { register char ch; whi…
题目链接:hdu 5997 rausen loves cakes 题意: 给你n个点,每个点有一个颜色,现在有两个操作,第一个操作,将颜色x改为颜色y,第二个操作,询问[x,y]区间有多少颜色段(颜色段的定义为从左往右相同的颜色为一段,遇到不相同的为下一段,ie:144112为4段颜色) 题解: 对于第二个操作我们可以写一个线段树合并来搞定,对于第一个操作,就要用启发式修改来进行,如何启发式? 我们开一个数组来记录每个颜色对应的颜色,最开始都是对应自己,然后开一个vector来记录每个颜色的位置…
题目描述 N个点m条边,每个点有一个点权a.对于任意一个三元环(j,j,k)(i<j<k),它的贡献为max(ai,aj,ak) 求所有三元环的贡献和.N<100000,,m<250000. 输入 The first line of the standard input contains two integers  n and m (1<=N<=100000,1<=M<=250000) separated by a single space and deno…
B. Two Cakes time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Sasha and Dima want to buy two nn -tier cakes. Each cake should consist of nn different tiers: from the size of 11 to the size o…
Description \(n\) 个点 \(m\) 条边,每个点有一个点权 \(a_i\). 对于任意一个三元环 \((i,j,k)(i<j<k)\),它的贡献为 \(\max(a_i,a_j,a_k)\),求所有三元环的贡献和. Input The first line of the standard input contains two integers n and m (1<=N<=100000,1<=M<=250000) separated by a sing…
B. Two Cakestime limit per test 1 secondmemory limit per test 256 megabytesinput standard inputoutput standard outputIt's New Year's Eve soon, so Ivan decided it's high time he started setting the table. Ivan has bought two cakes and cut them into pi…
A. Carrot Cakes time limit per test   1 second memory limit per test   256 megabytes   In some game by Playrix it takes t minutes for an oven to bake k carrot cakes, all cakes are ready at the same moment t minutes after they started baking. Arkady n…
It's New Year's Eve soon, so Ivan decided it's high time he started setting the table. Ivan has bought two cakes and cut them into pieces: the first cake has been cut into a pieces, and the second one — into b pieces. Ivan knows that there will be n…
B. Two Cakes time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output It's New Year's Eve soon, so Ivan decided it's high time he started setting the table. Ivan has bought two cakes and cut them in…
题目链接  rausen loves cakes 题意  给出一个序列和若干次修改和查询.修改为把序列中所有颜色为$x$的修改为$y$, 查询为询问当前$[x, y]$对应的区间中有多少连续颜色段.   序列长度为$n$,总操作数为$q$,满足$1 <= n <= 10^{5}, 1 <= q <= 10^{5}$ 初始化的时候若当前颜色和前一个位置的颜色不相等的时候则在这个位置的树状数组中打标记. 修改的时候,颜色权值数小的往大的合并,这样满足总合并复杂度为$O(nlogn)$,…
考虑DP,设$f[i][j]$表示考虑了$a[1..i]$和$b[1..j]$的最小代价. 若$a[i]==b[j]$,则$f[i][j]=\min(f[i-1][j],f[i][j-1])+1$. 否则找到最大的$t$,满足$x$和$y$往前$t$个均不相等,此时$f[i][j]=f[i-t-1][j-t-1]+t$. 对于$t$,可以通过在相应差值的序列中二分查找得到. 对于DP的计算,可以通过搜索,并将那$n$个$a[i]==b[j]$的状态记忆化. 因为对于每个没有记忆化的状态,均可以在…
令三元环(i,j,k)中i>j>k,则每条边只需要从大点连向小点 设d[x]表示从x连出的边的条数 从1到n枚举点i,然后枚举所有与i相连的边(i,x)(x<i) 如果$d[x]\leq\sqrt{m}$,则依次判断与x相连的边(x,y)(y<x)中的y是否与i相连 否则,依次判断与i相连的边(i,y)(y<x)中的y是否与x相连 用Hash表支持$O(1)$询问 时间复杂度$O(m\sqrt{m})$ #include<cstdio> #include<a…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3498 [题目大意] N个点m条边,每个点有一个点权a. 对于任意一个三元环(j,j,k)其贡献为max(a[i],a[j],a[k]),请你求出贡献值之和. [题解] 我们将无向边转化成从权值大的点指向权值小的点的有向边,按权值从小到大的顺序枚举起始点,枚举相连的点,如果其出度小于sqrt(m),那么枚举与其相连的点,判断是否和起始点相连,否则,枚举起始点相连的点,判断是否和枚举点相…
题目:http://codeforces.com/contest/629/problem/D 题意:有n个蛋糕要叠起来,能叠起来的条件是蛋糕的下标比前面的大并且体积也比前面的大,问能叠成的最大体积 思路:DP[i]表示拿到第i个蛋糕时最多能叠成的体积,转移就是这样DP[i]=max(DP[1...i])+V[i];如果直接做的话复杂度是n^2的,用线段树维护比它小的蛋糕的能叠的最大体积,事先离散化, #include <cstdio> #include <cstring> #inc…
首先引入一个最常见的经典三元环问题. #include <bits/stdc++.h> using namespace std; const int maxn = 100005; vector <int> g[maxn], low, high; map <int, int> mp[maxn]; int n, m, in[maxn], vis[maxn]; int main() { scanf("%d %d", &n,&m); for(…
Description 给定一个n个点的严格凸多边形(各个内角<180°),现在要切出两个非退化三角形(三点不共线),要求两个三角形顶点必须是凸多边形的顶点,且三角形不可相交(但是点或边可以重合).求两个三角形面积之差的最大值. Input 第一行,一个整数N. 第二到N+1行,每行两个整数xi,yi,表示多边形的一个点,保证顶点按顺时针或逆时针顺序给出. Output 输出答案,精确到小数点后1位. 最小三角形一定是相邻三点构成,因此只需枚举每个最小三角形,查询剩余部分中的最大三角形 dp,f…
本题BZOJ权限题,但在bzojch上可以看题面. 题意: N个点m条无向边,每个点有一个点权a. 对于任意一个三元环(i,j,k)(i<j<k),它的贡献为max(ai,aj,ak) 求所有三元环的贡献和. N<100000,m<250000 Solution: 本题裸的三元环计数. 无向图三元环计数的问题大致做法: 统计每个点的度数,对于一条无向边$<u,v>$,若$deg[u]==deg[v]$则从编号小的点向编号大的点连有向边,否则从$deg$较大的向较小的点连…
题目链接 感觉我可能学的假的(复杂度没问题,但是常数巨大). 一个比较真的说明见这儿:https://czyhe.me/blog/algorithm/3-mem-ring/3-mem-ring/. \(Description\) n个点m条边的无向图,每个点有点权.对于任意一个三元环\((i,j,k),i<j<k\),其贡献为\(max\{a_i,a_j,a_k\}\).求所有三元环的贡献和. 一般的三元环计数问题:根据出度是否\(\leq\sqrt m\)将点分为两类. 对于\(dgr[x]…
题解: 枚举一下x x<=min(a,b) 然后判断a/x+b/x是否>=x 代码: #include<bits/stdc++.h> using namespace std; int n,a,b; int main() { scanf("%d%d%d",&n,&a,&b); for (int i=min(a,b);i;i--) if (a/i+b/i>=n) { printf("%d\n",i); ; } }…
题意 题目链接 Sol 按照套路把边转成无向图,我们采取的策略是从权值大的向权值小的连边 然后从按权值从小到大枚举每个点,再枚举他们连出去的点\(v\) 如果\(v\)的度数\(\leqslant M\),那么就再暴力枚举\(v\)连出去的点\(t\),看\(u\)与\(t\)是否联通(打标记) 否则暴力枚举\(u\)连出去的点\(t\),看\(v\)与\(t\)是否联通(直接hash表) 复杂度为\(O(M \sqrt{M})\) #include<bits/stdc++.h> #defin…
题面(权限题就不放题面了) 题解 三元环模板题,按题意模拟即可. #include <cstdio> #include <cstring> #include <vector> using std::vector; const int N = 1e5 + 10, M = 2.5e5 + 10; int n, m, a[N], deg[N], u[M], v[M], vis[N], tmp; long long ans; vector<int> to[N]; i…
链接:https://codeforces.com/contest/1130/problem/B 题意: 给定n和 2 * n个数,表示i位置卖ai层蛋糕, 有两个人在1号,必须严格按照1-n的顺序买蛋糕,同时每个店只买一个蛋糕 . 求所需的最短时间. 思路: 将每种蛋糕对应位置记录在二维数组. 从1-n挨个买,根据上一次的位置算出消耗. 代码: #include <bits/stdc++.h> using namespace std; typedef long long LL; const…
参考:https://www.cnblogs.com/spfa/p/7495438.html 为什么邻接表会TTTTTTTLE啊...只能用vector? 把点按照点权从大到小排序,把无向边变成排名靠前的点连向排名靠后的点的有向边并记录出度d[u],用map记录一下联通,这样可以避免重复计算 按排名遍历,设遍历到u点,扫u的邻接点v,如果v的出度小于根号m,就遍历v的所有邻接点,判断是否与u相连即可:否则,再次枚举u的邻接点v,用map判断当前v是否与新扫描的v相连: 每次判断成功都在ans里加…
[题目链接]:http://codeforces.com/contest/799/problem/A [题意] 你有一个烤炉; 每t秒能同时烤出k个蛋糕; 你可以在第一个烤炉在烤的时候;同时花费d秒建造另外一个相同的烤炉; 也是t秒烤出k个蛋糕; 问你是否造两个烤炉一起烤更快; [题解] 先算出一个烤炉要花多长时间; ((n-1)/k +1)*t 然后枚举时间i; 如果i是k的倍数,则tot+=k,如果(i-d)>0且(i-d)是k的倍数则tot也能递增k; 找到第一个tot大于等于n的i就好;…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 直觉题. 感觉情况会很少. 毕竟间隔太大了.中间肯定有一些数字达不到. 有1肯定可以 2 2 x肯定可以 3 3 3也可以 2 4 4也可以. 就这样 [代码] #include <bits/stdc++.h> using namespace std; vector <int> v; int main(){ #ifdef LOCAL_DEFINE freopen("rush_in.txt", &…
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 从小到大枚举x. 看看a/x+b/x是不是大于等于n 是的话. 看看是不是两种蛋糕都能凑一堆. 也即x的最大枚举量是min(a,b) 不然可能有多余的a%x没地方放.(因为它都还没有一堆 [代码] #include <bits/stdc++.h> using namespace std; int n,a,b; int main(){ #ifdef LOCAL_DEFINE freopen("rush_in.txt&q…
题意 给定一个 \(n\) 个点 \(m\) 条边的图,点 \(i\) 有权值 \(a_i\),一个三元环 \((i,j,k)\) 的贡献为 \(\max(a_i,a_j,a_k)\),求所有三元环的贡献之和. \(\texttt{Data Range:}1\leq n\leq 10^5,1\leq m\leq 3\times 10^5\) 题解 所谓的三元环计数其实就是个优雅的暴力. 考虑将原图的边定向:度数大的连向度数小的,度数一样则编号大的连向编号小的.我们可以发现这个图有一些特殊性质:…
1. SVN是什么? SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS.CVS,它采用了分支管理系统,它的设计目标就是取代CVS.互联网上很多版本控制服务已从CVS迁移到Subversion. 集中式管理的工作流程如下图: 集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交.所有的版本信息都放在服务器上.如果脱离了服务器,开发者基本上可以说是无法工作的.下面举例说明: 开始新一天的工作: 1.从服务器下…
有生以来第一场在COGS以外的地方打的比赛.挂成dog了. 主要是没有经验,加之代码能力过弱.还有最后的瞎hack三次,Too Young Too Simple...... 言归正传. (抄一发题解先) T1 Kblack loves flag 用两个布尔数组分别维护每个行/列是否被插过旗帜,最后枚举每一行.列统计答案即可.空间复杂度O(n+m),时间复杂度O(n+m+k). T2 dingyeye loves stone 设根节点的深度为0,将所有深度为奇数的节点的石子数目xor起来,则先手必…
关于DOTA 2 Match History WebAPI 的 源网页地址: http://dev.dota2.com/showthread.php?t=47115 由于源网页全英文,这边做下翻译方便以后自己及他人查阅(如有翻译不正确的地方请指正): DOTA2现在提供匹配记录的WebAPI..Web开发者现在可以以JSON或者XML格式,获得匹配历史记录及详情并使用在他们自己的应用中. 首先登录 http://steamcommunity.com/dev/apikey ,你将获得你的API唯一…