UVA11300

初步解題原理:代數運算+單元素極值

代數運算:

xi表示第i個給i-1的數量,正負表示給或得

c=(a1+a2+a3....an)/n

a1-x1+x2=c -->x2=x1-a1+c

a2-x2+x3=c -->x3=x1-a1-a2+2c

a3-x3+x4=c -->x4=x1-a1-a2-a3+3c

......

an-xn+x1=c -->xn=x1-a1-a2-a3....-a(n-1)+(n-1)c

ans=max{|x1|+|x2|+|x3|+....|xn|=|x1-0|+|x1-a1+c|+|x1-a1-a2+2c|.......|x1-a1-a2-a3....-a(n-1)+(n-1)c|}

我們可以用x1表示任意量

ans=min{|x-b1|+|x-b2|+|x-b3|+|x-b4|.......+|x-bn|}

當x取{b1,b2,b3,.....bn}排序后的中位數時,ans取最小值

 1 #include<iostream>
 2 #include<string.h>
 3 #include<math.h>
 4 #include<algorithm>
 5 #include<stdio.h>
 6 #define ULL unsigned long long
 7 #define LL long long
 8 #define maxn 1000009
 9 using namespace std;
10 LL a[maxn];
11 LL b[maxn];
12 int main()
13 {
14     int n;
15     while(~scanf("%d",&n))
16     {
17         ULL C=0;
18         for(int i=1;i<=n;i++)
19         {
20             scanf("%lld",&a[i]);
21             C+=a[i];
22         }
23         C=C/n;
24         b[0]=0;
25         for(int i=1;i<n;i++)
26         {
27             b[i]=b[i-1]-C+a[i];
28         }
29         sort(b,b+n);
30         ULL ans=0;
31         LL mid=b[n/2];
32         for(int i=0;i<n;i++)
33         {
34             ans+=abs(mid-b[i]);
35         }
36         printf("%lld\n",ans);
37     }
38     return 0;
39 }

?

?

轉載于:https://www.cnblogs.com/little-w/p/3341947.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/274004.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/274004.shtml
英文地址,請注明出處:http://en.pswp.cn/news/274004.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java GUI 基礎知識2 監聽機制

TestActionEvent.java沒有調用方法&#xff0c;但是有反應。反應自己要編寫程序有反應。 事件模型&#xff1a;一定要有某些反應。 寫程序&#xff0c;監聽的操作是自動發生的&#xff0c;一直監聽。鉤子函數&#xff0c;&#xff08;回調函數&#xff09; 怎么讓它自動執行&am…

求字符串的最長回文字串 O(n)

昨天參加了某公司的校園招聘的筆試題&#xff0c;做得慘不忍睹&#xff0c;其中就有這么一道算法設計題&#xff1a;求一個字符串的最長回文字串。我在ACM校隊選拔賽上遇到過這道題&#xff0c;當時用的后綴數組AC的&#xff0c;但是模板忘了沒寫出代碼來。 回頭我把這道題目再…

數據結構 二、向量(接口與實現and可擴容向量)

ADT操作實例&#xff1a;Disordered&#xff1a;顯示出3對逆序緊鄰對。Vector模板類初始有效空間為0&#xff1b;基于復制的構造描述區間&#xff1a;左閉右開 為什么*2&#xff1f;有限時間內不必要為擴容而打斷。 2、可擴充向量左移一位&#xff1a;加一倍

數據庫:mysql 獲取剛插入行id[轉]

我們在寫數據庫程序的時候,經常會需要獲取某個表中的最大序號數, 一般情況下獲取剛插入的數據的id&#xff0c;使用select max(id) from table 是可以的。但在多線程情況下&#xff0c;就不行了。 下面介紹三種方法 (1) getGeneratedKeys()方法: 程序片斷: Connection conn ; …

svn由于連接方在一段時間后沒有正確答復或連接的主機沒有反應連接嘗試失敗...

解決方法&#xff0c;關掉防火墻&#xff0c; service iptables status 查看iptables狀態 service iptables restart iptables服務重啟 service iptables stop iptables服務禁用 轉載于:https://www.cnblogs.com/jiqing9006/p/3347441.html

Android 服務(Service)

一、服務的解釋 服務&#xff08;Service&#xff09;是Android中實現后臺運行的解決方案&#xff0c;它適合那些去執行不需要和用戶交互而且還要求長期運行的任務。服務的運行不依賴任何的與任何用戶界面&#xff0c;即使程序被切換到后臺&#xff0c;或者用戶打開了另外一個應…

CenOS 配置C/C++語言

1.下載eclipseCDT組合包。 2.電腦上安裝GCC&#xff0c; G 3.在eclipse上創建一個C project 4. Eclipse CDT功能很強大&#xff0c;安裝完雖然可以編譯運行c程序&#xff0c;但有個問題&#xff0c;就是找不到c標準庫的頭文件&#xff0c;無法打開諸如之類的文件&#xff0c;編…

