2023年度訓練聯盟熱身訓練賽第一場

2022-09-06 12:21:22 字數 4151 閱讀 7434

鏈結

題意

給定若干個空間中的點,求從三個標準空間直角座標平面進去能夠全部覆蓋這些點的最小半徑

題解

注意

**

#includeusing namespace std;

#define n 1e5+5;

#define inf 99999999;

#define eps 1e-6

#define powe(x) (x)*(x)

struct pointp[5005],o;

struct datadata[5005];//點集

double r;//半徑

int n;

double getd(point a,point b)

point geto(point p1,point p2,point p3)

void min_cir()

;//有兩個點在圓的外邊,求法

r=getd(p[i],p[j])/2.0;

}for(int k=1;keps)}}

}}

}//不斷更新迭代得到的是能夠包含p[i]所有點的最小圓

int main()

參考

鏈結

題意

兩兩之間有兩個字元不同的則可以進行配對,求最小的不配對子集的個數(n-組合優化最大個數)

題解

匈牙利演算法,求組合優化

注意

swap-free永遠的神

**

#includeusing namespace std;

typedef long long ll;

string data[10005];

vectorp[10005];

int pre[10005],vis[10005];

bool check(string a,string b)}}

int cnt=0;

for(int i=1;i<=n;i++)

printf("%d",n-cnt/2);

return 0;

}

參考

鏈結

題意

求某個數乘法加法(乘以自己)均不進製得到的某給定的數,若是找不到則輸出-1

題解

爆搜注意

注意若a(*)a=n,a數字為n,則n數字必為2n-1;

**

#includeusing namespace std;

string s;int a[30];

void dfs(int pos,int len)

參考

鏈結

題意

n個連續的數相加,他們的和若一定是偶數,輸出even,若一定是奇數輸出odd,若即可能是偶數也可能是奇數則輸出either

題解

注意

注意分情況討論

**

#includeusing namespace std;

int main()

return 0;

}

鏈結

題意

給定n個一連串從1到k的數字,求這些數字的字串裡邊字典序最小的序列(字串可以不連續,但是需包含從1到k的所有數字)

題解

條件排除,製造序列

當前這個數比後乙個大,且它的最大下標大於後乙個下標,則需要被踢出,且數列裡頭只容許不相同的數字存在

注意

**

#includeusing namespace std;

int rray[200005],last[200005],vis[200005],ans[200005];

int main()

for(int i=1,j=0;i<=n;i++)

//表示的是ans[j]的位置是大於i的

ans[++j]=rray[i];//先填數字進去

vis[rray[i]]=1;

}for(int i=1;i<=k;i++)

printf("%d ",ans[i]);

return 0;

}

參考

題意

把小動物的體重盡可能均勻的分配,求這個依據分配的數值

題解

類似於將小動物的質量分成兩半,盡可能數值是平均,再去找中間可能的臨界值。

注意

注意剛好平均分配和稍微有一些誤差的情況

**

#includeusing namespace std;

int weight[100005],temp[100005];

int main()

int ans=temp[n]/2;

int x=lower_bound(temp+1,temp+n+1,ans)-temp;

int ansl=temp[x],ansr=temp[n]-temp[x];

if(ansl==ansr)

else

return 0;

}

鏈結

題意

排列組合求解數學問題

題解

概率論數學知識

注意

可以先進行log操作,降低資料長度;注意資料的初始化問題

**

#includeusing namespace std;

//概率論的計算題,嚶嚶嚶

//=m!n!c(365,n)/365^m/d!/f!

//log10(m!)+log(n!)+log(365)-log(連乘d)-log(連乘f)-log(365-n!)-log(n!)-mlog(365);

int c[550],g[550];

double f[36500];

void init()

int main()

double ans=f[365]+f[m];

ans-=f[365-n];

ans-=m*log10(365);

for(int i=0;i參考

鏈結

題意

題解

最短路徑-1

**

#includeusing namespace std;

const int n=1e5+5;

int n,m,a,b,vis[n],dis[n];

vectornode[n];

queueq;

int main()

q.push(1);

vis[1]=1;

while(q.size())

}printf("%d",dis[n]-1);

return 0;

}

2023年度訓練聯盟熱身訓練賽第三場(IJ)

傳送門 題意 你有一輛輪胎會跑氣的自行車,打滿一次氣可以走的距離是d,一開始自行車的氣是滿的,城市中有 n 個點,你要從1點到 n 點,其中有 t 個點處可以給自行車打氣,你只能在自行車有氣的時候走,問從1到 n 的最短路 思路 先跑一遍floyd求出每兩點之間的最短路,然後重新構圖,兩個打氣點之間...

2023年度訓練聯盟熱身訓練賽第一場 C

給你乙個數n,求最小的數x使得x的平方等於n,運算過程中只以個位作為有效數字,比如正常情況4 4 16,在這裡4 4 6 正常情況17 17 289,在這裡17 17 149.首先寫一下乘法豎式。1 首先可以發現,得到的答案的位數一定是乙個奇數,而且是x的位數乘2加1,所以答案位數一定是偶數。那麼如...

牛客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 ...