原创 SCPC :普普通通的DP(&位運算)

傳送門 題目描述: 給你一個n*m的矩陣,你需要從左上角走到右下角,你每次只能向下或者向右走,並且不能走出矩陣之外。 只要你走到終點之後,你就會獲得獎勵,獎勵的金額爲:所有經過的元素做“與”運算(津巴韋布)。 幫自己算一算,你能獲

原创 Codeforces D. Yet Another Yet Another Task (區間和 / 貪心)(Round 88 Div.2)

傳送門 題意: 有一個數組a,找得到其(最大區間和sum - 區間內最大元素maxx)的最大值。 思路: 每次遇到這周大範圍的區間和問題就沒轍,其實都是些很巧妙的思維 因爲答案ans的最小值爲0,所以只需考慮正整數元素;又因元

原创 Codeforces D. Maximum Sum on Even Positions (思維 / 最大子段和)(Round 90 Rated for Div.2)

傳送門 題意: 現有一個數組a,你可以翻轉一次任意一段子序列,以使所有偶數位(下標從0開始)的和max。 思路: 顯然選擇的序列必須是偶數個數,因爲奇數個數翻轉後根本沒有意義(在實現代碼時下標可以從1開始方便處理,取奇數位的和

原创 Codeforces C. Palindromic Paths (迴文串 / 思維) (Round 89 Rated for Div.2)

傳送門 題意: 有一個由0和1組成的n * m矩陣,試問最少改變多少個數,可以使從(1,1)到(n,m)的所有路徑都是迴文串,輸出最小改變的數量。 思路: 若要讓所有路徑爲迴文串,即以(1,1)爲圓心k爲半徑的環和以(n,m)

原创 Codeforces C1. Simple Polygon Embedding (數學 / 計算幾何) (Round 87 Rated for Div.2)

傳送門 題意: 找到能放下正n(n爲偶數)邊形的最小正方形的邊長。 思路: 要想正方形最小,則得與多邊形內切;因此多邊形必定與正方形始終有4條邊相切,且每次增加邊都是四個角的四個角的倍數(即2 * 2) 那麼很容易就能找到每條

原创 Codeforces C2. Not So Simple Polygon Embedding (數學 / 計算幾何) (Round 87 Rated for Div.2)

傳送門 題意: 找到能放下正n(n爲奇數)邊形的最小正方形的邊長。 思路: 啊啊啊!其實我也不會,看了兩位大佬的博客也是似懂非懂的,感覺可比C1難多了 大佬博客1 , 大佬博客2 代碼實現: #include <cstdio

原创 Codeforces D. Game With Array (構造) (Round #643 Div.2)

傳送門 題意: 需要你構造一個n個正整數元素的數組,必須滿足數組元素總和爲s,且存在一個k,(0 <= k <= s),使得找不到任何非空子數組的元素和等於 k 或 s - k,如果有這樣的數組,輸出YES和任意輸出數組元素,並且

原创 POJ 3579 Median (二分套用)

傳送門 題意: 給N數字, X1, X2, … , XN,我們計算每對數字之間的差值:∣Xi - Xj∣ (1 ≤ i < j ≤ N). 我們能得到 C(N,2) 個差值,現在我們想得到這些差值之間的中位數。 如果一共有m個差值

原创 Codeforces C. Move Brackets (思維) (Round #653 Div.3)

傳送門 題意: 給你一個只有圓括號的字符串,並規定了標準字符串的形式—每一個後括號在其前方都能找到和它一對一匹配的前括號。對於給定的字符串,可以選定某些字符將其移動到最前或最後。試問,要將給定字符串變成標準字符串至少需要移動多少個

原创 Codeforces C. Count Triangles (數學 / 前綴和) (Round #643 Div.2)

傳送門 題意: 現有A,B,C,D四個數,試問可以找出幾個x,y,z三邊構成的三角形,且滿足A<=x<=B<=y<=C<=z<=D。 思路: 總所周知三角形必須兩邊之和大於第三邊,即可尋找x + y > z情況數量 而a +

原创 Codeforces E. Special Elements (前綴和) (Round #640 Div.4)

傳送門 題意: 現有一個數組區間a,定義一種特殊數—數x = sum(al+…+ar),期間(1 <= l <= r <= n)。試問該區間內有多少個特殊數。 思路: 先將所有數據裝桶統計,再進行前綴和處理 由於所有數據不會

原创 Codeforces D. AND, OR and square sum (二進制 / 位運算) (Global Round 8)

傳送門 題意: 現有一個數組a,選兩個不同下標的數一個賦值爲二者的 ’ & ‘值,另一個賦值爲二者的’ | '值。最後計算所以ai ^ 2的和ans,求ans的最大值。 思路: 1的個數不會變:例如3 和 5,011 & 10

原创 Codeforces C. Ehab and Prefix MEXs (思維) (Round #649 Div.2)

傳送門 題意: 給定長度爲n的數組a,找到長度爲n的另一個數組b,使得: 對於每個i(1≤i≤n)MEX({b1,b2,…,bi})= ai。 一組整數的MEX是不屬於該組的最小非負整數。 如果這樣的數組不存在,輸出-1。 思路

原创 Codeforces D. Task On The Board (思維 / 構造) (Round #650 Div.3)

傳送門 題意: 現有一個初始字符串a,可在其上刪除一些字符(也可以不刪)得到中間字符串t。而t含有m個字符,對應符合一個標準數組b;使得b[i]正好等於t[i]與t中其他比t[i]字典序大的字符索引j的 |i - j| 的和。先給

原创 Codeforces D. Multiset (樹狀數組 & 二分)(Round 87 Rated for Div.2)

傳送門 題意: 現有一個多元集合,你有如下兩種操作: 將數k加入多元集合中 找到多元集合升序第k位,並將其刪除 最後打印出集合中的任意元素,若集合爲空直接輸出0。 思路: 利用樹狀數組統計數值下標的個數, 通過樹狀數組的前