- 问答
【FAQ】问答&讨论贴
- @ 2025-6-7 13:41:09
最近的事情更无语了,某鱼上现在有三个人在卖数据了。周赛数据永久停止更新。
不允许学生创建新讨论了,后面大家可以在这里讨论相关内容。会定期清理。
删了一些同学们自己举办的比赛的帖子。
我建议你们可以私聊参赛。讨论区太乱了,有些提问我看不到了已经。
更重要的是,还是先好好学算法吧各位同学,当你拿了提高组 分,再考虑自己举办一些简单的比赛。
语法场的初心还是为了学生们巩固基础语法,高水平选手可以选择参加入门语法场和入门提高场 目前也没看见能打的 (参考新春马拉松赛成绩)
感觉不过瘾还可以打atcoder和codeforces
576 条评论
-
杨皓博 LV 3 (800/800) @ 2026-10-11 9:42:52

-
@ 2026-10-10 13:11:23孩子们,我是来打卡
-
@ 2026-10-9 17:38:01
-
@ 2026-10-6 7:29:54窝来晒一波

-
@ 2026-10-3 21:34:10#include<bits/stdc++.h> #define int long long using namespace std;int n,w,a[1005],dp[10005]; signed main(){cin>>n>>w;for(int i=1;i<=n;i++){cin>>a[i];}dp[0]=1;for(int i=1;i<=n;i++){for(int j=a[i];j<=w;j++){dp[j]+=dp[j-a[i]];}}cout<<dp[w];}细节压行
-
@ 2026-10-3 17:39:47有没有玩火影的几级
-
@ 2026-10-3 17:32:48
-
@ 2026-10-3 17:29:23 -
@ 2026-10-3 17:25:17≽^•⩊•^≼ 喵~≽^•⩊•^≼ 喵~≽^•⩊•^≼ 喵~≽^•⩊•^≼ 喵~≽^•⩊•^≼ 喵~
-
@ 2026-10-3 16:48:47跟我一起学猫叫一起≽^•⩊•^≼ 喵~≽^•⩊•^≼ 喵~≽^•⩊•^≼ 喵~≽^•⩊•^≼ 喵~≽^•⩊•^≼ 喵~
-
@ 2026-10-3 16:38:35
-
@ 2026-10-3 16:36:42
-
@ 2026-10-3 14:58:42 -
@ 2026-10-3 14:55:29








我的洛谷头像(Doge) 别告诉刘泽釴 千万别
-
@ 2026-10-1 18:29:08求植僵经典射击噩梦的插件搭配和经济分配,卡了一周了,僵尸快跑和单枪匹马都试了,核心输出用的火炬豌豆,没招了
-
@ 2026-10-1 15:45:20 -
@ 2026-9-27 20:55:03本次作业坑点:

