题目大意:在一个数轴上有N个点,每个点都有一个权值,在这个数轴上找一个点,是的每个点到这个点的距离之和乘上权值的总和最小. 分析:以前也遇到过类似的问题,不过并不知道这是带权值的中位数问题,百度百科有比较精彩的证明,可以证明出来跟这个位置和距离没有什么关系,只和权值有关系,假设这个点是T,那么 ∑d[L](L<T) + d[T] >= ∑d[R](R>=T+1),反之也成立. 代码如下: ==================================================…
Telecasting station Problem's Link Mean: 百慕大的每一座城市都坐落在一维直线上,这个国家的政府决定建造一个新的广播电视台. 经过了许多次试验后,百慕大的科学家们提出了一个结论:在每座城市的不满意度等于这座城市的市民数与这座城市与广播电视台的距离的乘积. 你需要找到这个一维直线上的一点来建造广播电视台,使得所有城市的不满意度的和最小. analyse: 个人觉得应该是加权平均数,然而却是求中位数. 可以这样想:随便挑一个点作为station,左右移动一下看看…
题意: 百慕大的每一座城市都坐落在一维直线上.这个国家的政府决定建造一个新的广播电视台.经过了许多次试验后,百慕大的科学家们提出了一个结论,在每座城市的不满意度等于这座城市的市民数与这座城市与广播电视台的距离的乘积.找到这个一维直线上的一点来建造广播电视台,使得所有城市的不满意度的和最小. 输入格式 输入的第一行是一个正整数N(0<N<15000) 表示百慕大的城市数.下面N个点对 (X, P) 表示城市 (0<X, P<50000), X 是这座城市的坐标,P是市民数.所有的数都…
114. Telecasting station time limit per test: 0.25 sec. memory limit per test: 4096 KB Every city in Berland is situated on Ox axis. The government of the country decided to build new telecasting station. After many experiments Berland scientists cam…
114. Telecasting station time limit per test: 0.25 sec. memory limit per test: 4096 KB Every city in Berland is situated on Ox axis. The government of the country decided to build new telecasting station. After many experiments Berland scientists cam…
传送门 题意咕咕咕自己读吧挺简单的 思路: 由带权中位数的性质可以得到对于每个数放在每个二进制位的代价一定是个单调或者单峰函数,因此我们先把所有的数都挪到第一个位置,然后依次向右枚举峰点(极值点)把能挪的挪走即可. 代码: #include<bits/stdc++.h> #define ri register int using namespace std; typedef long long ll; int a[62],len=0; ll f[62][1205],L,R; int K; in…
题目 http://poj.org/problem?id=1723 题解 带权中位数类型的题目~ 可以先考虑降维,最后集合的y坐标,明显是y坐标的中位数的位置,容易求出y方向的贡献res_y.比较麻烦的是在x坐标上最后是要列成一排,而不是单独的一个点,我们可以假设最后集合的最左边的点是x,采用贪心的策略列出公式:res_x=sum(abs(xi-x-i))(i belongs to [0,n-1]).令zi=xi-i,就转化为res_x=sum(abs(zi-x)),这相当于求zi数列的中位数(…
题目链接点这儿 一開始想都没想...直接上了三分...结果...sample的答案不一样...可是过了...然后又看了看. . . 发现这不就是高中或者初中出过的求中位数的题么. . .直接找到这些的中位数即可了....假设某一点处人口不止一个.那就把它拆成一个一个的点. 然后求中位数. 嗯... 这题就结束了. . . 至于三分的过程,事实上就是二分略微改进的版本号.二分仅仅能求单调的函数,假设函数在定义域内不是单调的,那么二分就失效了.当然. ..这时能够用数学上的无穷分逼近,通过分成若干小…
#include <iostream> #include <algorithm> #include <cstdio> #include <math.h> #include <set> #include <map> #include <queue> #include <string> #include <string.h> #include <bitset> #define REP(i,a…
Putting Boxes Together 题意: 现在有n个物品,第i个物品他的位置在a[i],他的重量为w[i].每一个物品移动一步的代价为他的w[i].目前有2种操作: 1. x y 将第x的物品的重量改为y 2.l r 将编号在 [ l, r ]之间的所有物品移动到一起,求最小的花费是多少. 如果移动一个物品移动一步的代价是1的话,对于[1,n]来说,那么中间位置就是 a[(1+n)/2]. 也就是最中间的那个物品的位置. 现在移动一步他的代价是w[i],那么中间位置就是 sum(1,…
114. Telecasting station time limit per test: 0.5 sec. memory limit per test: 4096 KB Every city in Berland is situated on Ox axis. The government of the country decided to build new telecasting station. After many experiments Berland scientists came…
http://acm.sgu.ru/problemset.php?contest=0&volume=1 101 Domino 欧拉路 102 Coprime 枚举/数学方法 103 Traffic Lights 最短路 104 Little Shop of Flowers 动态规划 105 Div 3 找规律 106 The Equation 扩展欧几里德 107 987654321 Problem 找规律 108 Self-numbers II 枚举+筛法递推 109 Magic of Dav…
SGU还是个不错的题库...但是貌似水题也挺多的..有些题想出解法但是不想写代码, 就写在这里吧...不排除是我想简单想错了, 假如哪位神犇哪天发现请告诉我.. 101.Domino(2015.12.16) 102.Coprimes 求φ(N). 1<=N<=10^4 按欧拉函数的公式直接算..O(N^0.5)(2015.12.16) #include<cstdio> #include<cstring> #include<algorithm> using n…
SGU 114 题意:求一个点到其他点的距离总和最小,距离的定义是x轴距离乘以那个点的人数p 收获:带权中位数,按坐标排序,然后扫一遍,最后权值超过或等于总权值的一半时的那个点就是答案,证明暂无 #include<bits/stdc++.h> #define de(x) cout<<#x<<"="<<x<<endl; #define dd(x) cout<<#x<<"="<&l…
虽然早就知道会是这个结果,但是看到的成绩时候还是有些忧伤,奇迹果然还是没有发生. 想了想还是应该写篇博文 纪念一下这段经历. Day0: 报道之后直接去了宾馆,然后意外的发现冬令营时候的室友wxh就住在隔壁的隔壁,都是只来了一个人的弱校,平时也经常交流学习,于是接下来的几天还是和冬令营一样一起行动了.晚上复习了一下Miller-Rabin和rho,去bzoj找了一题,结果被卡常数了,折腾到10点才睡觉..然后杭州又热又闷,半夜醒过来意识迷糊,似睡非睡. Day1: 上午是JYK的topcoder…
原文链接https://www.cnblogs.com/zhouzhendong/p/CF1053C.html 题目传送门 - CF1053C 题意 有 $n$ 个物品,第 $i$ 个物品在位置 $a_i$ ,重量为 $w_i$ .使得重量为 $x$ 的物品移动一单位距离的花费是 $x$ .接下来 $q$ 个操作,有两种类型: 1. 将物品 $i$ 的重量修改成 $nw$ . 2. 询问把区间 $[L,R]$ 内的物品都移动到一段连续的区间 $[x,x+R-L]$ 内,并且互不重叠,相对顺序保持…
P3819 松江1843路sigema(r[i]*abs(x[i]-x[s]));令它最小,是带权中位数问题,s是带权中位数,s左边的r[i]之和+r[s]大于s左边的r[i]之和,反过来也成立.如果sum+r[i]>=总数/2,就break,就找到带权中位数了. 证明的话去百度,很好证明,因为没有理解价值,就没整理. #include<iostream> #include<cstdio> #include<queue> #include<algorithm…
C - Putting Boxes Together 思路: 求带权中位数 用树状数组维护修改 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include<bits/stdc++.h> using namespace std; #define fi first #define se second #define pi acos(-1.0) #define LL long long //…
传送门 就是让你维护动态的区间带权中位数. 然而昨晚比赛时并没有调出来. 想找到带权中位数的中点可以二分(也可以直接在线段树上找). 也就是二分出第一个断点,使得断点左边的和恰好大于或等于断点右边的和. 现在的问题在于知道断点之后如何统计答案. 我们可以在线段树中维护当前区间全部移到区间最左端点的花费,以及当前区间全部移到区间最右端点的花费. 这样就可以简单合并并轻松统计答案了. 代码: #include<bits/stdc++.h> #define ll long long #define…
基准时间限制:1 秒 空间限制:131072 KB 分值: 40  X轴上有N个点,每个点除了包括一个位置数据X[i],还包括一个权值W[i].该点到其他点的带权距离 = 实际距离 * 权值.求X轴上一点使它到这N个点的带权距离之和最小,输出这个最小的带权距离之和.   Input 第1行:点的数量N.(2 <= N <= 10000) 第2 - N + 1行:每行2个数,中间用空格分隔,分别是点的位置及权值.(-10^5 <= X[i] <= 10^5,1 <= W[i] …
「SCOI2014」方伯伯的商场之旅 题目描述 方伯伯有一天去参加一个商场举办的游戏.商场派了一些工作人员排成一行.每个人面前有几堆石子.说来也巧,位置在 \(i\) 的人面前的第 \(j\) 堆的石子的数量,刚好是 \(i\) 写成 \(K\) 进制后的第 \(j\) 位. 现在方伯伯要玩一个游戏,商场会给方伯伯两个整数 \(L,R\).方伯伯要把位置在 \([L, R]\) 中的每个人的石子都合并成一堆石子.每次操作,他可以选择一个人面前的两堆石子,将其中的一堆中的某些石子移动到另一堆,代价…
打开题一看,咦,两道数数,一道猫式树题 感觉树题不可做呀,暴力走人 数数题数哪个呢?感觉置换比矩阵好一些 于是数了数第一题 100 + 0 + 15 = 115 T1 bishop 给若干个环,这些环上一共有 $n$ 个点,在这 $k$ 个点上等概率放 $k$ 个人,一个点最多放一个人,求每个环都至少有一个点的概率,膜 998244353 $n,k \leq 10^5$ sol: 考虑生成函数,一个环如果有 $size$ 个点,它的答案的生成函数 $F = \sum_{k=1}^nC_{size…
昨晚的比赛题.(像我这种蒟蒻只能打打div2) 题意 给你$n$个物品,每一个物品$i$,有一个权值$w_i$和一个位置$a_i$,定义移动一个物品$i$到位置$t$的代价为$w_i * \left |a_i - t  \right |$,要求你写一个数据结构支持以下两种操作: 1.修改一个物品的权值 2.查询把一个区间内全部移到相邻的位置的最小值. 举个栗子:如果要把$[l, r]$移到相邻的位置,就是对于$\forall i \in [l, r]$,要有$pos_i = x + i - l\…
2136: 统帅三军! Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 55     Solved: 11 Description Wells最近迷上了一款攻城的策略游戏,点就去就能当大元帅统帅三军! 游戏界面主要是一个平面(坐标可以为浮点数),然而Wells发现这游戏是个骗局,其实只给了一个军队. Wells初始有一个军队,仅包含n个士兵,每个士兵有一个初始位置(x,y)和一个劳…
题意: 现在有n个物品,第i个物品他的位置在a[i],他的重量为w[i].每一个物品移动一步的代价为他的w[i].目前有2种操作: 1. x y 将第x的物品的重量改为y 2.l r 将编号在 [ l, r ]之间的所有物品移动到一起,求最小的花费是多少. 带权中位数,学习了->这里 先来考虑一下货仓选址问题,就是一堆不带权值的数,选出一个点使得所有点到他的距离之和最小,那么肯定是选中位数最优 然后加上权值限制,这玩意儿有个学名叫做带权中位数 带权中位数为满足$\sum_{i=1}^x w_i\…
游黄山 Time Limit:1000MS Memory Limit:65536KB Total Submit:165 Accepted:52 Special Judge Description Pollux最近到黄山游玩,他需要在黄山上找一个住宿的地方,Pollux很懒,所以他喜欢住在尽量靠近景点的地方,这样他就可以少走一些路.现在一张黄山地图上有N个景点,P1(X1,Y1).P2(X2,Y2). …Pn(Xn,Yn)Pollux对每个景点都有一个喜爱值W1,W2,…,Wi,Wn,如果Poll…
10.31-11.1Test 题目 描述 做法 \(BSOJ5177\) 求在\(n\)个数里选\(K\)个的所有方案的异或和之和 按位讨论,组合数算 \(BSOJ5178\) 化简\(\displaystyle{f_i=\max_{0\le j<i\vee c_j\mid (i-j)}\{f_j+\frac{c_j}{i-j}\times v_j\}}\) 用单调栈实现斜率优化 \(BSOJ5121\) 同6318 同6318 \(BSOJ5180\) 询问一个矩形元素和/最大值/最小值 二维…
---恢复内容开始--- 题意: 给了n个点,m条有向边. 接下来m行,每条边给起点终点与容量,以及一个标记. 标记为1则该边必须满容量,0表示可以在容量范围内任意流. 求: 从源点1号点到终点n号点的最小的可行流. 思路: ======================================================ge 1.二分最小可行流[是复杂度偏高的一种] <一种简易的方法求解流量有上下界的网络中的网络流问题> 我自己的东西只有在二分的时候.判断当前枚举的值是偏大还是偏小…
题意: 给点数n和边数m. 接下来m条有向边. a b c d 一次代表起点终点,下界上界. 求: 判断是否存在可行流,若存在则输出某可行流.否则输出IMPOSSIBLE 思路: <一种简易的方法求解流量有上下界的网络中的网络流问题> #include<stdio.h> #include<string.h> #include<algorithm> #include<string.h> #include<vector> #define…
最小生成树模板题 注意最后输出用%f (从C99开始%f已经不能用于输出double 即 输入用%lf 输出用%f) #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> #include<string> #define M(a,b) memset(a,b,sizeof(a)) #define debug(x) cerr<<#x<<&q…