2017.11.3 t1 2032
樣例資料
輸入
3 2輸出1 2 1
1 2
4 5
2分析:這道題為什麼要放在t1……考得我懷疑人生。本來也只會暴力找,對於30%的資料我是這樣的:先離散化,再二維陣列記錄所有顏色的在每個位置的字首和,然後四層迴圈暴力查詢。6
而正解是:先離散化,再把每種顏色的每乙個位置壓入vector陣列,然後查詢到某兩個顏色的時候就在這兩個顏色的vector陣列裡查詢,用乙個sum,是第一種顏色就sum++,第二種顏色就sum–,這樣sum相同地方之間的區域就是兩種顏色出現次數一樣的區間,計算貢獻。
**
我那30%都打錯了,就不獻醜了……這是100%
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int getint()
for(;isdigit(ch);ch=getchar())
sum=(sum<<3)+(sum<<1)+ch-48;
return sum*f;
}const int n=8005,m=500005;
struct node
q[m];
int n,m,q;
int a[n],b[n],cnt[n<<1],exist[n<<1],ans[m];
vectorp[n];
bool comp(const node &a,const node &b)
void lsh()//把顏色、詢問離散化並把顏色的位置放到vector裡(先看solv會更好理解)
}void solv(int
x,int
y,int vt)
else//是另一種顏色,sum--,其他一樣的
}ans[vt]=tmp;//把ans放到對應的位置
}int main()
本題結。 NOIP2017模擬 鴨舌
題目 小美喜歡吃鴨舌。有乙個 n 個點的樹,每個節點 i 第 i 個點上有 ai 個鴨舌。小美一開始處於 x 號點。每次小美可以選擇乙個與現在的點有邊的點而且那個點還有鴨舌,那麼小美會走到那個點並吃乙個鴨舌。要保證小美最後還是走到 x 號點。問小美最多能吃幾個鴨舌?輸入格式 輸入第一行乙個整數 n ...
NOIP2017模擬 舉辦比賽
2017.8.27 t1 1946 樣例資料1 輸入5 5 1 2 3 4 5 輸出 樣例資料2 輸入10000000 10000000 555 888 777 666 12345 輸出 分析 第一次做這種隨機概率題 看到資料那麼大o n 的做法根本想不到就直接放棄了。結果就是個撞運氣的ffffff...
NOIP2017模擬 太空電梯
2017.8.29 t1 1952 樣例資料 輸入6 6 1 2 3 3 4 5 輸出 分析 基本上是用貪心,就是找正好一胖一瘦沒法一起進電梯的一前一後,如果瘦的無法滿足,就和另外乙個瘦子一起把電梯人數擠滿 注意最後只剩乙個人時也要搭一次電梯 include include include incl...