NOIP 2018訓練賽第四場

2021-08-28 16:54:56 字數 1482 閱讀 9338

給乙個 n 行 t 列的矩陣,矩陣第 i 行第 j 列的元素是 i+j。

定義矩陣第 i 行的積為第 i 行所有元素的乘積。 

現在要你求矩陣所有行的積的和。答案可能很大,所以 mod 1000000007輸出。

100%, 1≤t≤10000 1≤n≤1e10, 1≤t≤1000

也就是求:

你開啟了某著名 oj 準備刷題。

這個 oj 上一共有 nn 道題,並且你知道你刷第 ii 道題會獲得 aiai 的智慧型值。對於每道題你都有兩種選擇:嘴巴切題和老實碼完,第 ii 題老實碼完需要花費時間 titi,但是嘴巴切它只需要花費 ⌈ti2⌉⌈ti2⌉。一道題不管是嘴巴切還是老實碼,都可以獲得智慧型值,但是你也不想做乙個嘴巴選手,所以你允許自己最多嘴巴切 ww 個題。

你算了下自己總共有 ss 的時間,並且你有強迫症,只想從某道題開始順著往下做,也就是你只想做連續一段的題。問在這 ss 時間內最多可以獲得多少智慧型值。

用兩個set維護即可,s1,s2,s1記錄的是直接做的,s2記錄的是口胡的,然後用two-pointer維護,然後從s2中選乙個最小的,放到s1裡面,然後維護就可以了。

在比賽中我是用樹狀陣列+二分維護的,雙log,打錯了乙個-,所以就沒有過。

#include#include#include#include#define lowbit(i) (i&(-i))

using namespace std;

int n,w,s;

int a[200010];

int t[200010];

int p[10010];

int b[10010];

int c[10010];

int temp=10000;

int ans=0;

int nowa=0,nowt;

void add(int x,int tp)

}int get_sum(int *now,int t)

int check()

else l=mid+1;

} return ans;

}int main()

if(we>s) break;

else ans=max(ans,nowa);

} while(l<=r)

l++;

if(we<=s)

} }printf("%d",ans);

}

給你一棵 nn 個點的無根樹,點的編號是 1−n1−n。葉子指的是一顆有根樹沒有孩子的結點。乙個友善的葉子集合是由一些葉子組成的非空集合,且滿足,這些葉子,在某種 dfs 順序下(即存在一種 dfs 順序),按 dfs 順序取出所有葉子,友善的葉子集合裡的葉子在這裡面是連續的(順序無所謂)。現在問你,當這棵樹的根是 ii 的時候,一共有多少種友善的葉子集合。答案mod考慮對於每棵子樹,是選一邊,選全部還是不選。很麻煩,直接暴力60

UPC2018組隊訓練賽第四場

題目來自naipc2018 d題 missing gnomes 直接模擬 1 include2 3using namespace std 4 typedef long long ll 5 bool check 100050 6 int uncheck 100050 7 int op 100050 8...

暑期個人賽 第四場 A

時間限制 2000 ms 記憶體限制 65536 kb 大家都回了本部,本部生活雖然沒有巨集福天 mo 堂 gui 般的生活,但是卻有很多外賣,今天有一家飯店新開張,凡是兩個人的餐點費用之和剛好為m可以免運費,在今天一起點外賣且免運送費的兩個人,各自點的外賣 差值最小的有大驚喜。在機房的n個同學今天...

第四場膜你賽總結

前言 這場比之前的能做多了qwq 題目 題解 t1 原題 nkoi 3539 移棋子遊戲 6月月賽題a 題意 明明和亮亮在玩乙個遊戲。桌面上一行有n個格仔,一些格仔中放著棋子。明明和亮亮輪流選擇如下方式中的一種移動棋子 圖示中o表示棋子,表示空著的格仔 1 當一枚棋子的右邊是空格子的話,可以將這枚棋...