【LGR-203-Div.4】洛谷入门赛 #28
\(A\) luogu B4042 [语言月赛 202410] 顺序结构 \(AC\)
-
顺序结构。
点击查看代码
int main() { ll a;cin>>a;cout<<3*(5+a)<<" "<<3*a+5<<endl;return 0; }
\(B\) luogu B4043 [语言月赛 202410] 刻度尺 \(AC\)
-
模拟。
点击查看代码
int main() {ll n,a,b;cin>>n>>a>>b;if(a-b>=0||a+b<=n){if(b==0){cout<<a<<endl;}else{if(a-b>=0){cout<<a-b<<" ";}if(a+b<=n){cout<<a+b<<endl;}}}else{cout<<"No solution"<<endl;}return 0; }
\(C\) luogu B4044 [语言月赛 202410] 奇迹战神 \(AC\)
-
模拟。
点击查看代码
int main() {ll n,w,d,ans=0x7f7f7f7f,i;cin>>n; for(i=1;i<=n;i++){cin>>w>>d;ans=min(ans,7*(d-1)+w+1);}cout<<ans<<endl;return 0; }
\(D\) luogu B4045 [语言月赛 202410] 同桌 \(AC\)
-
两人可以成为同桌当且仅当互相想要和对方做同桌。
点击查看代码
ll p[10010],vis[10010]; int main() {ll n,flag=1,i;cin>>n;for(i=1;i<=2*n;i++){cin>>p[i];}for(i=1;i<=2*n;i++){if(p[i]==i||p[p[i]]!=i){flag=0;break;}}if(flag==0){cout<<"No"<<endl;}else{cout<<"Yes"<<endl;}return 0; }
\(E\) luogu B4046 [语言月赛 202410] 寻找质数 \(AC\)
-
筛法求素数板子。
点击查看代码
int prime[1000010],vis[1000010],len=0; void isprime(int n) {memset(vis,0,sizeof(vis));for(int i=2;i<=n;i++){if(vis[i]==0){len++;prime[len]=i;}for(int j=1;j<=len&&i*prime[j]<=n;j++){vis[i*prime[j]]=1;if(i%prime[j]==0){break;}}} } int main() {int n,m,r,k,ans=-1,cnt=0,i;cin>>n>>m>>r>>k;isprime(n);for(i=len;i>=1;i--){if(prime[i]%m==r){cnt++;if(cnt==k){ans=prime[i];break;}}}cout<<ans<<endl; return 0; }
\(F\) luogu B4047 [语言月赛 202410] 校门外的施工 \(AC\)
-
做法同 luogu P1047 [NOIP2005 普及组] 校门外的树 ,如果你要写珂朵莉树的话我也不拦着你。
点击查看代码
int a[5010],b[5010]; int main() {int n,m,pd,l,r,ans1=0,ans2=0,i,j;cin>>m>>n;ans1=m;ans2=m-1;for(i=1;i<=n;i++){cin>>pd>>l>>r;if(pd==1){ for(j=l+1;j<=r-1;j++){a[j]=1;}for(j=l;j<=r-1;j++){b[j]=1;}}else{for(j=l;j<=r;j++){a[j]=1;}for(j=l;j<=r-1;j++){b[j]=1;}}}for(i=1;i<=m;i++){ans1-=a[i];ans2-=b[i];}cout<<ans1<<" "<<ans2<<endl;return 0; }
\(G\) luogu B4048 [语言月赛 202410] 断章取义 \(AC\)
-
如果没有统计剪辑轮数的话就是 luogu P4824 [USACO15FEB] Censoring S 了,因为 \(|s|\) 很小所以直接模拟即可。
点击查看代码
int vis[150]; char s[150],t[150]; int main() {int T,n,m,cnt=0,flag,i;cin>>T>>(s+1);n=strlen(s+1);while(1){flag=0;memset(vis,0,sizeof(vis));for(i=1;i<=n;i++){t[i]=s[i];}for(i=1;i<=n;i++){if(t[i]=='n'&&t[i+1]=='o'&&t[i+2]=='t'&&i+2<=n){flag=1;vis[i]=vis[i+1]=vis[i+2]=1;}}if(flag==0){break;}else{cnt++;m=0;for(i=1;i<=n;i++){if(vis[i]==0){m++;s[m]=t[i];}}n=m;}}for(i=1;i<=n;i++){cout<<s[i];}cout<<endl;cout<<cnt<<endl;return 0; }
\(H\) luogu B4049 [语言月赛 202410] 平均分计算 \(AC\)
-
模拟。
点击查看代码
struct node {ll id,sc; }e[110]; ll id[50][110],sc[50][110],w[50][110],p[50]; ll gcd(ll a,ll b) {return b?gcd(b,a%b):a; } bool cmp(node a,node b) {return a.sc>b.sc; } int main() {ll n,pos,i,j,k,ans=0,cnt=0,tmp,d;cin>>n;for(k=1;k<=n;k++){cin>>p[k];for(i=1;i<=p[k];i++){cin>>id[k][i];}for(i=1;i<=p[k];i++){cin>>sc[k][i];}for(i=1;i<=p[k];i++){cin>>w[k][i];}}cin>>pos;for(k=1;k<=n;k++){sort(id[k]+1,id[k]+1+p[k]);for(i=1;i<=p[k];i++){e[i].sc=sc[k][i];e[i].id=id[k][i];}sort(e+1,e+1+p[k],cmp);for(i=1;i<=p[k];i++){if(e[i].id==pos){cnt++;for(j=i;e[j].sc==e[i].sc&&j>=1;j--);ans+=w[k][j+1];break;}}}if(ans%cnt==0){cout<<ans/cnt<<endl;}else{tmp=ans/cnt;ans-=tmp*cnt;d=gcd(ans,cnt);ans/=d;cnt/=d;cout<<tmp<<"+"<<ans<<"/"<<cnt<<endl;}return 0; }
总结
- \(B\) 把
if
打成了else if
,吃了发罚时。 - \(F\) 数组开小了,吃了发罚时;短时间没适应过来 \(n\) 表示操作次数, \(m\) 表示长度。
- \(E,G\) 关于排名的定义一开始没有注意到。
- \(G\) 因为不会统计比它大的数的个函数,吃了两发罚时。