原创 2019第十屆藍橋杯C/C++語言A組題目及解析

這個題解是按照我自己的思路來的,沒有特別多的測試數據,也沒有官方正確的題解,若有錯誤望大佬指正。       A:平方和 【問題描述】        小明對數位中含有 2、0、1、9 的數字很感興趣,在 1 到 40 中這樣的數包括 1、

原创 UVA 11491 Erasing and Winning

這個題是我這麼好久以來第一個一遍過的題目了,我哭了。。。一個思路不是很清晰,正確性自己不是很敢確定的算法,寫出來居然一遍過了。而且只用了40ms,O(N)的複雜度。   首先這個題目的方法就是單調隊列。一個遞減的單調隊列。但是這個遞減隊列

原创 突然迸發的一點點想法

學習和休息的鬆弛有度真的是很重要的一點,這一週從週一到現在一共過去3天,僅僅做了5題,上週七天做了20題,感覺這一週有些怠慢了。能夠堅持一種好習慣真的是一種不容易的事情,刷題也是需要習慣,需要慣性,只要有一天停下來,可能就會開始變得鬆懈。

原创 UVA 1610 Party Games

題目的意思還是很容易理解的,代碼也很容易些,但是細節很多,如果屢不清就會錯了也不知道在哪錯的。 我開始的想法就是,對於n的字符串,如果第i個字母都相同就直接輸出,如果不同就輸出排序後的第n/2-1串的第i個字符。 這麼寫僅僅幾個樣例能過。

原创 彩蛋

這是一篇丁大頭的自述。 “丁大頭”的“大頭”從何而來呢?有一天中午,丁某頂着一頭卷卷的頭髮走在校園的小路上,身後有一個小姐姐先是看到了地面上的影子——“頭真的好大!”小姐姐心想着,又擡眼瞧了瞧,不禁驚呼,“丁大頭!” 半年多過去了,這個稱

原创 UVA 714 Coping Books 二分+貪心

二分查找最小的最大值,然後貪心劃分區間 題解:x爲劃分的各個區間之和的最大值,那麼x在[min,max]中,min爲序列中的最小值(0也行,用最小值可以稍微減少二分的時間,),max爲序列之和。 函數P(x)表示當子序列最大值爲x時,能至

原创 codeforces Trip For Meal

週末兩天和隊友打了三場CF,div2,手感相當不錯,前幾個提案都能很快的想出思路來,今天六個題A了四個第五個超時了六分鐘,主要是英語不過關。 Trip for Meal。 題解:如果a是最小的,那麼這人就在A和C之前來回走動吃蛋 b同理,

原创 CF-1130A Be Positive

這個題果真嚇到我了 #include<iostream> using namespace std; int main() { int x=0,y=0; int t,a[105]; cin>>t; for(int i=0;i<t;

原创 UVA11504

題解:設置左右端點 l,r=0,當a[r]不在[l,r]區間是,r++;否則 l++,知道a[r]不在其區間中。 [l,r]區間中的元素可以用set進行判重和刪除操作 #include<bits/stdc++.h> using name

原创 UVA11054

題解:假設 村莊1的酒需求爲a(可能正可能負,代表買酒或賣酒),這裏無須在意a的正負。假設 2 村莊給 1村 a個酒 人力就是a,那麼2村莊的酒需求現在則爲 b+a; 然後村莊3以此類推 #include<bits/stdc++.h>

原创 CF-1130B Two Cakes

用dp。 f[i]表示拿完 第i個tier是的最小的步數 狀態轉移方程見代碼裏 #include<iostream> #include<vector> #include<math.h> using namespace std; cons

原创 codeforce Sorting the Coins

其實這個題看明白了挺簡單的。 題目大意: 給你n個不流通的硬幣,然後每次替換其中一個,每替換一個就詢問一次按照Dima的算法需要幾次才能最終沒有可以相互交換的coin。 每次替換之後,按照Dima的算法執行時,coin的順序是不變的,因爲

原创 HDU-3415 單調隊列

首先單調隊列就是具有單調性的隊列。。。 算了不廢話了,關於單調隊列這裏有一個對於初學者來說簡單明瞭的博客:鏈接 具體步驟:  若隊列爲空,將A[i]從隊尾入隊     若隊列不爲空,將比A[i]大的元素都從隊尾彈出,然後把A[i]入隊  

原创 National Property CodeForces - 876E

這個題我隊友寫的,他正好寫了題解就直接掛他的啦:https://blog.csdn.net/qq_41707809/article/details/88095112

原创 快速排序

#include<bits/stdc++.h> using namespace std; void quick_sort(int* A,int l,int r){ if(l>=r) return; int s=A[l],p=l,q=