Codeforces 898E Squares and not squares

題目大意

給定 $n$($n$ 是偶數,$2\le n\le 2\times 10^{5}$)個非負整數 $a_1,\dots, a_n$($a_i\le 10^9$)。
要求將其中 $n/2$ 個數變成平方數,另外 $n/2$ 個數變成非平方數,變化后的數必須仍是非負整數。
將 $x$ 變成 $x'$ 的代價為 $|x-x'|$ 。
求最小的總代價。

比賽時我的思路

用 $c_{i,0}$ 表示將 $a_i$ 變成平方數的最小代價,$c_{i,1}$ 表示將 $a_i$ 變成非平方數的最小代價,不難求出這兩個值。
那么問題轉化為

從 $c_{1,0}, c_{2,0}, \dots, c_{n,0}$ 和 $c_{1,1}, c_{2,1}, \dots, c_{n,1}$ 中各取出 $n/2$ 個數,限制條件是:$c_{i,0}$ 和 $c_{i,1}$ 不能都取。
求取出的數的最小和。

比賽時我想到這里就進展不下去了。

轉化后的問題的解法

對于任意一個合法的取數方案,如果不是最優解,則必然存在 $i, j$ 滿足:

  1. $c_{i,0}, c_{j,1}$ 在所取的數中,且
  2. $c_{i,0} + c_{j,1} > c_{i,1} + c_{j,0}$ 。

第二個條件可化為
$c_{i,1} - c_{i,0} < c_{j,1} - c_{j,0}$

這樣便得出這個問題的解法:

將下標 $1, 2,\dots,i,\dots, n$ 按 $c_{i,1} - c_{i,0} $ 從小到大排序,對前 $n/2$ 個下標取 $c_{i,1}$,對后 $n/2$ 個下標取 $c_{i,0}$ 。

題解上解法

統計輸入的 $n$ 個數中平方數和非平方數的個數,分別記做 $c_0, c_1$。
若 $c_0 = c_1$ 則無需改變。
若 $c_0 > c_1$ 則需要把 $(c_0 - c_1)/2$ 個平方數變成非平方數。對于非零的平方數,加 1 即可,零則須加 2 。所以,優先改變非零的平方數。
若 $c_0 < c_1$ 則需把 $(c_0 - c_1)/2 $ 個非平方數變成平方數。

轉載于:https://www.cnblogs.com/Patt/p/8052993.html

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

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

相關文章

UTC時間

每個地區都有自己的本地時間&#xff0c;在網上以及無線電通信中時間轉換的問題就顯得格外突出。我自己就經常混淆于此&#xff0c;特地研究了一下&#xff0c;記錄在此以備忘。 整個地球分為二十四時區&#xff0c;每個時區都有自己的本地時間。在國際無線電通信場合&#xff…

Virtualbox橋接網卡設置

正常情況下&#xff0c;像設置virtualbox虛擬機的橋接網卡非常簡單&#xff0c;只需要點配置&#xff0c;然后在配置界面點擊網絡&#xff0c;然后在右邊的網絡里選擇橋接網絡即可。但是如果這么簡單就好了&#xff0c;今天要說的就是在不正常的情況下是怎么設置的。 工具/原料…

利用CSS、JavaScript及Ajax實現圖片預加載的三大方法

預加載圖片是提高用戶體驗的一個很好方法。圖片預先加載到瀏覽器中&#xff0c;訪問者便可順利地在你的網站上沖浪&#xff0c;并享受到極快的加載速度。這對圖片畫廊及圖片占據很大比例的網站來說十分有利&#xff0c;它保證了圖片快速、無縫地發布&#xff0c;也可幫助用戶在…

ThinkJS前端搭配vue時的Nginx配置

Thinkjs 作為奇舞團開源的nodejs mvc框架之一&#xff0c;引起了很多NodeJS程序員的親賴。但是其關于靜態文件處理部分支持不夠完善&#xff0c;主要是體現在SPA單頁應用&#xff0c;之前在ThinkJS 2.*版本時寫過一個關于處理單頁應用靜態資源的middleware think-resource-spa,…

SQL疑難雜癥【4 】大量數據查詢的時候避免子查詢

前幾天發現系統變得很慢&#xff0c;在Profiler里面發現有的SQL執行了幾十秒才返回結果&#xff0c;當時的SQL如下&#xff1a; 可以看得出來&#xff0c;在652行用了子查詢&#xff0c;恰巧目標表(QS_WIP)中的記錄數為100000000&#xff0c;通過如下SQL可以得到&#xff1a; S…

2020-11-27

總結各種RGB轉YUV的轉換公式 如果數據位寬都以8位來說.ITU709:允許 0~255之間所有數據 ITU601:只允許 16~235之間數據, 601是SDTV的數據結構&#xff1b; 656是SDTV的interface 709是HDTV的數據結構 &#xff1b;1120是HDTV的interface 最近在學習視頻的顏色空間轉換&#x…

python學習筆記1-基礎語法

1 在3版本中print需要加上括號2 多行語句&#xff1a;用\連接 1 item_one1 2 item_two2 3 item_three3 4 total item_one \ 5 item_two \ 6 item_three 7 print (total) 3 引號   字符串通常在引號中 不管是單引號 雙引號還是三引號   必須保證前后一致…

『原創』一個基于Win CE 5.0的Txt文件閱讀器

