最近的事情更无语了,某鱼上现在有三个人在卖数据了。周赛数据永久停止更新。

不允许学生创建新讨论了,后面大家可以在这里讨论相关内容。会定期清理。

删了一些同学们自己举办的比赛的帖子。

我建议你们可以私聊参赛。讨论区太乱了,有些提问我看不到了已经。

更重要的是,还是先好好学算法吧各位同学,当你拿了提高组 200200 分,再考虑自己举办一些简单的比赛。

语法场的初心还是为了学生们巩固基础语法,高水平选手可以选择参加入门语法场和入门提高场 目前也没看见能打的 (参考新春马拉松赛成绩)

感觉不过瘾还可以打atcoder和codeforces

557 条评论

  • @ 2026-8-25 17:56:38

    1

    • @ 2026-8-25 17:01:04

      k

      • @ 2026-8-25 17:00:43

        f

        • TooY0ung 没硬币了,已感动

        • P3718虬跳(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;
          }
          
          
          • 细节,注意看输出格式的第二行写的模数

            十年OI一场空,不看模数见祖宗。

            • @ 2026-8-21 16:33:20

              c

              • @ 2026-8-18 15:33:26

                这是啥啊

              • @ 2026-8-17 16:47:54

                217083,TooY0ung洛谷号。(笑)

                • @ 2026-8-17 14:33:47

                  诈尸

                  • 第一次...

                    • @ 2026-8-14 13:58:01

                      P1019 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-14 17:57:39

                        因为你的op函数从小到大,所以你的返回值会是最大的公共段,但是如果出现小的公共段,肯定更优(重复的较少),所以找到第一个match的,就break掉。

                        #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; break;}
                        	}
                        	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-14 18:34:07

                        @ 谢谢

                    • 谢谢

                      • 发代码如何有格式而不是一坨
                        力求!!!!!! 好人一生平安

                      • @ 2026-8-6 8:33:07

                        为什么不给我发硬币和徽章

                        • 不会写高精度如何骗更多分

                          double的范围是可以到正负pow(10,308)

                        • 1

                          • 1

                            • 这代码会超时 你敢信 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;
                              }
                              
                              
                              • P5661公交换乘洛谷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 15:46:50
                                  using namespace std;
                                  struct shi_jian
                                  {
                                      int money,time;
                                  }arr[100005];
                                  int used[100005];
                                  int main()
                                  {
                                      ios::sync_with_stdio(0);
                                      cin.tie(0);
                                      int n,head=1;
                                      cin>>n;
                                      int xia_biao=1,sum=0;
                                      while(n--)
                                      {
                                          int num,piece,t;
                                          cin>>num>>piece>>t;
                                          if(num==0)
                                          {
                                              sum+=piece;
                                              arr[xia_biao].money=piece;
                                              arr[xia_biao].time=t;
                                              xia_biao++;
                                          }
                                          else
                                          {
                                              while(head <= xia_biao && t - arr[head].time > 45) {
                                                  head++;
                                              }
                                              int cnt=0;
                                              for(int i=head;i<=xia_biao;i++)
                                              {
                                                  if(arr[i].money>=piece&&t-arr[i].time<=45&&used[i]==0)
                                                  {
                                                      used[i]=1;
                                                      cnt++;
                                                      break;
                                                  }
                                              }
                                              if(cnt==0)sum+=piece;
                                          }
                                      }
                                      cout<<sum;
                                  }
                                  
                                  
                                • @ 不要把自己的代码发给我

                                • @ 2026-8-3 16:55:22

                                  @ 要说错哪了

                                • @ 2026-8-12 15:00:38

                                  @ 你是不是@错人了

                                • @ 2026-8-18 15:35:46

                                  @

                              • @ 2026-8-3 14:50:03

                                -3148?!

                                • 1.千问 2.元宝

                                • 这人有病吧

                                • @ 2026-8-3 11:18:05

                                  …………………………

                                  • GAY吧

                                    • @ 2026-8-3 9:55:28

                                      这又给我干哪来了

                                      • @ 2026-8-3 9:52:49

                                      • @ 2026-8-3 9:52:02

                                        看来我真的穿越了

                                        • @ 2026-8-3 9:47:49

                                          我穿越了吗

                                          • 这人-ay吧

                                            • 423r35

                                              • ?????

                                              • 观后感 be like 后两个字

                                                • 何意味

                                                  ???

                                                • ??,何意味

                                                  • 从百草园训到三味书屋

                                                    作者 akakal 发布时间 2025-11-19 10:55 分类 休闲·娱乐 我家的后面有一个很大的机房,。现在是早已并屋子一起卖给学校的教练了,连那最末次的相见也已经隔了几年,其中似乎确凿只有一些电脑和桌凳;但那时却是我的乐园。

                                                    不必说绿色的 AC,红色的 WA,深色的 MLE TLE,黄色的 CE;也不必说 LCA 拎着俩节点在树上乱跑,验题人拿着鞭子追着出题人,一个 Au✌️突然疯疯癫癫地向外省跑去了。单是周围的一车算法书,就有无限趣味。

                                                    学长曾经讲给我一个故事听:先前,有一个 OIer 住在机房里加训,晚间,在看算法学习的时候,突然听到有人在叫他打游戏。答应着,四面看时,却见同学都在敲代码,向他一笑,关掉 dev-c++ 和 Edge 了。他很高兴地准备打游戏;但竟给那走来找他讲算法的学长识破了机关。说他同学有问题,一定遇见 faker 了;这是天天说 p 话和装不努力的同学,教你打游戏,倘一答应,晚些正赛的时候你就被他们拉的十万八千里远!他自然吓得要死,而那学长却道无妨,给他一个做题热度统计图,说只要挂主页,便可安心打游戏。他虽然照样办,却总是玩不进去,——当然玩不进去。到第二天,果然出猫腻了!翻开那主页,绿的蓝的紫的黑的;深的浅的不深不浅的,那同学们做了好多题!打开模拟赛成绩一看,rank1 还在哭嚎说自己打的依托,真乃过分!

                                                    结末的教训是:所以同学叫你的去打游戏,你万万不可答应他。

                                                    这故事很使我觉得做人之险,打游戏时,往往有些担心。打模拟赛时,也常常这样想。但直到现在,总还没有遇见过。叫我打游戏的声音自然是常有的,然而都不是在机房训练的时候罢。

                                                    我不知道为什么家里的人要将我送进集训里去了,而且还是全城中称为最强的集训。也许是因为周末喜欢窝床上打游戏罢,也许是因为写树剖重儿子的重儿子是自己罢,也许是因为写完正解然后 MLE 罢……都无从知道。总而言之:我将不能常到机房了。

                                                    ……

                                                    不知从哪里听来的,教练也很渊博,他认识一种算法,名曰“树上背包套线段树套重链剖分套基环树套平衡树套红黑树拌水泥钢筋混凝土套树状数组套后缀自动机套拌最好吃的意大利面”,我很想详细地知道这故事,但 OI-wiki 是不知道的,因为它很多都模糊不清。现在得到机会了,可以问先生。

                                                    “先生,‘树上背包套线段树套重链剖分套基环树套平衡树套红黑树拌水泥钢筋混凝土套树状数组套后缀自动机凉咔久久套拌最好吃的意大利面’这算法,是怎么一回事?”我交完代码,将要退下来的时候,赶忙问。

                                                    “不知道!”他似乎很不高兴,脸上还有怒色了。

                                                    我才知道做学生是不应该问这些事的,只要加训,因为他是渊博的顶级教练,决不至于不知道,所谓不知道者,乃是不愿意说。比我牛的人,往往如此,我遇见过好几回了。

                                                    我就只加训,上午打模拟赛,正午补题,晚上练算法。教练最初这几天对我很严厉,后来却好起来了,不过给我训的题越来越多,难度也渐渐地加上字去,从绿题到蓝题,终于到黑题了。

                                                    电脑里面有个网页唤做 OI 教练模拟器,虽然简洁,但也十分好玩。然而同学们玩的太多,太久,

                                                    “人都在看什么呢!”

                                                    便一个个赶忙关掉电脑;一同打开 www.luogu.com.cn 和题目,也不行的。他有一个极域软件,但是不常用,也有看浏览记录的规则。但也懒得全罚,便瞪几眼,大声道:

                                                    “加训!”

                                                    十一月十九日。

                                                  • 666

                                                    王润杨是GAY