(數據結構)前綴,后綴以及中綴表達式

中綴表達式&#xff08;中綴記法&#xff09; 中綴表達式是一種通用的算術或邏輯公式表示方法&#xff0c;操作符以中綴形式處于操作數的中間。中綴表達式是人們常用的算術表示方法。 前綴表達式&#xff08;前綴記法、波蘭式&#xff09; 前綴表達式是一種沒有括號的算術表…

Moravec角點檢測算子

Moravec角點檢測算子 Moravec 在1981年提出Moravec角點檢測算子[1]&#xff0c;并將它應用于立體匹配。 首先, 計算每個像素點的興趣值, 即以該像素點為中心, 取一個w*w(如:5x5)的方形窗口, 計算0度、45度、90度、135度四個方向灰度差的平方和, 取其中的最小值作為該像素點的興…

java習題-練習1

1、 Given the string, check if it is a palindrome.&#xff08;回文&#xff09; Example For inputString "aabaa", the output should becheckPalindrome(inputString) true;For inputString "abac", the output should becheckPalindrome(inputSt…

文件夾生成工具

很簡單的一個小工具,輸入一個字符串,可以為你生成相應的文件夾. 至于有什么用?我公司一個策劃拿一頓飯給我要的. 下載地址: http://pan.baidu.com/s/1d0ewl 轉載于:https://www.cnblogs.com/WhyEngine/p/3350053.html

java中System.exit(1)、System.exit(0)、以及return的區別

System.exit(0)是正常退出程序&#xff0c;而System.exit(1)或者說非0表示非正常退出程序System.exit(status)不管status為何值都會退出程序。 和return 相比有以下不同點&#xff1a;return是回到上一層&#xff0c;而System.exit(status)是回到最上層

(轉載)深入理解Linux中內存管理---分段與分頁簡介

首先&#xff0c;必須要闡述一下這篇文章的主題是Linux內存管理中的分段和分頁技術。 來回顧一下歷史&#xff0c;在早期的計算機中&#xff0c;程序是直接運行在物理內存上的。換句話說&#xff0c;就是程序在運行的過程中訪問的都是物理地址。如果這個系統只運行一個程序&…

eclipse解決Android Library Project jar包重復導致的問題

Android Studio部分情況下用起來還是有些不適應的地方&#xff0c;用eclipse熟練了&#xff0c;在趕項目進度的情況下還得重拾eclipse。下面是今天碰到的一個老問題。 1.在導入Android Library工程文件的時候要把library一起拷貝到workspace中 2.在導入的Android Library工程文…

java中main函數的args參數

先說一下args的作用&#xff1a;我們習慣將一些有用的參數傳遞給我們定義的函數&#xff0c;那么可曾想過有參數傳遞給main函數&#xff1f;args就是傳遞給main函數的一個數組參數。可是main函數作為程序(application程序)的入口點&#xff0c;是由系統自動調用的&#xff0c;怎…

算法:排序算法的比較

默認為遞增順序&#xff1b;注&#xff1a;一下例子希望自己再次復習時&#xff0c;可以用筆在紙上畫畫內存圖。 包括有: 選擇排序冒泡排序插入排序 1.選擇排序 <--------------------------------------選擇排序---------------------------------------> 1、選擇排…

LTTng 簡介使用實戰

一、LTTng簡介 LTTng: (Linux Trace Toolkit Next Generation),它是用于跟蹤 Linux 內核、應用程序以及庫的系統軟件包。LTTng 主要由內核模塊和動態鏈接庫(用于應用程序和動態鏈接庫的跟蹤)組成。它由一個會話守護進程控制,該守護進程接受來自命令行接口的命令。babeltrace 項…

黑馬程序員-------------(十)Java基礎知識加強(一)

JDK1.5新特性 目錄1.之前已經學習過的JDK1.5新特性2.靜態導入 StaticImport3.可變參數 ...4.高級for循環5.枚舉6.泛型 Generic7.注解注&#xff1a;本章全部為重點內容。###################################################################################################…

java例子:數組 數3退1

500個人圍成一個圈子&#xff0c;數夠3人&#xff0c;就退出1個&#xff0c;問最后剩下的是幾號&#xff1f;檢驗先有5個人&#xff0c;應該留下第4個人&#xff0c;由于是數組&#xff0c;所以第四個人的下標是3. /*achieve the funtion :count 3 kids, the quit the third k…

Android版CCLabelTTF在setstring時出現黑塊

首先有個前提知識&#xff0c;cocos2dx里&#xff0c;只能在ui線程&#xff08;通常也就是主線程&#xff09;中進行渲染工作&#xff08;貌似現在有一些引擎是支持多線程渲染的&#xff0c;沒有深入研究&#xff09;&#xff0c;否則大約會因為多個線程同時給GPU發指令而出現問…