A 小L的作文
链接
水题不多说
统计字符就完了
int main(){
char s; cin >> s;
int ans = 0;
string t; cin >> t;
for(int i=1;i<=t.size();i++){
if(t[i-1] == s) ans ++;
}
cout<<ans;
return 0;
}
B 小L的多项式
链接
硬模拟
两层for,记得取模
ll a[maxn];
ll x[maxn];
int n,m;
ll ans[maxn];
int main() {
cin >> n;
for(int i=0;i<=n;i++) a[i] = read;
cin >> m;
for(int i=1;i<=m;i++) x[i] = read;
for(int i=1;i<=m;i++){
for(int j=0;j<=n;j++){
ans[i] += a[j] * qPow(x[i],j);
ans[i] %= mod;
}
}
for(int i=1;i<=m;i++){
printf("%lld",ans[i]);
if(i != m) printf(" ");
}
return 0;
}
C 小L的编辑器
链接
注意,直接使用string可能会T(不是可能,是必然,因为试过了):
string a,b;
int main() {
string s; cin >> s;
string t; cin >> t;
int len = s.size();
for(int i=0;i<len;i++){
if(t[i] == 'L') b = s[i] + b;
else a = a + s[i];
}
cout<<a+b<<endl;
return 0;
}
Ac_Code():
用双端队列模拟就行了,换一种方式而已
deque<int>que1;
deque<int>que2;
int main() {
string s; cin >> s;
string t; cin >> t;
int len = s.size();
for(int i=0;i<len;i++){
if(t[i] == 'L') que2.push_front(s[i]);
else que1.push_back(s[i]);
}
while(que1.size()){
printf("%c",que1.front());
que1.pop_front();
}
while(que2.size()){
printf("%c",que2.front());
que2.pop_front();
}
return 0;
}
D 小L的数列
int T,dp[maxn],n,a[maxn];
int b[maxn];
int va[maxn];
int main(){
/// cout<<sqrt(100000)<<endl;
T=read();
while(T--){
n=read();
int mx = -1;
for(int i=1;i<=n;i++) a[i]=read(),mx = max(mx,a[i]);
sort(a+1,a+n+1);
memset(dp,0,sizeof dp);
memset(b,0,sizeof b);
memset(va,0,sizeof va);
for(itn i=1;i<=n;i++){
if(a[i] == 1) continue;
int t = 0;
for(int j=1;j*j <= a[i];j++){
if(a[i] % j == 0){
int a1 = j;
int a2 = a[i] / j;
if(a1 == a2){
if(a1 > 1){
dp[a[i]] = max(dp[a[i]],b[a2] + 1);
}va[++t] = a2;
}else{
if(a1 > 1) dp[a[i]] = max(dp[a[i]],b[a1] + 1);
va[++t] = a1;
if(a2 > 1) dp[a[i]] = max(dp[a[i]],b[a2] + 1);
va[++t] = a2;
}
}
}
for(int j=1;j<=t;j++){
if(va[j] > 1) b[va[j]] = max(b[va[j]],dp[a[i]]);
}
}
int ans =1;
for(int i=1 ;i<=n ;i++) ans = max(ans,dp[a[i]]);
cout<<ans<<endl;
}
}