-
@ 2026-9-27 17:46:55最近评论区怎么没有聊天的了 这一排景象让我感到非常(
不)好 我非常(不)想让大家不要聊天 所以 社区环境真(不)好啊 建议大家(不)多发代码 (不要)少聊天 -
@ 2026-9-13 11:19:57那个单 log 线段树树剖有人会写吗,帮我调一下这个题
#include<bits/stdc++.h> #define int long long using namespace std; const int maxn=1e5+5; int n,m,k,P[70]; vector<int>G[maxn]; int tot,dfn[maxn],rnk[maxn],L[maxn],R[maxn],top[maxn],siz[maxn],fa[maxn],dep[maxn],hson[maxn],cnt,lid[maxn],idl[maxn]; void dfs_build(int u,int F){ siz[u]=1; for(int i=0;i<G[u].size();i++){ int v=G[u][i]; if(v==F)continue; fa[v]=u; dep[v]=dep[u]+1; dfs_build(v,u); siz[u]+=siz[v]; if(siz[v]>siz[hson[u]])hson[u]=v; } } void dfs(int u,int F){ dfn[u]=++tot; rnk[tot]=u; if(hson[u]){ top[hson[u]]=top[u]; dfs(hson[u],u); } for(int i=0;i<G[u].size();i++){ int v=G[u][i]; if(v==F||v==hson[u])continue; top[v]=v; dfs(v,u); } } int opt[maxn],a[maxn]; struct SGT{ vector<int>val[65][2]; vector<int>opt,ls,rs,mid; }st; vector<SGT>tr; int trid; void pushup(int rt){ for(int i=0;i<k;i++){ tr[trid].val[i][0][rt]=tr[trid].val[i][tr[trid].rs[rt]][tr[trid].val[i][0][tr[trid].ls[rt]]]; tr[trid].val[i][1][rt]=tr[trid].val[i][tr[trid].rs[rt]][tr[trid].val[i][1][tr[trid].ls[rt]]]; } } int newnode(){ for(int i=0;i<64;i++){ tr[trid].val[i][0].push_back(0); tr[trid].val[i][1].push_back(0); } tr[trid].ls.push_back(0); tr[trid].rs.push_back(0); tr[trid].mid.push_back(0); tr[trid].opt.push_back(0); return tr[trid].mid.size()-1; } bool calc(bool val,int op,bool xx){ if(op==1)return (val&xx); if(op==2)return (val|xx); if(op==3)return (val^xx); } void buildcnt(int l,int r,int rt){ if(l==r)return; int sum=0; for(int i=l;i<=r;i++)sum+=siz[rnk[i+dfn[lid[trid]]-1]]-siz[hson[rnk[i+dfn[lid[trid]]-1]]]; sum/=2; int now=0; for(int i=l;i<=r;i++){ if(now+siz[rnk[i+dfn[lid[trid]]-1]]-siz[hson[rnk[i+dfn[lid[trid]]-1]]]>=sum){ tr[trid].mid[rt]=i; break; } now+=siz[rnk[i+dfn[lid[trid]]-1]]-siz[hson[rnk[i+dfn[lid[trid]]-1]]]; } if(tr[trid].mid[rt]==r)tr[trid].mid[rt]--; tr[trid].ls[rt]=newnode(); buildcnt(l,tr[trid].mid[rt],tr[trid].ls[rt]); tr[trid].rs[rt]=newnode(); buildcnt(tr[trid].mid[rt]+1,r,tr[trid].rs[rt]); } void build(int l,int r,int rt){ if(l==r){ tr[trid].opt[rt]=opt[rnk[l+dfn[lid[trid]]-1]]; for(int i=0;i<k;i++){ tr[trid].val[i][0][rt]=calc(0,tr[trid].opt[i],((a[rnk[l+dfn[lid[trid]]-1]]>>i)&1)); tr[trid].val[i][1][rt]=calc(1,tr[trid].opt[i],((a[rnk[l+dfn[lid[trid]]-1]]>>i)&1)); } return; } build(l,tr[trid].mid[rt],tr[trid].ls[rt]); build(tr[trid].mid[rt]+1,r,tr[trid].rs[rt]); pushup(rt); } void init(int l,int r){ tr.push_back(st); newnode(); buildcnt(1,r-l+1,1); build(1,r-l+1,1); } void update(int X,int opc,int vc,int l,int r,int rt){ if(l==r){ tr[trid].opt[rt]=opc; for(int i=0;i<k;i++){ tr[trid].val[i][0][rt]=calc(0,tr[trid].opt[i],((vc>>i)&1)); tr[trid].val[i][1][rt]=calc(1,tr[trid].opt[i],((vc>>i)&1)); } return; } if(X<=tr[trid].mid[rt])update(X,opc,vc,l,tr[trid].mid[rt],tr[trid].ls[rt]); else update(X,opc,vc,tr[trid].mid[rt]+1,r,tr[trid].rs[rt]); pushup(rt); } struct Val{ bool val[65][2]; Val(){for(int i=0;i<65;i++)val[i][0]=val[i][1]=0;} }; Val query(int L,int R,int l,int r,int rt){ if(L<=l&&r<=R){ Val res; for(int i=0;i<k;i++)res.val[i][0]=tr[trid].val[i][0][rt],res.val[i][1]=tr[trid].val[i][1][rt]; return res; } if(L<=tr[trid].mid[rt]&&tr[trid].mid[rt]+1<=R){ Val res; Val ls=query(L,R,l,tr[trid].mid[rt],tr[trid].ls[rt]); Val rs=query(L,R,tr[trid].mid[rt]+1,r,tr[trid].rs[rt]); for(int i=0;i<k;i++){ res.val[i][0]=rs.val[i][ls.val[i][0]]; res.val[i][1]=rs.val[i][ls.val[i][1]]; } return res; }else if(L<=tr[trid].mid[rt])return query(L,R,l,tr[trid].mid[rt],tr[trid].ls[rt]); else return query(L,R,tr[trid].mid[rt]+1,r,tr[trid].rs[rt]); } Val getans(int u,int v){ Val res; bool flag=0; while(top[u]!=top[v]){ if(dep[top[u]]<dep[top[v]])swap(u,v); trid=idl[top[u]]; Val now=query(dfn[top[u]],dfn[u],1,R[trid]-L[trid]+1,1); if(!flag){ res=now; flag=1; }else for(int i=0;i<k;i++)res.val[i][0]=now.val[i][res.val[i][0]],res.val[i][1]=now.val[i][res.val[i][1]]; u=top[u]; } if(dep[u]<dep[v])swap(u,v); trid=idl[top[u]]; Val now=query(dfn[top[u]],dfn[u],1,R[trid]-L[trid]+1,1); if(!flag){ res=now; flag=1; }else for(int i=0;i<k;i++)res.val[i][0]=now.val[i][res.val[i][0]],res.val[i][1]=now.val[i][res.val[i][1]]; return res; } signed main(){ //freopen(".in","r",stdin); //freopen(".out","w",stdout); ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>n>>m>>k; for(int i=1;i<=n;i++)cin>>opt[i]>>a[i]; P[0]=1; for(int i=1;i<=63;i++)P[i]=P[i-1]*2; for(int i=1;i<n;i++){ int u,v; cin>>u>>v; G[u].push_back(v); G[v].push_back(u); } dep[1]=1; fa[1]=1; dfs_build(1,0); top[1]=1; dfs(1,0); for(int i=1;i<=n;i++){ L[i]=n+1; if(!idl[top[i]]){ idl[top[i]]=++cnt; lid[cnt]=top[i]; } } for(int i=1;i<=n;i++)L[idl[top[i]]]=min(L[idl[top[i]]],dfn[i]),R[idl[top[i]]]=max(R[idl[top[i]]],dfn[i]); tr.push_back(st); for(int i=1;i<=cnt;i++){ trid=cnt; init(L[lid[i]],R[lid[i]]); } while(m--){ int OP,x,y,z; cin>>OP>>x>>y>>z; if(OP==1){ Val res=getans(x,y); int now=0,ans=0; for(int i=k-1;i>=0;i--){ if(res.val[i][0])ans+=P[i]; else{ if(res.val[i][1]){ if(now+P[i]<=z){ now+=P[i]; ans+=P[i]; } } } } cout<<ans<<'\n'; }else{ trid=idl[top[x]]; update(x,y,z,1,R[trid]-L[trid]+1,1); } } return 0; } -
@ 2026-9-10 22:43:03@zby_dd 你现在是我同桌了,你作何感想
-
@ 2026-9-1 19:53:17 -
@ 2026-8-25 17:56:38
1
-
@ 2026-8-25 17:01:04
k
-
@ 2026-8-25 17:00:43
f
-
@ 2026-8-23 14:21:10P3718虬跳(92WA)。
#include<bits/stdc++.h> using namespace std; int n,k,ans; char a[100005]; bool check(int mid){ int num=1,sum=0; char last=a[1]; for(int i=2;i<=n;i++){ if(a[i]!=last){ last=a[i],num=1; } else{ num++; if(num>mid){ num=1; if(last=='F') last='N'; else last='F'; sum++; } } } if(sum<=k) return 1; else return 0; } int main(){ cin>>n>>k; for(int i=1;i<=n;i++) cin>>a[i]; int l=1,r=n; while(l<=r){ int mid=(l+r)/2; if(check(mid)){ ans=mid; r=mid-1; } else l=mid+1; } cout<<ans; } -
@ 2026-8-21 16:33:20
c
-
@ 2026-8-18 15:33:26
这是啥啊
-
@ 2026-8-17 16:47:54217083,TooY0ung洛谷号。(笑)
-
@ 2026-8-17 14:33:47诈尸
-
@ 2026-8-16 13:58:52第一次...

