總結:菜。
傳送門題意:擲骰子,給長度為n的陣列指點數,每個被擲中概率為1/n,m個特殊骰子,擲中還能擲一次,求期望。
題解:水題,算出不能多擲的期望,與多擲一次的概率,聯立方程直接算出ans既可。
#includeusing namespace std;
int n,m,lin,ok[1007],ok2;
double a[1007],ans,c,c2;
int main()
} scanf("%d",&m);
for(int i=1;i<=m;i++)
if(n==m)
else
} for(int i=1;i<=n;i++)
c+=((double)1/(double)n*a[i]);
} printf("%.2f\n",c/(1.0-c2)); }
}
傳送門
題意:猜數,告訴你每位數之和與每位數平方之和求最小符合要求的數,答案位數大於100或找不到直接輸出no;
題解:答案大於100直接gg,這個好,那這個數最大就900,平方最大就8100(100個9)。直接想到dp預處理,dp[ i ] [ j ] 意思是當和為 i 時,平方和為 j 時最少需要幾位,dp[ i ] [ j ] = max( dp[ i ] [ j ] , dp[ i - p ] [ j - p * p ] + 1 ),其中 p 為 1 到 9 。再用 pre 陣列記錄最優情況由誰轉移既可。
#include#include#includeusing namespace std;
int dp[1007][10007],maxn=1000000007,s1,s2,t;
int pre[1007][10007];
vectorho;
int main()
} dp[0][0]=0;
for(int i=1;i<=1000;i++)
}else
}} }
scanf("%d",&t);
while(t--)
if(dp[s1][s2]>=maxn)
else
l=s1,r=s2;
while(sum--)
sort(ho.begin(),ho.end());
for(int i=0;i傳送門
題意:n個人,名字,最開始在某個地方,有多少錢,統計 m 天,人有 t 次換城市操作,t行,告訴你第幾天走,誰走了,去了哪(人移動後會把他的錢帶走),輸出每個城市的名字與其的錢大於其他城市的天數,天數為0的不輸出(城市的錢等於該城市人的錢的和)。
題解:單點修改線段樹水題,或用map模擬。
#include#include#include#includeusing namespace std;
#define ll long long
struct homurama[200007];
stack>sa;
struct madokaex[50007];
bool cmp(madoka a1,madoka a2)
int mid=(l+r)/2;
build(l,mid,k*2);
build(mid+1,r,k*2+1);
if(ma[k*2+1].max1>ma[k*2].max1)
else
ll minn=min(ma[k*2+1].max1,ma[k*2].max1);
ll maxn=max(ma[k*2].max2,ma[k*2+1].max2);
ma[k].max2=max(minn,maxn);
}void getall(int k)
getall(k*2);
getall(k*2+1);
}void change(int k,int p,ll money)
int mid=(ma[k].l+ma[k].r)/2;
if(p<=mid)
else
if(ma[k*2+1].max1>ma[k*2].max1)
else
ll minn=min(ma[k*2+1].max1,ma[k*2].max1);
ll maxn=max(ma[k*2].max2,ma[k*2+1].max2);
ma[k].max2=max(minn,maxn);
}int main()
a[di[s2]]+=lin;
pw[cntp]=di[s2];
} scanf("%d%d",&m,&t);
for(int i=1;i<=t;i++)
ex[i].d=di[s2];
} sort(ex+1,ex+1+t,cmp);
build(1,cntd,1);
int head=1;
for(int i=1;i<=m;i++)
for(int j=head;j<=t;j++)
else
} }map::reverse_iterator iter;
for(iter = di.rbegin(); iter != di.rend(); iter++));
} }
while(!sa.empty())
int main()
dp[a[1]]=0;
pos[a[1]]=1;
for(int i=2;i<=n;i++)
} int p = pos[a[n]];
while(p!=0)
printf("%d",sa.top());
sa.pop();
while(!sa.empty())
puts("");
} return 0;
}
校內團隊訓練賽2
總結 太慘了,卡水題卡兩小時,直接飛了。題目如下 傳送門 題意 給n表示陣列長度,m個關係,每個關係兩個索引,表示這兩個索引之間的值必須滿足大於或小於關係。然後構造兩個陣列,第乙個陣列是1到n的排列,第二個陣列至少有一對數值相等,兩個陣列都要滿足所有關係,能構造輸出方案,不能輸出no。分析 主要還是...
訓練 9 13 訓練賽
a.hdu 6230 乙個合法的子串 s 3n 2 滿足條件即1 2n 1 為以n為回文中心的回文串,n 3n 2為以2n 1為中心的回文串。故我們可以通過尋找回文中心對,來判斷相應合法子串的個數。利用manacher求出每個位置的最長回文半徑,則若i,j滿足條件 i j 則應有 p i geqsl...
訓練賽 詠歎
安師大附中訓練題目 給定乙個1到n的排列a,對其進行氣泡排序 counter 0 while a不是公升序的 counter counter 1 for i 1 to n 1 if a i a i 1 then swap a i a i 1 endifend forend while那麼經過幾輪排序...