前言
半小时AC,1小时罚座
传送门 :
A.
分类讨论,直接输出
MyCode
void solve()
{
int a,b,c,x;
cin>>a>>b>>c>>x;
if(x <= a){
cout<<"1.000000000000"<<endl;
return;
}
if(x > b){
// printf("%.12f",c / (double)(b-a));
cout<<"0.000000000000"<<endl;
return;
}
printf("%.12f",c / (double)(b-a));
// cout<< c / (double)(b-a)<<endl;
}
B.
map存一下,然后按照字典序输出即可
(没记错String好像本身自带排序的,Java的还是C++的忘记了)
MyCode
void solve()
{
string s;cin>>s;
int len = s.size();
for(int i=0;i<len;i++){
mp[s[i] - 'a'] ++;
}
for(int i = 0 ;i<26;i++){
if(mp[i]){
while(mp[i] -- )
cout<<(char)(i+'a');
}
}
// cout<<s<<endl;
}
C.
状态表示 $f[i][j]$ 第$i$位,是$j$的方案数
状态计算
$f[i][j] +=f[i-1][j]+f[i-1][j-1]+f[i-1][j+1] .. \%MOD$
MyCode
const int N = 1e6+10,MOD = 998244353;
int f[N][10];
void solve()
{
int n;cin>>n;
for(int i = 1 ;i<= 9 ; i++)
f[1][i] = 1;
// f[0][0] = 1;
for(int i=2;i<=n;i++){
for(int j=1;j<=9;j++){
f[i][j] = (f[i][j]%MOD + f[i-1][j]%MOD)%MOD;
if(j+1 <= 9 )
f[i][j] = (f[i][j]%MOD + f[i-1][j+1]%MOD)%MOD;
if(j-1 >=1 )
f[i][j] = (f[i][j]%MOD + f[i-1][j-1]%MOD)%MOD;
}
}
int ans =0 ;
for(int j=1;j<=9;j++){
ans = (ans%MOD + f[n][j]%MOD)%MOD;
}
cout<<ans<<endl;
}
D题卡死
E题没看
F题没看
G题没看 QAQ ,