t1
為了避免晚上種種事情導致寫不成題解就先把t1寫了,畢竟也是很值得寫的。
我這道題憑著乙個半感性半理性的想法意外的水到了80分……真的是很考人品啊【學競賽啊,墜重要的就是人品!】
先看正解:
我們可以這樣化: t=
(((s
∗bk1
+i1∗
a)∗b
k2+i
2∗a)
∗bk3
+i3∗
a)∗b
k4+.
....
. 再化簡一下: t=
s∗bk
1+..
.+kn
+i1∗
a∗bk
2+..
.+kn
+...
+in∗
a∗bk
n 所以我們可以在最外層列舉k1
+...
+kn ,然後把剩餘的值/a,開始遞迴,接著依次列舉k2
+...
+kn,
k3+.
..+k
n,..
...,
kn每次使它們的值盡量大,這樣得到的加減次數就會盡量小了。
我的那個詭異的方法是怎麼回事晚上補#include
#include
#include
using namespace std;
const int inf=1e9;
ints,t,a,b;
int mpow[30];
int solve(int
x,int tmp)
}}
}int main()
}if(ans==inf) printf("-1");
else
printf("%d",ans);
return
0;}
t3 易理解具有二分性質
易理解進行x輪操作,可以把小b的操作全部提到前面。
把每個數指向它應該在的位置,如果形成了乙個環,那麼環內交換的數一共只用「環內數字-1」
例:1 3 2 5 4
9 7多校聯考
題目描述 給定了乙個正整數 n。有多少種方法將 n 分解成為四個質數 a,b,c,d 的和。例如 9 2 2 2 3 2 2 3 2 2 3 2 2 3 2 2 2,故共有 4 種方法將 9 分 解成為四個整數。輸入格式 本題多組資料測試 第一行讀入乙個整數 t 表示資料組數。接下來共 t 行,每行...
2020多校聯考 樹
沒有定根就非常的離譜,後來告訴根直接就是 1 先考慮鏈上怎麼做,顯然維護乙個單調棧,求出第乙個比當前數大的位置,然後倍增即可。再放在樹上怎麼做?依舊維護單調棧,但這次不能暴力地彈掉棧頂元素了,因為這樣的複雜度是假的。因為單調棧有單調性,所以直接在單調棧內二分出單調棧彈得不能再彈的位置,然後修改 to...
2020多校聯考 手套
有兩個可重集 a 和 b 每個集合裡有若干元素,每種元素有若干個。可以選擇從 a 集中等概率隨機選 x 個到 c 集 從 b 中等概率隨機選擇 y 個到 d 使得一定會使 c 和 d 有交。最小化 x y 在 x y 相等時最小化 x 因為要使得一定有交,所以考慮選了一定數目後,沒有交的最壞情況。最...