最近&#xff0c;拿到一臺親戚送的GPS導航儀&#xff0c;其系統是基于WinCE5.0的&#xff0c;所以我覺得可以寫點小程序上去&#xff0c;上網一搜&#xff0c;還附帶破解方法&#xff0c;把GPS破解后就變成一臺屏幕超大的PDA了&#xff0c;于是我想用它看電子書&#xff0c;無奈…

ARM Cortex-A系列(A53、A57、A73等)處理器性能分類與對比

在如今這個電子產品泛濫的年代&#xff0c;僅僅靠品牌或是外觀已經不足以辨別產品的優劣&#xff0c;其內置的處理器自然也就成為了分辨產品是否高端的標準之一。那么我們今天就不妨好好了解一下近幾年來電子產品中較為主流的RAM處理器。 在這之前讓我們先簡單認識一下處理器的…

批量創建10個系統帳號tianda01-tianda10并設置密碼

#1、添加用戶 useradd tianda01#2、非交互式給密碼 echo "pass"|passwd --stdin tianda#3、01-10 加0思路 (1)echo {00..10}(2)seq -w 10#隨機密碼6種方法 (1)echo $RANDOM | md5sum | cut -c 1-8(2)yum -y install expect mkpasswd -l 12 -d 5 #expect隨機mkpasswd …

DIV常用屬性大全自己整理

一、屬性列表 代碼如下:color : #999999 文字顏色 font-family : 宋體 文字字型 font-size : 10pt 文字大小 font-style:itelic 文字斜體育 font-variant:small-caps 小字體 letter-spacing : 1pt 文字間距 line-height : 200% 設定行高 font-weight:bold 文字粗體 vertical-a…

.NET 3.5 - DLINQ(LINQ to SQL)之面向對象的添加、查詢、更新和刪除

步步為營VS 2008 .NET 3.5(8) - DLINQ(LINQ to SQL)之面向對象的添加、查詢、更新和刪除作者&#xff1a;webabcd介紹以Northwind為示例數據庫&#xff0c;DLINQ(LINQ to SQL)之完全面向對象的添加操作、查詢操作、更新操作和刪除操作示例Sample.aspx <% Page Language&quo…

ARM處理器的分類

對于ARM處理器而言&#xff0c;其目前有Classic系列、Cortex-M系列、Cortex-R系列、Cortex-A系列和Cortex-A50系列5個大類。 Classic系列 該系列處理器由三個子系列組成&#xff1a; ARM7系列&#xff1a;基于ARMv3或ARMv4架構 ARM9系列&#xff1a;基于ARMv5架構 ARM11系列…

Poj 1019

傳送門&#xff1a;http://poj.org/problem?id1019 主要是找數學規律 然后用好pow和log函數&#xff0c;由于數組過大&#xff0c;數組的類型用unsigned 1 #include<iostream>2 #include<cmath>3 using namespace std;4 5 int t;6 int k;7 int n;8 unsigned a[312…

ARM版本系列及家族成員梳理

ARM公司簡介 ARM是Advanced RISC Machines的縮寫&#xff0c;它是一家微處理器行業的知名企業&#xff0c;該企業設計了大量高性能、廉價、耗能低的RISC &#xff08;精簡指令集&#xff09;處理器。 1985年第一個ARM原型在英國劍橋誕生。 公司的特點是只設計芯片&#xff0c…

z-index ie無效

首先來個 解釋了三個原因&#xff1a;http://www.cnblogs.com/hakuci/archive/2011/01/05/1926212.html 我這個還比較特殊 爸爸級別在最底層 遮羞層在中間 兒子最外邊 <div>遮羞層</div> z-index2 <div>爺爺 <div>小爸爸</div> <div>爸…

數據結構與算法問題 AVL二叉平衡樹

AVL樹是帶有平衡條件的二叉查找樹。這個平衡條件必須保持&#xff0c;并且它必須保證樹的深度是O&#xff08;logN&#xff09;。 一棵AVL樹是其每一個節點的左子樹和右子樹的高度最多差1的二叉查找樹。&#xff08;空樹的高度定義為-1&#xff09;。在插入以后。僅僅有那些從插…

tomcat源碼閱讀之StandardHost和StandardEngine

StandardHost及UML類圖&#xff1a; 1、StandardHost類是Host接口的默認實現&#xff1b;其繼承自ContainerBase類&#xff0c;說明他也是一個容器類&#xff0c;既然是容器類&#xff0c;那肯定也有管道對象PipeLine和閥門&#xff0c;其基礎閥門&#xff08;Basic Valve&…

安防監控產業鏈全景梳理

安防行業是隨著現代社會安全需求應運而生的產業&#xff0c;圍繞著視頻監控技術的改革創新&#xff0c;行業從“看得見、看得遠、看得清到看得懂”&#xff0c;一共經歷模擬監控、數字監控、網絡高清監控和智能監控4個階段&#xff0c;每一階段的突破&#xff0c;都由上游技術的…

Vue項目搭建步驟

一&#xff0e; vue-cli初始化1. 全局安裝 vue-cli  npm install --global vue-cli2. 創建一個基于 webpack 模板的新項目  vue init webpack my-project3. 安裝依賴  cd my-project  npm install (換源安裝: npm install --registry https://registry.npm.taobao.org …