-
@ 2026-8-14 13:58:01P1019 67分求调
#include <bits/stdc++.h> using namespace std; int n; string word[25]; int used[25]; int ans=0; char startch; int op(string A,string B) { int la=A.size(),lb =B.size(); int maxk = 0; for (int k=1;k<min(la,lb);k++) { bool match=true; for (int i=0;i<k;i++) { if(A[la-k+i]!=B[i]) { match=false; break; } } if(match)maxk=k; } return maxk; } void dfs(int last,int len) { ans=max(ans,len); for(int i=1;i<=n;i++) { if(used[i]>=2)continue; int k=op(word[last],word[i]); if(k==0)continue; used[i]++; dfs(i,len+word[i].size()-k); used[i]--; } } int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>word[i]; } cin>>startch; for(int i=1;i<=n;i++) { if(word[i][0]==startch) { used[i]++; dfs(i,word[i].size()); used[i]--; } } cout<<ans<<endl; return 0; } -
@ 2026-8-9 21:58:31
谢谢
-
@ 2026-8-9 21:57:30
发代码如何有格式而不是一坨
力求!!!!!! 好人一生平安 -
@ 2026-8-9 18:59:29

-
@ 2026-8-6 13:31:09
-
@ 2026-8-4 15:53:19不会写高精度如何骗更多分double的范围是可以到正负pow(10,308)
-
@ 2026-8-4 10:12:07
1
-
@ 2026-8-4 10:11:30
1
-
@ 2026-8-3 21:08:40这代码会超时 你敢信 n最大pow(10,5);
#include<bits/stdc++.h> using namespace std; using ll=long long; int n,w; int score[100005]; bool cmp(int x,int y) { return x>y; } int main() { cin>>n>>w; for(int i=1;i<=n;i++) { cin>>score[i]; if(score[i]>score[i-1]) sort(score+1,score+1+i,cmp); int plan=max(1,i*w/100); cout<<score[plan]<<" "; } return 0; } -
@ 2026-8-3 15:46:23P5661公交换乘洛谷45挖土机55 洛谷样例全对,错误测试点均TLE求调
#include<bits/stdc++.h> using namespace std; using ll=long long; int n; ll sum; int way,price,tim; int cnt;//统计优惠票数量 struct youhui { int time; int money; }yh[100005]; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>way>>price>>tim; if(way==0)//地铁 { cnt++; yh[cnt].time=tim; yh[cnt].money=price; sum+=price; } else//公交 { if(cnt>0) { int flag=0; for(int i=1;i<=cnt;i++) { if(yh[i].time==-1) continue; if(tim-yh[i].time<=45&&yh[i].money>=price) { flag=1; yh[i].time=-1; break; } } if(flag==0) sum+=price; } else sum+=price; } } cout<<sum; return 0; } -
@ 2026-8-3 14:50:03
-3148?! -
@ 2026-8-3 14:40:22

-
@ 2026-8-3 14:39:011.千问
2.元宝

-
@ 2026-8-3 14:35:39


-
@ 2026-8-3 14:35:25






-
@ 2026-8-3 14:30:41
-
@ 2026-8-3 11:34:44
-
@ 2026-8-3 11:30:01
(😍)