比賽鏈結
題解b題
構造題先找構造括號效率比較高的方法
(()) 這種括號裡面套括號效率比較高而且合法
所以思路就是對所給整數開方,剩餘的零頭我們用列舉的方法。
但是對於一些資料直接用開方得到的數x構造的話,會導致零頭太小,不好構造零頭
第一步構造的是乙個對稱的括號,有x個左括號,如果零頭小於x的話,就不好構造零頭。所以如果零頭小於x的話,就選擇把x縮小1,再構造零頭就可以了。
**如下
#
include
#include
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
const
int max =
5000
;ll n, k;
int p[max]
,v[max]
,cnt;
void
xxs()}
}void
work()
ll x =
(int
)sqrt
(k);
ll sum = k - x * x;
ll a = sum - x;
if(a <=0)
for(ll i =
1; i <= x; i++
)printf
("(");
for(ll i =
1; i <= x; i++
)printf
(")");
for(ll i =
1; i <= a;
++i)
printf
("(");
printf
(")");
cout << endl;
}int
main()
i題
也是構造題
首先觀察資料範圍
所要求構造的對數, 是小於n/2的,這可以聯想到用奇偶數構造。
由於n個偶數只能構造 n - 1 對
所以要分兩種情況 k<=n/2 和 k == n/2;
其次第二種情況我們要用 3 的倍數來構造(用偶數構造其實是用的2的倍數,如果k沒有限制範圍,還可以用 5 的倍數等等,即質因數的倍數來構造),而用一次3的倍數構造,就可以把6拿出來,因為6也是2的倍數並且是同時為2和3倍數中最小的。
#
include
using
namespace std;
int n,k;
intmain()
else
for(
int i =
1; i <= k;
++i)
if(i *2!=
6)printf
("%d "
, i *2)
;printf
("6 3 ");
for(
int i =
1; i <= n; i +=2)
if( i !=3)
printf
("%d "
, i)
;//for(int i = 1; i <= n; ++i)
// if( i*2-1 != 3) printf("%d ", i * 2 - 1);
// if(n % 2 != 0) printf("%d",n);
// 這個輸出方式很容易忽略掉最後乙個n導致出錯,如果是奇數,n不會輸出,所以要打個補丁
}return0;
}
j題
最大的乙個質因子就是 滿足 2 * pi(一次方) <= n / 2
關於求剩餘數的lcm
由唯一分解定理
2 * 2 * 2 * 3 * 3 與 2 * 2 * 3 * 3 * 3 這兩個數的lcm
就是 取這兩個數 2的最高次冪 與 3的最高次冪的乘積
n個數的lcm就是圖中的結論
#
include
using
namespace std;
#define
n80010000
#define
lllong
long
int num[n]
, prim[
5000060];
int pn =0;
const ll mod =
1e9+7;
void
table()
}}intmain()
for(i =
1; prim[i]
<= n /
2; i++
)// 從質數3開始遍歷求直到 pi
ll temp2 =1;
while
(temp2 *
2<= n /
3) temp2 *=2;
// 單獨求一下2的最高次方
res = res * temp2 % mod;
cout << res;
}
牛客寒假多校第一場A
題目描述 在絕地求生 吃雞 遊戲裡,不同的槍枝有不同的威力,更是可以搭配不同的配件,以提公升槍枝的效能。每一把槍都有其威力及其可裝備配件種類。每乙個配件有其所屬種類,可以為槍枝提供威力的百分比加成。每一把槍只能裝備乙個同類配件。給你n把槍枝和m個配件,槍的威力為p,可裝備的配件數量為k,為k個不同型...
牛客2023年度訓練聯盟熱身訓練賽第一場E題
知識點 單調棧 ac include include include using namespace std int a 200005 int vis 200010 int last 200005 int s 200005 int top intmain for int i 1 i k i for ...
牛客2023年度訓練聯盟熱身訓練賽第一場(講題)
e題 early orders 題意 給定 n k 和長度為n的陣列x i 1 k n 2e5,1 x i k 要在這個陣列裡找乙個長度為k的子串行,使得數字1到k在這個序列裡各出現一次,輸出字典序最小的子串行 輸入保證陣列 x i 包括了1到k的所有數字 思路 很容易想到貪心地選擇小的數放在前面,...