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

51 条评论

  • @ 2024-9-20 0:08:55

    P1406. 方格填数

    这个代码只能得80分,n=4n=4 被卡了

    
    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    
    int n;
    int a[50],sum;
    int g[10][10];
    bool vis[1000];
    
    bool check()
    {
    	
    	//先看行和列 
    	for(int i=1;i<=n;i++)
    	{
    		int s=0;
    		for(int j=1;j<=n;j++)
    		{
    			s+=g[i][j];
    		}
    		if(s!=sum)
    		{
    			return 0;
    		}
    	}
    	for(int i=1;i<=n;i++)
    	{
    		int s=0;
    		for(int j=1;j<=n;j++)
    		{
    			s+=g[j][i];
    		}
    		if(s!=sum)
    		{
    			return 0;
    		}
    	}
    	//看对角线 
    	int s=0;
    	for(int i=1;i<=n;i++)
    	{
    		s+=g[i][i];
    	}
    	if(s!=sum)
    	{
    		return 0;
    	}
    	s=0;
    	for(int i=1;i<=n;i++)
    	{
    		s+=g[i][n-i+1];
    	}
    	if(s!=sum)
    	{
    		return 0;
    	}
    	return 1; 
    }
    
    
    void dfs(int x,int y)
    {
    	
    	if(x==n+1 && y==1)
    	{
    		if(!check())
    		{	
    			return;
    		}
    		//幻方成立 
    		for(int i=1;i<=n;i++)
    		{
    			for(int j=1;j<=n;j++)
    			{
    				cout<<g[i][j]<<' ';
    			}
    			cout<<'\n';
    		}
    		exit(0);
    	}
    	
    	int xx=x;
    	int yy=y+1;
    	if(yy==n+1)//如果这行填满了 
    	{
    		/*
    		int s=0;
    		for(int i=1;i<=n;i++)
    		{
    			s+=g[x][i];
    		}
    		if(s!=sum)
    		{
    			return;
    		}
    		
    		*/
    		yy=1;
    		xx++;
    	}
    	for(int i=1;i<=n*n;i++)
    	{
    		if(vis[i]==1)
    		{
    			continue;
    		}
    		vis[i]=1;
    		g[x][y]=a[i];
    		dfs(xx,yy);
    		vis[i]=0;
    		g[x][y]=0;
    	}
    }
    signed main()
    {
    	//freopen(".in","r",stdin);
    	//freopen(".out","w",stdout);
    	ios::sync_with_stdio(0); 
    	cin.tie(0);
    	cin>>n;
    	for(int i=1;i<=n*n;i++)
    	{
    		cin>>a[i];
    		sum+=a[i]; 
    	}
    	sort(a+1,a+n*n+1);
    	sum/=n;
    	cout<<sum<<'\n';
    	dfs(1,1);
    	return 0;
    }
    
    

    然后剪枝好像写错了...

    
    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    
    int n;
    int a[50],sum;
    int g[10][10];
    bool vis[1000];
    
    bool check()
    {
    	
    	//先看行和列 
    	for(int i=1;i<=n;i++)
    	{
    		int s=0;
    		for(int j=1;j<=n;j++)
    		{
    			s+=g[i][j];
    		}
    		if(s!=sum)
    		{
    			return 0;
    		}
    	}
    	for(int i=1;i<=n;i++)
    	{
    		int s=0;
    		for(int j=1;j<=n;j++)
    		{
    			s+=g[j][i];
    		}
    		if(s!=sum)
    		{
    			return 0;
    		}
    	}
    	//看对角线 
    	int s=0;
    	for(int i=1;i<=n;i++)
    	{
    		s+=g[i][i];
    	}
    	if(s!=sum)
    	{
    		return 0;
    	}
    	s=0;
    	for(int i=1;i<=n;i++)
    	{
    		s+=g[i][n-i+1];
    	}
    	if(s!=sum)
    	{
    		return 0;
    	}
    	return 1; 
    }
    
    
    void dfs(int x,int y)
    {
    	
    	if(x==n+1 && y==1)
    	{
    		if(!check())
    		{	
    			return;
    		}
    		//幻方成立 
    		for(int i=1;i<=n;i++)
    		{
    			for(int j=1;j<=n;j++)
    			{
    				cout<<g[i][j]<<' ';
    			}
    			cout<<'\n';
    		}
    		exit(0);
    	}
    	
    	int xx=x;
    	int yy=y+1;
    	if(yy==n+1)//如果这行填满了 
    	{
    		//---------------------------
    		int s=0;
    		for(int i=1;i<=n;i++)
    		{
    			s+=g[x][i];
    		}
    		if(s!=sum)
    		{
    			return;
    		}
    		//--------------------------
    		yy=1;
    		xx++;
    	}
    	for(int i=1;i<=n*n;i++)
    	{
    		if(vis[i]==1)
    		{
    			continue;
    		}
    		vis[i]=1;
    		g[x][y]=a[i];
    		dfs(xx,yy);
    		vis[i]=0;
    		g[x][y]=0;
    	}
    }
    signed main()
    {
    	//freopen(".in","r",stdin);
    	//freopen(".out","w",stdout);
    	ios::sync_with_stdio(0); 
    	cin.tie(0);
    	cin>>n;
    	for(int i=1;i<=n*n;i++)
    	{
    		cin>>a[i];
    		sum+=a[i]; 
    	}
    	sort(a+1,a+n*n+1);
    	sum/=n;
    	cout<<sum<<'\n';
    	dfs(1,1);
    	return 0;
    }
    

    救我

    • @ 2024-9-19 21:36:21

      满分是多少

      • @ 2024-9-19 21:32:00

        杨博文真能抄...都十级了

        • @ 2024-9-18 21:18:08

          主函数RE:

              stack <char>a;
              string s;
              cin>>s;
              for(int i=0;i<s.size();i++){
                  if(s[i]=='('&&a.top()==')'){
                      a.pop();
                  }
                  else if(s[i]=='['&&a.top()==']'){
                      a.pop();
                  }
                  else{
                      a.push(s[i]);
                  }
              }
              cout<<(!a.empty()?"OK":"Wrong");
          
        • @ 2024-9-18 8:14:06

          • Katex里下标咋打? a[1]

          • @ 2024-9-17 18:32:03

            救我,为什么子任务2没分

            
            #include<bits/stdc++.h>
            using namespace std;
            int a,b,c,d;
            int x,y,z;
            bool f=0;
            int main()
            {
            	freopen("uqe.in","r",stdin);
            	freopen("uqe.out","w",stdout);
            	ios::sync_with_stdio(false);
                cin.tie(0);
            	
            	scanf("(%dx+%d)(%dx+%d)",&a,&b,&c,&d);
            	//cout<<a<<' '<<b<<' '<<c<<' '<<d;
            	if(a*c!=0)
            	{
            		x=a*c;
            		if(a*c==1)
            		{
            			cout<<"x^2";
            			f=1;
            		}
            		else
            		{
            			cout<<a*c<<"x^2";
            			f=1;
            		}
            	}
            	
            	if(b*c+a*d!=0)
            	{
            		y=b*c+a*d;
            		if(f)
            		{
            			cout<<'+';
            		}
            		if(b*c+a*d==1)
            		{
            			cout<<"x";
            		}
            		else
            		{
            			cout<<b*c+a*d<<"x";
            		}
            	}
            	if(b*d!=0)
            	{
            		z=b*d;
            		if(f)
            		{
            			cout<<'+';
            		}
            		cout<<b*d;
            	}	
            	cout<<"\nNo";
            	return 0;
            }
            
          • @ 2024-9-17 18:17:56

            @

            https://wiki.33dai.cn/比赛题解/WOTOJO-CSPJ-R4

            T2圈个矩形KaTeX炸了

            $10^{16}$

            • @ 2024-9-17 18:14:25

              这个分值有没有打反

              • @ 2024-9-17 15:56:11

                help!!!模拟赛第一轮T4

                using namespace std;
                int n,flag,summ,cnt=1,a[65];
                string s[65],ans[65];
                int vis[1005];
                struct ST{
                	int sum,dir;
                };
                vector<ST>G[65005];
                priority_queue<int,vector<int>,greater<int>>q;
                void insert(){
                	int x=q.top();
                	q.pop();
                	int y=q.top();
                	q.pop();
                	G[x+y].push_back({x,0});
                	G[x+y].push_back({y,1});
                	q.push(x+y);
                	return;
                }
                void dfs(int x){
                	if(G[x].size()==0){
                		cnt++;
                		return;
                	}
                	for(int i=0;i<G[x].size();i++){
                		if(vis[G[x][i].sum]==0){
                			vis[G[x][i].sum]=1;
                			char c=G[x][i].dir+'0';
                			ans[cnt]+=c;
                			dfs(G[x][i].sum);
                			vis[G[x][i].sum]=0;
                			ans[cnt].pop_back();
                		}
                	}
                }
                int main(){
                //	freopen("huffman.in","r",stdin);
                //	freopen("huffman.out","w",stdout);
                	cin>>n;
                	for(int i=1;i<=n;i++){
                		cin>>a[i];
                		q.push(a[i]);
                		summ+=a[i];
                	}
                	for(int i=1;i<=n;i++)cin>>s[i];
                	for(int i=1;i<=n;i++){
                		for(int j=1;j<=n;j++){
                			if(i==j)continue;
                			int len=min(s[i].size(),s[j].size()),flagg=0;
                			for(int k=0;k<len;k++)
                				if(s[i][k]!=s[j][k]){
                					flagg=1;
                					break;
                				}
                			if(flagg==0){
                				flag=1;
                				break;
                			}
                		}
                		if(flag==1)break;
                	}
                	while(!q.empty())insert();
                	vis[summ]=1;
                	dfs(summ);
                	int anss=0,xxx=0;
                	for(int i=1;i<=n;i++)anss+=a[i]*ans[i].size();
                	for(int i=1;i<=n;i++)xxx+=a[i]*s[i].size();
                	if(flag==1||anss!=xxx){
                		cout<<"No\n";
                		for(int i=1;i<=n;i++)cout<<ans[i]<<'\n';
                	}else{
                		cout<<"Yes\n"<<xxx;
                	}
                	return 0;
                } 
                
                
                • @ 2024-9-17 10:18:22

                  为啥不对呢?

                • @ 2024-9-16 22:13:57

                  为什么自己发表的题解,讨论,回复不能删除

                • @ 2024-9-16 10:32:23

                  一道绝世好题:P1668

                  可用贪心、线段树优化dp、01bfs跑最短路三种优化写。 题解:https://www.luogu.com.cn/paste/sdm2wsf3

                  https://oj.since2018.top/p/P1668/solution

                  • @ 2024-9-16 0:20:55

                    @33DAI,模拟赛4 T4输入有问题

                  • @ 2024-9-15 22:08:07

                    模拟赛T4补充样例,复制DEV就未响应

                  • @ 2024-9-15 18:19:31

                    求助 #P2199 最后的迷宫 11Tle 1Re

                    #include <bits/stdc++.h>
                    #define ll long long
                    #define ull unsigned long long
                    #define float double
                    using namespace std;
                    struct trophy{int x,y;};
                    int n,m,xh,yh,xt,yt,vis[130][130];
                    int dsx[]={1,1,1,0,0,-1,-1,-1};
                    int dsy[]={-1,-1,-1,0,0,1,1,1};
                    int dx[]={-1,0,0,1};
                    int dy[]={0,-1,1,0};
                    char a[130][130],aa[130][130];
                    queue<trophy>q;
                    int main(){
                        ios::sync_with_stdio(false);
                        cin.tie(0);
                        cin>>n>>m;
                        for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j];
                        for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) aa[i][j]=a[i][j];
                        while(cin>>xt>>yt>>xh>>yh){
                            bool flag=0;
                            memset(vis,-1,sizeof(vis));
                            for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) a[i][j]=aa[i][j];
                            for(int i=0;i<8;i++){
                                int xx=xt+dsx[i],yy=yt+dsy[i];
                                while(xx>=1 && xx<=n && yy>=1 && yy<=m && a[xx][yy]!='X'){
                                    a[xx][yy]='F';
                                    xx+=dsx[i];yy+=dsy[i];
                                }
                            }
                            q.push({xh,yh});
                            while(!q.empty()){
                                trophy now=q.front();q.pop();
                                if(a[now.x][now.y]=='F'){
                                    cout<<vis[now.x][now.y]<<'\n';
                                    break;
                                }
                                for(int i=0;i<4;i++){
                                    int xx=now.x+dx[i],yy=now.y+dy[i];
                                    if(xx>=1 && xx<=n && yy>=1 && yy<=m && a[xx][yy]!='X' && vis[xx][yy]==-1){
                                        if(a[xx][yy]=='F') flag=1;
                                        q.push({xx,yy});
                                        vis[xx][yy]=vis[now.x][now.y]+1; 
                                    }
                                }
                            }
                            if(!flag) cout<<"Poor Harry\n";
                            flag=0;
                            while(!q.empty()) q.pop();
                        }
                        return 0;
                    }
                    
                    • @ 2024-9-14 22:42:30

                      !Help!

                      #P6370. [COCI2006-2007#6] KAMEN

                      #include<bits/stdc++.h>
                      using namespace std;
                      int main(){
                      	int r,c,n,s;
                      	char a[40][40];
                      	cin>>r>>c;
                      	for(int i=1;i<=r;i++){
                      		for(int j=1;j<=c;j++){
                      			cin>>a[i][j];
                      		}
                      	}
                      	cin>>n;
                      	while(n--){
                      		cin>>s;
                      		int hang=0,lie=s;
                      		if(a[hang][lie]=='X'||a[hang][lie]=='O'){
                                  continue;
                      		}
                      		while(hang!=r){
                      			if(hang==r){
                      				break;
                      			}
                      			else{
                      				if(a[hang+1][lie]=='X'){
                      					break;
                      				}
                      				else{
                      					if(a[hang+1][lie]=='O'&&(a[hang+1][lie-1]=='.'&&a[hang][lie-1]=='.')){
                      						lie--;
                      						hang++;
                      					}
                      					else if(a[hang+1][lie]=='O'&&(a[hang+1][lie+1]=='.'&&a[hang][lie+1]=='.')){
                      						lie++;
                      						hang++;
                      					}
                      				}
                      			}	
                      			if(a[hang+1][lie]=='.'&&hang!=r){
                      				hang++;
                      			}
                      		}
                      		a[hang][lie]='O';
                      	}
                      	for(int i=1;i<=r;i++){
                      		for(int j=1;j<=c;j++){
                      			cout<<a[i][j];
                      		}
                      		cout<<endl;
                      	}
                      	return 0;
                      }
                      
                      

                      WHY ?????

                      • @ 2024-9-14 16:58:10

                        各位,我陶陶摘苹果这道题的代码丢了,谁能帮我发一个格式弄好的程序,谢谢!

                      • @ 2024-9-14 13:19:49

                        额....

                        • @ 2024-9-14 10:52:46

                          @ T3代码贴错了

                        • @ 2024-9-14 10:41:37

                          其他题库难度与模拟赛题目难度标签严重不对等,洛谷一个紫题的难度才是6。 建议红题1-2 橙题2-3 黄题3-4 绿题5-6 蓝题6-7 紫题7+ 黑题10+ 语法周赛难度1-2 J组模拟赛难度1-6

                          • @ 2024-9-14 10:47:01

                            不用在意这个难度系统,那个是根据通过率自动算的,看个乐子就好。

                            P、B 开头的洛谷题是同步洛谷的。

                        • @ 2024-9-14 0:05:37

                          复赛模拟赛三的题名全部出自清静经

                        • @ 2024-9-13 11:21:09

                          考虑加一个类似洛谷的我的文章功能,把自己写的文章/题解归一起,方便查阅与复习

                        • @ 2024-9-12 14:55:51
                          (x+z)×(x+z)×
                          • @ 2024-9-10 22:45:50

                            ye

                            • @ 2024-9-10 21:46:21

                              耶?

                              • @ 2024-9-9 23:11:35

                                @

                                https://wiki.33dai.cn/zh/比赛题解/WOTOJO-CSPJ-R1

                                T2

                                题目问几个数可以得到最大的输出,显然一个暴力枚举的做法就是对 l\rim r 范围内的每个数都跑一遍这段代码看看输出是几。

                                源代码改成题目问几个数可以得到最大的输出,显然一个暴力枚举的做法就是对 $l\rim r$ 范围内的每个数都跑一遍这段代码看看输出是几。

                                • @ 2024-9-9 23:14:53

                                  题目问几个数可以得到最大的输出,显然一个暴力枚举的做法就是对 $l\sim r$ 范围内的每个数都跑一遍这段代码看看输出是几

                                  \rim也拼错了...应该是\sim

                              • @ 2024-9-9 19:20:57

                                https://oiwiki.33dai.cn/ds/huffman-tree/

                                我那边LaTeX炸了怎么回事

                              • @ 2024-9-8 14:24:50

                                我不会

                                • @ 2024-9-8 14:24:33

                                  #A0079. 级数求和 33DAL帮帮我

                                  • @ 2024-9-11 19:32:15

                                    自己做了没

                                  • @ 2024-9-11 23:18:51

                                    其实很简单

                                  • @ 2024-9-11 23:20:38

                                    ~~#include <bits/stdc++.h> using namespace std;

                                    int main(){ int n=1; double sum=1.0,k; cin>>k; for(double i=2.0;sum<=k;i++){ if(sum>k){ break; } else{ sum+=1/i; n++; } } cout<<n; }~~

                                  • @ 2024-9-11 23:21:18

                                    ~~#include <bits/stdc++.h> using namespace std;

                                    int main(){ int n=1; double sum=1.0,k; cin>>k; for(double i=2.0;sum<=k;i++){ if(sum>k){ break; } else{ sum+=1/i; n++; } } cout<<n; }~~

                                  • @ 2024-9-11 23:22:27

                                    @胡宇泽 自己格式化,OK?

                                • @ 2024-9-8 10:33:10

                                  ahhhhhhhhhhhh

                                  • @ 2024-9-6 22:24:19

                                    模拟赛比语法周赛人数还多

                                  • 语法周赛呢

                                  • 语法周赛成绩榜 / 几/几 是啥意思

                                  • @ 2024-9-5 19:44:10
                                  • @ 2024-9-5 3:24:53

                                    为什么我dev和vs都能跑的代码在wotojo上RE

                                  • @ 2024-9-4 20:55:56

                                    新蠢算罚🐎辣怂鼻塞第六题 原来TooY0ung看斗破苍穹啊

                                  • @ 2024-9-3 20:32:24
                                    #include<bits/stdc++.h>
                                    using namespace std;
                                    priority_queue<int>q1,q2;
                                    int n,R,L,ans;
                                    int a[200010],f[200010];
                                    int main()
                                    {
                                        scanf("%d%d%d",&n,&L,&R);
                                        for(int i=0;i<=n;i++)scanf("%d",&a[i]);
                                        for(int i=1;i<L;i++)q2.push(a[i]);
                                        for(int i=L;i<=n;i++){
                                            q1.push(f[i-L]);
                                            if(i-R-1>=L)q2.push(f[i-R-1]);
                                            while(!q2.empty()&&q1.top()==q2.top()){
                                                q1.pop();q2.pop();
                                            }
                                            f[i]=q1.top()+a[i];            
                                        }
                                        for(int i=n-R+1;i<=n;i++)ans=max(ans,f[i]);
                                        printf("%d",ans);
                                    }
                                    

                                    琪露诺 100 Wrong Answer

                                  • @ 2024-9-2 20:16:07

                                    @快发R23 24 25 26 27 28 29 30的硬币!

                                  • 之前的硬币都没了?

                                  • @ 2024-9-1 12:18:37

                                    @33DAI

                                    #A0575. 乌龟对对碰 题面有误

                                    游戏流程第二步骤

                                    第二步、按编号从小到大的顺序,依次在还存在的乌龟中拿乌龟,每拿一个,乌龟计数器 +1+1每个乌龟都放到一个空格子中,如果有多个空格子,放在编号最小的空格子中。

                                    加粗部分重复了

                                  • 无语

                                    • @ 2024-8-31 20:21:08

                                      周赛R30中,题面: 聪明的 kitten 一眼就发现了海报中有个错误, (1000) 2 表示的是二进制下的 1000,对应的十进制数应该是 8 而不是 16。

                                      而海报中为(10000)2,但订错的结果却用1000计算

                                    • @ 2024-8-31 12:34:59

                                      @ 咱们评测是用g++还是gcc

                                    • @33dai,解释一下,这是为什么 #A0578. 连续打卡与累计打卡

                                    • @ 2024-8-30 20:21:37

                                      NO!!!!!!!!!!

                                      • @ 2024-8-29 21:51:53

                                        题解能正常发吗

                                        • @ 2024-8-29 21:50:10

                                          33DAI好坏哦,难怪没人发讨论了

                                          • @ 2024-8-29 21:40:57

                                            @33DAI

                                            周赛pdf打不开

                                          • qp