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的数列
思路来自:UpMing!
Main_Code()
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; } }