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

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

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

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

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

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

448 条评论

  • @ 2024-12-6 21:57:58

    本人自创小游戏 欢迎大家来改编 改编完了发一下

    #include<bits/stdc++.h>
    using namespace std;
    int suijishu(){
    	return rand()+43+26;
    }
    int suijishu1(int n){
    	return rand()%n+1;
    }
    int main(){
    	int n;
    	int a=suijishu();
    	system("cls");
    	cout<<"boob!!";
    	system("cls");
    	int men=suijishu1(3);
    	int daoju=suijishu1(4);
    	int mingyun;
        int jueding;
    	for(int i=1;i<=men;i++){
    		n=suijishu1(2);
        	cout<<"第"<<i<<"道门"<<endl;
        	cout<<"你的道具"<<endl;
        	if(daoju==1){
        		cout<<"金药"<<endl;
    		}
    		else if(daoju==2){
    			cout<<"放大镜"<<endl;
    		}
    		else{
    			cout<<"无"<<endl;
    		}
    		mingyun=suijishu1(5);
    		cin>>jueding;
    		cout<<"是否使用道具(使用输入道具编号,否则输入3)"<<endl;
    		cin>>jueding;
    		if(jueding==1 && daoju==1){
    			a=1;
    			daoju=0;
    		}
    		else if(jueding==2 && daoju==2){
    			i=i/2;
    			daoju=0;
    		}
    		cout<<"请选择门"<<endl;
    		cin>>jueding;
    		if(jueding==mingyun){
    			cout<<"boob!! 你已死亡"<<endl;
    			return 0;
    		}
    		else{
    			cout<<"运气好啊!"<<endl; 
    			cout<<"结束";
    			system("cls");
    			cout<<a<<endl;//清屏
    			if(a>120){
    				cout<<"boob!! 你已死亡";
    			}
    			else{
    				cout<<"万岁!你确确实实的赢了!"<<endl;
    				cout<<"你的对手被boob了!"; 
    			}
    			return 0;
    		}
    		
    	}
    }
    
    • @ 2024-12-6 20:56:15

      第二题没开long long痛失阿克我要变异了!!!!!!!!!!!!!!!!!!!!!

    • @ 2024-12-6 16:14:04

      咋还是语法场

      • @ 2024-12-5 19:23:05

        @发硬币快发快发

      • @ 2024-12-5 17:25:49

        这个网址KaTeX\KaTeX 炸了

        • @ 2024-12-5 12:50:40

          没扣硬币@33DAI

        • @ 2024-12-4 17:02:22

          离谱,负数硬币

          • @ 2024-12-4 0:41:09

            我发明了一种 O(nlogn)\text{O}(n \log n) 抽象离散化

            #include<bits/stdc++.h>
            using namespace std;
            struct node
            {
            	int x;//原数 
            	int id;//在原数组里的编号 
            	int t;//离散化之后的数字 
            }a[100005];
            bool cmp(node x,node y)
            {
            	return x.x<y.x;
            }
            bool cmp2(node x,node y)
            {
            	return x.id<y.id;
            }
            int n;
            int main()
            {
            	ios::sync_with_stdio(0);
            	cin.tie(0);
            	cin>>n;
            	for(int i=1;i<=n;i++)
            	{
            		cin>>a[i].x;
            		a[i].id=i;
            	}
            	sort(a+1,a+1+n,cmp);
            	int tot=0;
            	for(int i=1;i<=n;)
            	{
            		int X=a[i].x;
            		while(a[i].x==X)
            		{
            			a[i].t=tot;
            			i++;
            		}
            		tot++;
            	}
            	sort(a+1,a+1+n,cmp2);
            	for(int i=1;i<=n;i++)
            	{
            		cout<<a[i].t<<' ';
            	}
            	return 0;
            }
            
            
          • @ 2024-12-3 21:42:42

            zswdlqy 能不能把你的七圣之元加一下注解?

            • @ 2024-12-3 20:37:08

              在线VScode 要密码的找我

              • @ 2024-12-3 20:37:47

                OJ

              • @ 2024-12-6 19:32:44

                炸了

              • @ 2024-12-6 19:33:08

                @ 泌阳的,还lv6

            • @ 2024-12-3 18:53:18

              完全无法提供信息的地图

            • @ 2024-12-2 22:51:54
              #include<bits/stdc++.h>
              #define int long long
              using namespace std;
              int a[200010],b[200010];
              signed main(){
              	ios::sync_with_stdio(false);
              	cin.tie(0); cout.tie(0);
              	//hypot(x,y)不香吗
              	double ans=0;
              	int n; cin>>n;
              	for(int i=1;i<=n;i++){
              		cin>>a[i]>>b[i];
              		if(i==1){
              			ans+=hypot(a[i],b[i]); 
              		}else{
              			ans+=hypot(a[i]-a[i-1],b[i]-b[i-1]);
              		}
              	}
              	ans+=hypot(a[n],b[n]);
              	cout<<fixed<<setprecision(20)<<ans;
              	return 0;
              }
              

              此题足已显现c++自带库函数的魅力

            • @ 2024-12-2 22:29:17

              求助!

              ABC375B

              怎么回事?输出-nan了(听起来好可怕)

              #include  <bits/stdc++.h>
              #include  <cmath>
              using namespace std;
              int n,x[200005],y[200005],xx,xy;
              long double a=0.0;
              int main(){
                  cin>>n;
                  for(int i=1;i<=n;i++){
                      cin>>x[i]>>y[i];
                      a+=sqrt((xx-x[i])*(xx-x[i])+(xy-y[i])*(xy-y[i]));
                      xx=x[i];
                      xy=y[i];
                  }
                  a+=sqrt((x[n]-0)*(x[n]-0)+(y[n]-0)*(y[n]-0));
                  cout<<fixed<<setprecision(20)<<a;
                  return 0;
              }
              
              • @ 2024-12-3 20:24:44

                正确代码

                #include  <bits/stdc++.h>
                using namespace std;
                long long n,x[200005],y[200005],xx,xy;
                double a=0.0;
                int main(){
                    cin>>n;
                    for(int i=1;i<=n;i++){
                        cin>>x[i]>>y[i];
                        a+=sqrt((xx-x[i])*(xx-x[i])+(xy-y[i])*(xy-y[i]));
                        xx=x[i];
                        xy=y[i];
                    }
                    a+=sqrt((x[n]-0)*(x[n]-0)+(y[n]-0)*(y[n]-0));
                    cout<<fixed<<setprecision(20)<<a;
                }
                

                第三行用long long就好了

              • @ 2024-12-3 20:30:50

                @十年oi一场空,不开long long见祖宗

            • @ 2024-12-2 21:35:08

              七圣之元(第一章)

              #include<bits/stdc++.h>
              #include<stdio.h>
              using namespace std;
              int suijishu(int n){
              	return rand()%n+1;
              }
              int main(){
              	srand(time(0));
              	cout<<"七圣之元"<<endl;
              	cout<<"科技未来出版"<<endl;
              	cout<<"输入任意数继续"<<endl;
              	char lin;
              	cin>>lin;
              	system("cls");//清屏
              	cout<<"话不多说"<<endl;
              	printf(
                  "######################################################################\n"
                  "#                                                                    #\n"
                  "#                       &                                &           #\n"
                  "#                 &&&&&&&&&&&&         &&&&&&&&&        &            #\n"
                  "#                 &          &                     &&&&&&&&&&&       #\n"
                  "#                 &&&&&&&&&&&&        &&&&&&&&&&&      &     &       #\n"
                  "#                &                         &          &      &       #\n"
                  "#               & &&&&&&&&&&&&            &          &       &       #\n"
                  "#              &  &          &           &   &      &        &       #\n"
                  "#             &   &&&&&&&&&&&&          &&&&&&&    &       &&&       #\n"
                  "#                                                                    #\n"
                  "######################################################################\n"
                  ); 
                  cout<<"七圣之元"<<endl;
                  cout<<"输入一个good"<<endl;
                  string sui;
                  cin>>sui;
                  cout<<"谢谢夸奖"<<endl;
                  system("cls");//清屏
                  cout<<"请输入一个一百以上的数"<<endl;
                  int su;
                  cin>>su;
                  int yun=suijishu(su);
                  cout<<"你的今日幸运数字是"<<yun<<endl;
                  cout<<"准备好了吗?"<<endl;
                  cin>>su;
                  cout<<"第一章"<<endl;
                  cout<<"生死之门"<<endl;
                  cout<<"规则如下"<<endl;
                  cout<<"规则1 你可以选择1或2号门,其中有一个是生门,另一个是死门 规则2 可以使用道具(你只有一个):1 金药(可以免死亡)2 放大镜(可以将剩余门数除以二)规则3 门数未知(最多十个门)"<<endl;
                  int men=suijishu(10);
                  int daoju=suijishu(3);
              	if(daoju==3){
              		daoju=1;
              	} 
              	cout<<"游戏开始"<<endl;
                  cout<<"输入1继续"<<endl;
                  system("cls");//清屏
                  int mingyun;
                  int jueding;
                  int hu=0;
                  for(int i=1;i<=men;i++){
                  	cout<<"第"<<i<<"道门"<<endl;
                  	cout<<"你的道具"<<endl;
                  	if(daoju==1){
                  		cout<<"金药"<<endl;
              		}
              		else if(daoju==2){
              			cout<<"放大镜"<<endl;
              		}
              		else{
              			cout<<"无"<<endl;
              		}
              		mingyun=suijishu(2);
              		cin>>jueding;
              		cout<<"是否使用道具(使用输入道具编号,否则输入3)"<<endl;
              		cin>>jueding;
              		if(jueding==1 && daoju==1){
              			hu=1;
              			daoju=0;
              		}
              		else if(jueding==2 && daoju==2){
              			i=i/2;
              			daoju=0;
              		}
              		cout<<"请选择门"<<endl;
              		cin>>jueding;
              		if(jueding==mingyun){
              			cout<<"你已死亡"<<endl;
              			return 0;
              		}
              		else{
              			cout<<"运气好啊!"<<endl; 
              		}
              		system("cls");//清屏
              	}
              	cout<<"你赢了!"<<endl;
              	return 0; 
              }
              
              • @ 2024-12-3 20:44:21

                修改加添加之后

                #include<bits/stdc++.h>
                #include<stdio.h>
                using namespace std;
                int suijishu(int n){
                	return rand()%n+1;
                }
                int main(){
                	srand(time(0));
                	cout<<"七圣之元"<<endl;
                	cout<<"科技未来出版"<<endl;
                	cout<<"输入任意数继续"<<endl;
                	char lin;
                	cin>>lin;
                	system("cls");//清屏
                	cout<<"话不多说"<<endl;
                	printf(
                    "######################################################################\n"
                    "#                                                                    #\n"
                    "#                       &                                &           #\n"
                    "#                 &&&&&&&&&&&&         &&&&&&&&&        &            #\n"
                    "#                 &          &                     &&&&&&&&&&&       #\n"
                    "#                 &&&&&&&&&&&&        &&&&&&&&&&&      &     &       #\n"
                    "#                &                         &          &      &       #\n"
                    "#               & &&&&&&&&&&&&            &          &       &       #\n"
                    "#              &  &          &           &   &      &        &       #\n"
                    "#             &   &&&&&&&&&&&&          &&&&&&&    &       &&&       #\n"
                    "#                                                                    #\n"
                    "######################################################################\n"
                    ); 
                    cout<<"七圣之元"<<endl;
                    cout<<"输入一个good"<<endl;
                    string sui;
                    cin>>sui;
                    cout<<"谢谢夸奖"<<endl;
                    system("cls");//清屏
                    cout<<"请输入一个一百以上的数"<<endl;
                    int su;
                    cin>>su;
                    int yun=suijishu(su);
                    cout<<"你的今日幸运数字是"<<yun<<endl;
                    cout<<"准备好了吗?"<<endl;
                    cin>>su;
                    cout<<"第一章"<<endl;
                    cout<<"生死之门"<<endl;
                    cout<<"规则如下"<<endl;
                    cout<<"规则1 你可以选择1或2号门,其中有一个是生门,另一个是死门 规则2 可以使用道具(你只有一个):1 金药(可以免死亡)2 放大镜(可以将剩余门数除以二)规则3 门数未知(最多十个门)"<<endl;
                    int men=suijishu(10);
                    int daoju=suijishu(3);
                	if(daoju==3){
                		daoju=1;
                	} 
                	cout<<"游戏开始"<<endl;
                    cout<<"输入1继续"<<endl;
                    cin>>su;
                    system("cls");//清屏
                    int mingyun;
                    int jueding;
                    int hu=0;
                    for(int i=1;i<=men;i++){
                    	cout<<"第"<<i<<"道门"<<endl;
                    	cout<<"你的道具"<<endl;
                    	if(daoju==1){
                    		cout<<"金药"<<endl;
                		}
                		else if(daoju==2){
                			cout<<"放大镜"<<endl;
                		}
                		else{
                			cout<<"无"<<endl;
                		}
                		mingyun=suijishu(2);
                		cin>>jueding;
                		cout<<"是否使用道具(使用输入道具编号,否则输入3)"<<endl;
                		cin>>jueding;
                		if(jueding==1 && daoju==1){
                			hu=1;
                			daoju=0;
                		}
                		else if(jueding==2 && daoju==2){
                			men/=2;
                			daoju=0;
                		}
                		cout<<"请选择门"<<endl;
                		cin>>jueding;
                		if(jueding==mingyun && hu==0 && (jueding>2 || jueding<1)){
                			cout<<"你已死亡"<<endl;
                			return 0;
                		}
                		else{
                			cout<<"运气好啊!"<<endl; 
                		}
                		hu=0;
                		system("cls");//清屏
                	}
                	cout<<"第二章"<<endl;
                	cout<<"任务的边缘"<<endl;
                	cout<<"规则如下"<<endl;
                	cout<<"规则1 你需要完成任务,但随时可能坏掉(你可以换一个新的),需要做到100%即可通关(你的道具只有一个)规则2 关于道具 1 卡牌(可以将进度+10%)2 保护罩 (可以保护任务,保证不会坏掉)"<<endl;
                	cout<<"游戏开始"<<endl;
                	cout<<"输入1继续"<<endl;
                	cin>>su;
                	system("cls");//清屏
                	daoju=suijishu(2);
                	for(int i=1;i<=10;i++){
                		cout<<"当前进度"<<i*10-10<<"%"<<endl; 
                		cout<<"你的道具"<<endl;
                    	if(daoju==1){
                    		cout<<"卡牌"<<endl;
                		}
                		else if(daoju==2){
                			cout<<"保护罩"<<endl;
                		}
                		else{
                			cout<<"无"<<endl;
                		}
                		cin>>su;
                		cout<<"是否使用道具(如上一章)"<<endl;
                		cin>>jueding;
                		if(jueding==1 && daoju==1){
                			i=i+1;
                			daoju=0;
                		}
                		else if(jueding==2 && daoju==2){
                			hu=1;
                			daoju=0;
                		}
                		cout<<"你的选择(输入1则换一个任务,否则继续)"<<endl;
                		cin>>jueding;
                		if(jueding==1){
                			i=1;
                		}
                		else{
                			mingyun=suijishu(10);
                			if(mingyun%5==0 && hu==0){
                				cout<<"你已死亡"<<endl;
                				return 0;
                			}
                			else{
                				cout<<"运气好啊!"<<endl;
                			}
                		}
                		hu=0;
                		system("cls");//清屏
                	}
                	cout<<"你赢了!"<<endl;
                	return 0; 
                }
                
            • @ 2024-12-2 12:14:09

              我才猜这次的周赛题目是

              33DAI的编辑字符串

              33DAI的遗失的赋值

              33DAI的树的遍历

              33DAI的树上查询

              qwq

            • @ 2024-12-1 14:08:58
              #include<bits/stdc++.h>
              #include <windows.h>
              using namespace std;
              int Your=6,Other=6;
              string daojuname[]={"放大镜","手铐","小刀","烟","饮料"};
              double Yourmoney;
              
              int shi,kong;
              int q[10],qlen; 
              int Rand(int x,int y){
              	int A=rand(),B=rand();
              	return A*1ll*B%(y-x+1)+x;
              }
              int T;
              int daojulen;
              int daoju[10];
              int daojulen1;
              int daoju1[10];
              void build_gun(){
              	kong=Rand(1,4);
              	shi=Rand(1,4);
              	qlen=0;
              	printf("%d发实弹,%d发空弹\n",shi,kong);
              	int a1=kong,a2=shi;
              	for(int i=1;i<=kong+shi;i++){
              //      Sleep(50);
              		int sum=Rand(1,a1+a2);
              		if(sum<=a1){
              			a1--;
              			q[++qlen]=2;
              		}else{
              			a2--;
              			q[++qlen]=1;
              		}
              	}
              	int maxn=min(4,8-daojulen);
              	printf("你获得了%d个道具:\n",maxn);
              	daojulen+=maxn;
              	for(int i=1;i<=maxn;i++){
              //      Sleep(50);
              		int kkk=Rand(0,4);
              		daoju[kkk]++;
              		cout<<daojuname[kkk];
              		if(i!=maxn){
              			printf(",");
              		}
              	}
              	printf("\n");
              	maxn=min(4,8-daojulen1);
              	printf("恶魔获得了%d个道具:\n",maxn);
              	daojulen1+=maxn;
              	for(int i=1;i<=maxn;i++){
              		int kkk=Rand(0,4);
              		daoju1[kkk]++;
              		cout<<daojuname[kkk];
              		if(i!=maxn){
              			printf(",");
              		}
              	}
              	printf("\n");
              	system("pause");
              	system("cls");
              }
              void IsOver(){
              	if(Your<=0){
              		printf("你输了\n");
              		system("pause");
              		exit(0);
              	}
              	if(Other<=0){
              		printf("你赢了\n你获得了奖金$%.2lf\n",Yourmoney);
              		system("pause");
              		exit(0);
              	}
              }
              void wait(){
              	for(int i=1;i<=3;i++){
              		Sleep(500);
              		printf(".");
              	}
              	Sleep(500);
              }
              int Hurt=1;
              int shoukao_you;
              void Timeyou(){
              	int x;
              	while(1){
              		printf("你的生命:%d/6\n恶魔生命:%d/6\n",Your,Other);
              		printf("剩余实弹数:%d    剩余空弹数:%d\n",shi,kong);
              		printf("你现在拥有的道具:\n");
              		for(int i=0;i<=4;i++){
              			cout<<daojuname[i];
              			printf("%d",daoju[i]);
              			printf("个");
              			if(i!=4){
              				printf(",");
              			}
              		}
              		printf("\n");
              		printf("恶魔现在拥有的道具:\n");
              		for(int i=0;i<=4;i++){
              			cout<<daojuname[i];
              			printf("%d",daoju1[i]);
              			printf("个");
              			if(i!=4){
              				printf(",");
              			}
              		}
              		printf("\n");
              		printf("现在是你的回合\n");
              		printf("你要\n1.向恶魔开枪\n2.向自己开枪\n");
              		for(int i=0;i<=4;i++){
              			printf("%d.使用",i+3);
              			cout<<daojuname[i]<<'\n';
              		}
              		scanf("%d",&x);
              		if(1<=x&&x<=7){
              			break;
              		}
              		printf("输入不合法\n");
              		Sleep(1145);
              		system("cls");
              	}
              	if(x==1){
              		printf("你决定向恶魔开枪");
              		T++;
              		wait();
              		if(q[qlen]==2){
              			Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(shi)*1.0/(double)(shi+kong)));
              			kong--;
              			qlen--;
              			Hurt=1;
              			printf("是空弹\n");
              			if(shoukao_you==1){
              				shoukao_you=0;
              				printf("因为你使用了手铐,所以可以再来一次\n");
              				Sleep(500);
              				T--;
              			}
              		}else{
              //          printf("((%lf))\n",Yourmoney);
              			Yourmoney+=(double)(5000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
              //          printf("{{%lf}}\n",Yourmoney);
              			shi--;
              			qlen--;
              			Other-=Hurt;
              			Hurt=1;
              			printf("是实弹\n");
              			Sleep(500);
              			IsOver();
              			if(shoukao_you==1){
              				shoukao_you=0;
              				Yourmoney+=1000.0;
              				printf("因为你使用了手铐,所以可以再来一次\n");
              				Sleep(500);
              				T--;
              			}
              		}
              	}else if(x==2){
              		printf("你决定向自己开枪");
              		wait();
              		if(q[qlen]==2){
              			Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
              			kong--;
              			qlen--;
              			Hurt=1;
              			printf("是空弹\n");
              		}else{
              			Yourmoney+=5000.0*(1+(double)(shi)*1.0/(double)(shi+kong));
              			T++;
              			shi--;
              			qlen--;
              			Your-=Hurt;
              			Hurt=1;
              			printf("是实弹\n");
              			Sleep(500);
              			IsOver();
              			if(shoukao_you==1){
              				shoukao_you=0;
              				printf("因为你使用了手铐,所以可以再来一次\n");
              				Sleep(500);
              				T--;
              			}
              		}
              	}else if(x==3){//{"放大镜","手铐","小刀","烟","饮料"};
              		if(daoju[0]){
              			daoju[0]--;
              			daojulen--;
              			printf("你使用了放大镜\n");
              			wait();
              			printf("\n你看到了");
              			if(q[qlen]==1){
              				printf("实弹\n");
              				Yourmoney+=2500.0;
              			}else{
              				printf("空弹\n");
              			}
              			Sleep(500);
              			printf("\n");
              		}else{
              			printf("你现在没有放大镜\n");
              			Sleep(1145);
              			system("cls");
              		}
              	}else if(x==4){
              		if(daoju[1]){
              			if(!shoukao_you){
              				daoju[1]--;
              				daojulen--;
              				printf("你使用了手铐\n");
              				printf("你获得了连开两枪的机会\n");
              				shoukao_you=1;
              			}else{
              				printf("你已经用过手铐了\n");
              			}
              			Sleep(1145);
              			system("cls"); 
              		}else{
              			printf("你现在没有手铐\n");
              			Sleep(1145);
              			system("cls");
              		}
              	}else if(x==5){
              		if(daoju[2]){
              			if(Hurt==1){
              				daoju[2]--;
              				daojulen--;
              				printf("你使用了小刀\n");
              				printf("若下一发为实弹则伤害+1\n");
              				Yourmoney+=500.0;
              				Hurt=2;
              			}else{
              				printf("你已经用过小刀了\n");
              			}
              			Sleep(1145);
              			system("cls");
              		}else{
              			printf("你现在没有小刀\n");
              			Sleep(1145);
              			system("cls");
              		}
              	}else if(x==6){
              		if(daoju[3]){
              			if(Your^6){
              				daoju[3]--;
              				daojulen--;
              				printf("你使用了烟\n");
              				printf("你回复了一点生命\n");
              				Yourmoney+=500.0;
              				Your++;
              			}else{
              				printf("你现在不需要烟\n");
              			}
              			Sleep(1145);
              		}else{
              			printf("你现在没有烟\n");
              			Sleep(1145);
              			system("cls");
              		}
              	}else{
              		if(daoju[4]){
              			daoju[4]--;
              			daojulen--;
              			printf("你使用了饮料\n");
              			wait();
              			printf("\n");
              			printf("你退了一发"); 
              			if(q[qlen]==2){
              				printf("空弹");
              				kong--;
              			}else{
              				printf("实弹");
              				Yourmoney+=500.0;
              				shi--;
              			}
              			qlen--;
              			Sleep(500);
              		}else{
              			printf("你现在没有饮料\n");
              			Sleep(1145);
              			system("cls");
              		}
              	}
              	Sleep(1000);
              	system("cls");
              }
              int Know;//通过放大镜得知下一发子弹 
              int shoukaoemo;
              void fightyou(){
              	printf("恶魔决定向你开枪");
              	T++;
              	wait();
              	if(q[qlen]==2){
              		Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
              		kong--;
              		qlen--;
              		Hurt=1;
              		Know=0;
              		printf("是空弹\n");
              		if(shoukaoemo){
              			printf("因为恶魔使用了手铐,所以可以再来一次\n");
              			T--;
              			Sleep(500);
              			shoukaoemo=0;
              		}
              	}else{
              		Yourmoney+=(double)(5000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
              		shi--;
              		qlen--;
              		Your-=Hurt;
              		Hurt=1;
              		printf("是实弹\n");
              		Know=0;
              		Sleep(500);
              		IsOver();
              		if(shoukaoemo){
              			printf("因为恶魔使用了手铐,所以可以再来一次\n");
              			Yourmoney+=1000.0;
              			T--;
              			Sleep(500);
              			shoukaoemo=0;
              		}
              	}
              }
              void fightemo(){
              	printf("恶魔决定向自己开枪");
              	wait();
              	if(q[qlen]==2){
              		Yourmoney+=2000.0*(1+(double)(shi)*1.0/(double)(shi+kong));
              		kong--;
              		qlen--;
              		printf("是空弹\n");
              		Know=0;
              	}else{
              		Yourmoney+=5000.0*(1+(double)(kong)*1.0/(double)(shi+kong));
              		shi--;
              		T++;
              		qlen--;
              		Other-=Hurt;
              		Hurt=1;
              		printf("是实弹\n");
              		Know=0;
              		Sleep(500);
              		IsOver();
              		if(shoukaoemo){
              			printf("因为恶魔使用了手铐,所以可以再来一次\n");
              			T--;
              			Sleep(500);
              			shoukaoemo=0;
              		}
              	}
              }
              void Timeother(){
              	printf("你的生命:%d/6\n恶魔生命:%d/6\n",Your,Other);
              	printf("剩余实弹数:%d    剩余空弹数:%d\n",shi,kong);
              	printf("你现在拥有的道具:\n");
              	for(int i=0;i<=4;i++){
              		cout<<daojuname[i];
              		printf("%d",daoju[i]);
              		printf("个");
              		if(i!=4){
              			printf(",");
              		}
              	}
              	printf("\n");
              	printf("恶魔现在拥有的道具:\n");
              	for(int i=0;i<=4;i++){
              		cout<<daojuname[i];
              		printf("%d",daoju1[i]);
              		printf("个");
              		if(i!=4){
              			printf(",");
              		}
              	}
              	printf("\n");
              	printf("现在是恶魔的回合\n");
              	Sleep(1500);
              	
              	if(Other!=6){
              		if(daoju1[3]){
              			daoju1[3]--;
              			daojulen1--;
              			printf("恶魔使用了烟\n");
              			printf("恶魔回复了一点生命\n");
              			Other++;
              			Yourmoney+=500.0;
              			Sleep(1145);
              			system("cls");
              			return ;
              		}
              	}
              	if(Know==0&&kong==0){
              		Know=1;
              	}
              	if(Know==0){
              		if(abs(shi-kong)<2&&kong!=0){
              			if(daoju1[0]){
              				daoju1[0]--;
              				daojulen1--;
              				printf("恶魔使用了放大镜\n");
              				wait();
              				printf("\n恶魔看到了");
              				if(q[qlen]==1){
              					printf("实弹");
              					Yourmoney+=2500.0;
              					Know=1;
              				}else{
              					printf("空弹");
              					Know=2;
              				}
              				Sleep(1145);
              				system("cls");
              				return ;
              			}
              		}
              	}else if(Know==1){
              		if(Hurt==1&&daoju1[2]){
              			daoju1[2]--;
              			daojulen1--;
              			Hurt++;
              			printf("恶魔使用了小刀\n");
              			printf("若下一发为实弹则伤害+1");
              			Yourmoney+=500.0;
              			Sleep(1145);
              			system("cls");
              			return ;
              		}else{
              			if(shi>=kong+1&&daoju1[1]&&shoukaoemo!=1){
              				daoju1[1]--;
              				daojulen1--;
              				shoukaoemo=1;
              				printf("恶魔使用了手铐\n");
              				printf("恶魔获得了连开两枪的机会\n");
              				Sleep(1145);
              				system("cls");
              				return ;
              			}
              			fightyou();
              			system("cls");
              			return ;
              		}
              	}else{
              		if(daoju1[4]){
              			daoju1[4]--;
              			daojulen1--;
              			printf("恶魔使用了饮料\n");
              			wait();
              			printf("\n");
              			printf("恶魔退了一发"); 
              			if(q[qlen]==2){
              				printf("空弹");
              				kong--;
              			}else{
              				printf("实弹");
              				shi--;
              			}
              			Know=0;
              			qlen--;
              			Sleep(500);
              			Sleep(1145);
              			system("cls");
              			return ;
              		}else{
              			fightemo();
              			Sleep(1145);
              			system("cls");
              			return ;
              		}
              	}
              	if(shi>=kong){
              		fightyou();
              	}else{
              		fightemo();
              	}
              	Sleep(1145);
              	system("cls");
              }
              void Play(){
              	while(1){
              		if(shi==0){
              			build_gun();
              			T=0;
              			continue;
              		}
              		if(T%2==0){
              			Timeyou();
              		}else{
              			Timeother();
              		}
              	}
              }
              void danrenplay(){
              	for(int i=1;i<=3;i++){
              		printf(".");
              //      Sleep(1000);
              	}
              	printf("\n");
              	printf("又来了一位挑战者...\n");
              	Sleep(1000);
              	int x;
              	while(1){
              		printf("准备好参与恶魔的游戏吗?胜者带走奖金,败者将会在此长眠\n1.好的\n2.没问题\n");
              		scanf("%d",&x);
              		if(x==1||x==2){
              			break;
              		}
              		printf("输入不合法\n");
              		Sleep(1145);
              		system("cls");
              	}
              	while(1){
              		printf("你清楚我们的规则吗?\n1.清楚\n2.不清楚\n");
              		scanf("%d",&x);
              		if(x==1||x==2){
              			break;
              		}
              		printf("输入不合法\n");
              		Sleep(1145);
              		system("cls");
              	}
              	if(x==1){
              		
              	}else{
              		for(int i=1;i<=3;i++){
              			printf(".");
              			Sleep(1000);
              		}
              		printf("\n");
              		printf("规则:\n");
              		printf("你和恶魔都各有6点生命\n") ;
              		printf("每一回合开始前,你将知道一共有几发实弹,几发空弹,同时双方都将获得4个道具作为补给(上限为8个)\n"); 
              		printf("每一回合,你可以选择对自己开枪,对恶魔开枪或者使用道具\n");
              		printf("如果你对自己开枪,若为空弹,则可以继续行动,否则,停止行动\n");
              		printf("如果你对恶魔开枪,无论如何,都将停止行动\n");
              		printf("道具一览:\n"); 
              		printf("放大镜:可以知道下一发子弹是空弹还是实弹\n");
              		printf("手铐:增加一次本回合的行动次数\n");
              		printf("小刀:若下一发子弹为实弹,则伤害+1\n");
              		printf("烟:可以回复1点体力\n");
              		printf("饮料:可以退一发子弹\n");
              		system("pause");
              		system("cls");
              	}
              	
              	printf("好吧\n");
              	Sleep(1145);
              	printf("游戏将要开始了哦\n");
              	Sleep(1145);
              	system("cls");
              	Play();
              }
              void IsOver_duo(){
              	if(Your<=0){
              		printf("玩家B赢了\n玩家B获得了奖金$%.2lf\n",Yourmoney); 
              		system("pause");
              		exit(0);
              	}else if(Other<=0){
              		printf("玩家A赢了\n玩家A获得了奖金$%.2lf\n",Yourmoney); 
              		system("pause");
              		exit(0);
              	}
              	
              }
              void build_gun_duo(){
              	kong=Rand(1,4);
              	shi=Rand(1,4);
              	qlen=0;
              	printf("%d发实弹,%d发空弹\n",shi,kong);
              	int a1=kong,a2=shi;
              	for(int i=1;i<=kong+shi;i++){
              //      Sleep(50);
              		int sum=Rand(1,a1+a2);
              		if(sum<=a1){
              			a1--;
              			q[++qlen]=2;
              		}else{
              			a2--;
              			q[++qlen]=1;
              		}
              	}
              	int maxn=min(2,8-daojulen);
              	printf("玩家A获得了%d个道具:\n",maxn);
              	daojulen+=maxn;
              	for(int i=1;i<=maxn;i++){
              //      Sleep(50);
              		int kkk=Rand(0,4);
              		daoju[kkk]++;
              		cout<<daojuname[kkk];
              		if(i!=maxn){
              			printf(",");
              		}
              	}
              	printf("\n");
              	maxn=min(2,8-daojulen1);
              	printf("玩家B获得了%d个道具:\n",maxn);
              	daojulen1+=maxn;
              	for(int i=1;i<=maxn;i++){
              		int kkk=Rand(0,4);
              		daoju1[kkk]++;
              		cout<<daojuname[kkk];
              		if(i!=maxn){
              			printf(",");
              		}
              	}
              	printf("\n");
              	system("pause");
              	system("cls");
              }
              void Timeyou_duo(){
              	int x;
              	while(1){
              		printf("玩家A的生命:%d/4\n玩家B的生命:%d/4\n",Your,Other);
              		printf("剩余实弹数:%d    剩余空弹数:%d\n",shi,kong);
              		printf("玩家A现在拥有的道具:\n");
              		for(int i=0;i<=4;i++){
              			cout<<daojuname[i];
              			printf("%d",daoju[i]);
              			printf("个");
              			if(i!=4){
              				printf(",");
              			}
              		}
              		printf("\n");
              		printf("玩家B现在拥有的道具:\n");
              		for(int i=0;i<=4;i++){
              			cout<<daojuname[i];
              			printf("%d",daoju1[i]);
              			printf("个");
              			if(i!=4){
              				printf(",");
              			}
              		}
              		printf("\n");
              		printf("现在是玩家A的回合\n");
              		printf("玩家A要\n1.向玩家B开枪\n2.向自己开枪\n");
              		for(int i=0;i<=4;i++){
              			printf("%d.使用",i+3);
              			cout<<daojuname[i]<<'\n';
              		}
              		scanf("%d",&x);
              		if(1<=x&&x<=7){
              			break;
              		}
              		printf("输入不合法\n");
              		Sleep(1145);
              		system("cls");
              	}
              	if(x==1){
              		printf("玩家A决定向玩家B开枪");
              		T++;
              		wait();
              		if(q[qlen]==2){
              			Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(shi)*1.0/(double)(shi+kong)));
              			kong--;
              			qlen--;
              			Hurt=1;
              			printf("是空弹\n");
              			if(shoukao_you==1){
              				shoukao_you=0;
              				printf("因为玩家A使用了手铐,所以可以再来一次\n");
              				Sleep(500);
              				T--;
              			}
              		}else{
              //          printf("((%lf))\n",Yourmoney);
              			Yourmoney+=(double)(5000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
              //          printf("{{%lf}}\n",Yourmoney);
              			shi--;
              			qlen--;
              			Other-=Hurt;
              			Hurt=1;
              			printf("是实弹\n");
              			Sleep(500);
              			IsOver_duo();
              			if(shoukao_you==1){
              				shoukao_you=0;
              				Yourmoney+=1000.0;
              				printf("因为玩家A使用了手铐,所以可以再来一次\n");
              				Sleep(500);
              				T--;
              			}
              		}
              	}else if(x==2){
              		printf("玩家A决定向自己开枪");
              		wait();
              		if(q[qlen]==2){
              			Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
              			kong--;
              			qlen--;
              			Hurt=1;
              			printf("是空弹\n");
              		}else{
              			Yourmoney+=5000.0*(1+(double)(shi)*1.0/(double)(shi+kong));
              			T++;
              			shi--;
              			qlen--;
              			Your-=Hurt;
              			Hurt=1;
              			printf("是实弹\n");
              			Sleep(500);
              			IsOver_duo();
              			if(shoukao_you==1){
              				shoukao_you=0;
              				printf("因为玩家A使用了手铐,所以可以再来一次\n");
              				Sleep(500);
              				T--;
              			}
              		}
              	}else if(x==3){//{"放大镜","手铐","小刀","烟","饮料"};
              		if(daoju[0]){
              			daoju[0]--;
              			daojulen--;
              			printf("玩家A使用了放大镜\n");
              			wait();
              			printf("\n玩家A看到了");
              			if(q[qlen]==1){
              				printf("实弹\n");
              				Yourmoney+=2500.0;
              			}else{
              				printf("空弹\n");
              			}
              			Sleep(500);
              			printf("\n");
              		}else{
              			printf("玩家A现在没有放大镜\n");
              			Sleep(1145);
              			system("cls");
              		}
              	}else if(x==4){
              		if(daoju[1]){
              			if(!shoukao_you){
              				daoju[1]--;
              				daojulen--;
              				printf("玩家A使用了手铐\n");
              				printf("玩家A获得了连开两枪的机会\n");
              				shoukao_you=1;
              			}else{
              				printf("玩家A已经用过手铐了\n");
              			}
              			Sleep(1145);
              			system("cls"); 
              		}else{
              			printf("玩家A现在没有手铐\n");
              			Sleep(1145);
              			system("cls");
              		}
              	}else if(x==5){
              		if(daoju[2]){
              			if(Hurt==1){
              				daoju[2]--;
              				daojulen--;
              				printf("玩家A使用了小刀\n");
              				printf("若下一发为实弹则伤害+1\n");
              				Yourmoney+=500.0;
              				Hurt=2;
              			}else{
              				printf("玩家A已经用过小刀了\n");
              			}
              			Sleep(1145);
              			system("cls");
              		}else{
              			printf("玩家A现在没有小刀\n");
              			Sleep(1145);
              			system("cls");
              		}
              	}else if(x==6){
              		if(daoju[3]){
              			if(Your^4){
              				daoju[3]--;
              				daojulen--;
              				printf("玩家A使用了烟\n");
              				printf("玩家A回复了一点生命\n");
              				Yourmoney+=500.0;
              				Your++;
              			}else{
              				printf("玩家A现在不需要烟\n");
              			}
              			Sleep(1145);
              		}else{
              			printf("玩家A现在没有烟\n");
              			Sleep(1145);
              			system("cls");
              		}
              	}else{
              		if(daoju[4]){
              			daoju[4]--;
              			daojulen--;
              			printf("玩家A使用了饮料\n");
              			wait();
              			printf("\n");
              			printf("玩家A退了一发"); 
              			if(q[qlen]==2){
              				printf("空弹");
              				kong--;
              			}else{
              				printf("实弹");
              				Yourmoney+=500.0;
              				shi--;
              			}
              			qlen--;
              			Sleep(500);
              		}else{
              			printf("玩家A现在没有饮料\n");
              			Sleep(1145);
              			system("cls");
              		}
              	}
              	Sleep(1000);
              	system("cls");
              }
              void Timeother_duo(){
              	int x;
              	while(1){
              		printf("玩家A的生命:%d/4\n玩家B的生命:%d/4\n",Your,Other);
              		printf("剩余实弹数:%d    剩余空弹数:%d\n",shi,kong);
              		printf("玩家A现在拥有的道具:\n");
              		for(int i=0;i<=4;i++){
              			cout<<daojuname[i];
              			printf("%d",daoju[i]);
              			printf("个");
              			if(i!=4){
              				printf(",");
              			}
              		}
              		printf("\n");
              		printf("玩家B现在拥有的道具:\n");
              		for(int i=0;i<=4;i++){
              			cout<<daojuname[i];
              			printf("%d",daoju1[i]);
              			printf("个");
              			if(i!=4){
              				printf(",");
              			}
              		}
              		printf("\n");
              		printf("现在是玩家B的回合\n");
              		printf("玩家B要\n1.向玩家A开枪\n2.向自己开枪\n");
              		for(int i=0;i<=4;i++){
              			printf("%d.使用",i+3);
              			cout<<daojuname[i]<<'\n';
              		}
              		scanf("%d",&x);
              		if(1<=x&&x<=7){
              			break;
              		}
              		printf("输入不合法\n");
              		Sleep(1145);
              		system("cls");
              	}
              	if(x==1){
              		printf("玩家B决定向玩家A开枪");
              		T++;
              		wait();
              		if(q[qlen]==2){
              			Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(shi)*1.0/(double)(shi+kong)));
              			kong--;
              			qlen--;
              			Hurt=1;
              			printf("是空弹\n");
              			if(shoukaoemo==1){
              				shoukaoemo=0;
              				printf("因为玩家B使用了手铐,所以可以再来一次\n");
              				Sleep(500);
              				T--;
              			}
              		}else{
              //          printf("((%lf))\n",Yourmoney);
              			Yourmoney+=(double)(5000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
              //          printf("{{%lf}}\n",Yourmoney);
              			shi--;
              			qlen--;
              			Your-=Hurt;
              			Hurt=1;
              			printf("是实弹\n");
              			Sleep(500);
              			IsOver_duo();
              			if(shoukaoemo==1){
              				shoukaoemo=0;
              				Yourmoney+=1000.0;
              				printf("因为玩家B使用了手铐,所以可以再来一次\n");
              				Sleep(500);
              				T--;
              			}
              		}
              	}else if(x==2){
              		printf("玩家B决定向自己开枪");
              		wait();
              		if(q[qlen]==2){
              			Yourmoney+=(double)(2000.0*(Hurt*1.0)*(1+(double)(kong)*1.0/(double)(shi+kong)));
              			kong--;
              			qlen--;
              			Hurt=1;
              			printf("是空弹\n");
              		}else{
              			Yourmoney+=5000.0*(1+(double)(shi)*1.0/(double)(shi+kong));
              			T++;
              			shi--;
              			qlen--;
              			Other-=Hurt;
              			Hurt=1;
              			printf("是实弹\n");
              			Sleep(500);
              			IsOver_duo();
              			if(shoukao_you==1){
              				shoukao_you=0;
              				printf("因为玩家B使用了手铐,所以可以再来一次\n");
              				Sleep(500);
              				T--;
              			}
              		}
              	}else if(x==3){//{"放大镜","手铐","小刀","烟","饮料"};
              		if(daoju1[0]){
              			daoju1[0]--;
              			daojulen1--;
              			printf("玩家B使用了放大镜\n");
              			wait();
              			printf("\n玩家B看到了");
              			if(q[qlen]==1){
              				printf("实弹\n");
              				Yourmoney+=2500.0;
              			}else{
              				printf("空弹\n");
              			}
              			Sleep(500);
              			printf("\n");
              		}else{
              			printf("玩家B现在没有放大镜\n");
              			Sleep(1145);
              			system("cls");
              		}
              	}else if(x==4){
              		if(daoju1[1]){
              			if(!shoukaoemo){
              				daoju1[1]--;
              				daojulen1--;
              				printf("玩家B使用了手铐\n");
              				printf("玩家B获得了连开两枪的机会\n");
              				shoukaoemo=1;
              			}else{
              				printf("玩家B已经用过手铐了\n");
              			}
              			Sleep(1145);
              			system("cls"); 
              		}else{
              			printf("玩家B现在没有手铐\n");
              			Sleep(1145);
              			system("cls");
              		}
              	}else if(x==5){
              		if(daoju1[2]){
              			if(Hurt==1){
              				daoju1[2]--;
              				daojulen1--;
              				printf("玩家B使用了小刀\n");
              				printf("若下一发为实弹则伤害+1\n");
              				Yourmoney+=500.0;
              				Hurt=2;
              			}else{
              				printf("玩家B已经用过小刀了\n");
              			}
              			Sleep(1145);
              			system("cls");
              		}else{
              			printf("玩家B现在没有小刀\n");
              			Sleep(1145);
              			system("cls");
              		}
              	}else if(x==6){
              		if(daoju1[3]){
              			if(Other^4){
              				daoju1[3]--;
              				daojulen1--;
              				printf("玩家B使用了烟\n");
              				printf("玩家B回复了一点生命\n");
              				Yourmoney+=500.0;
              				Other++;
              			}else{
              				printf("玩家B现在不需要烟\n");
              			}
              			Sleep(1145);
              		}else{
              			printf("玩家B现在没有烟\n");
              			Sleep(1145);
              			system("cls");
              		}
              	}else{
              		if(daoju1[4]){
              			daoju1[4]--;
              			daojulen1--;
              			printf("玩家B使用了饮料\n");
              			wait();
              			printf("\n");
              			printf("玩家B退了一发"); 
              			if(q[qlen]==2){
              				printf("空弹");
              				kong--;
              			}else{
              				printf("实弹");
              				Yourmoney+=500.0;
              				shi--;
              			}
              			qlen--;
              			Sleep(500);
              		}else{
              			printf("玩家B现在没有饮料\n");
              			Sleep(1145);
              			system("cls");
              		}
              	}
              	Sleep(1000);
              	system("cls");
              }
              int asdasd;
              void duorenplay(){
              	while(1){
              		if(shi==0){
              			build_gun_duo();
              			T=asdasd;
              			asdasd++;
              			continue;
              		}
              		if(T%2==0){
              			Timeyou_duo();
              		}else{
              			Timeother_duo();
              		}
              	}
              }
              int main(){
              	srand(time(0));
              	int x;
              	while(1){
              		printf("请选择你想要的模式:\n1.单人\n2.双人(此模式中,生命值为4,道具补给为2)\n");
              		scanf("%d",&x);
              		if(x==1||x==2){
              			break;
              		}
              		printf("输入不合法\n");
              		Sleep(1145);
              		system("cls");
              	}
              	system("cls");
              	if(x==1){
              		danrenplay();
              	}else{
              		Your=Other=4;
              		duorenplay();
              	}
              	return 0;
              }
              
              • @ 2024-12-1 14:07:58

                `#include<bits/stdc++.h> #include <windows.h> using namespace std; int Your=6,Other=6; string daojuname[]={"放大镜","手铐","小刀","烟","饮料"}; double Yourmoney;

                int shi,kong; int q[10],qlen; int Rand(int x,int y){ int A=rand(),B=rand(); return A1llB%(y-x+1)+x; } int T; int daojulen; int daoju[10]; int daojulen1; int daoju1[10]; void build_gun(){ kong=Rand(1,4); shi=Rand(1,4); qlen=0; printf("%d发实弹,%d发空弹\n",shi,kong); int a1=kong,a2=shi; for(int i=1;i<=kong+shi;i++){ // Sleep(50); int sum=Rand(1,a1+a2); if(sum<=a1){ a1--; q[++qlen]=2; }else{ a2--; q[++qlen]=1; } } int maxn=min(4,8-daojulen); printf("你获得了%d个道具:\n",maxn); daojulen+=maxn; for(int i=1;i<=maxn;i++){ // Sleep(50); int kkk=Rand(0,4); daoju[kkk]++; cout<<daojuname[kkk]; if(i!=maxn){ printf(","); } } printf("\n"); maxn=min(4,8-daojulen1); printf("恶魔获得了%d个道具:\n",maxn); daojulen1+=maxn; for(int i=1;i<=maxn;i++){ int kkk=Rand(0,4); daoju1[kkk]++; cout<<daojuname[kkk]; if(i!=maxn){ printf(","); } } printf("\n"); system("pause"); system("cls"); } void IsOver(){ if(Your<=0){ printf("你输了\n"); system("pause"); exit(0); } if(Other<=0){ printf("你赢了\n你获得了奖金$%.2lf\n",Yourmoney); system("pause"); exit(0); } } void wait(){ for(int i=1;i<=3;i++){ Sleep(500); printf("."); } Sleep(500); } int Hurt=1; int shoukao_you; void Timeyou(){ int x; while(1){ printf("你的生命:%d/6\n恶魔生命:%d/6\n",Your,Other); printf("剩余实弹数:%d 剩余空弹数:%d\n",shi,kong); printf("你现在拥有的道具:\n"); for(int i=0;i<=4;i++){ cout<<daojuname[i]; printf("%d",daoju[i]); printf("个"); if(i!=4){ printf(","); } } printf("\n"); printf("恶魔现在拥有的道具:\n"); for(int i=0;i<=4;i++){ cout<<daojuname[i]; printf("%d",daoju1[i]); printf("个"); if(i!=4){ printf(","); } } printf("\n"); printf("现在是你的回合\n"); printf("你要\n1.向恶魔开枪\n2.向自己开枪\n"); for(int i=0;i<=4;i++){ printf("%d.使用",i+3); cout<<daojuname[i]<<'\n'; } scanf("%d",&x); if(1<=x&&x<=7){ break; } printf("输入不合法\n"); Sleep(1145); system("cls"); } if(x1){ printf("你决定向恶魔开枪"); T++; wait(); if(q[qlen]2){ Yourmoney+=(double)(2000.0*(Hurt1.0)(1+(double)(shi)*1.0/(double)(shi+kong))); kong--; qlen--; Hurt=1; printf("是空弹\n"); if(shoukao_you1){ shoukao_you=0; printf("因为你使用了手铐,所以可以再来一次\n"); Sleep(500); T--; } }else{ // printf("((%lf))\n",Yourmoney); Yourmoney+=(double)(5000.0*(Hurt1.0)(1+(double)(kong)*1.0/(double)(shi+kong))); // printf("{{%lf}}\n",Yourmoney); shi--; qlen--; Other-=Hurt; Hurt=1; printf("是实弹\n"); Sleep(500); IsOver(); if(shoukao_you1){ shoukao_you=0; Yourmoney+=1000.0; printf("因为你使用了手铐,所以可以再来一次\n"); Sleep(500); T--; } } }else if(x2){ printf("你决定向自己开枪"); wait(); if(q[qlen]2){ Yourmoney+=(double)(2000.0*(Hurt1.0)(1+(double)(kong)1.0/(double)(shi+kong))); kong--; qlen--; Hurt=1; printf("是空弹\n"); }else{ Yourmoney+=5000.0(1+(double)(shi)*1.0/(double)(shi+kong)); T++; shi--; qlen--; Your-=Hurt; Hurt=1; printf("是实弹\n"); Sleep(500); IsOver(); if(shoukao_you1){ shoukao_you=0; printf("因为你使用了手铐,所以可以再来一次\n"); Sleep(500); T--; } } }else if(x3){//{"放大镜","手铐","小刀","烟","饮料"}; if(daoju[0]){ daoju[0]--; daojulen--; printf("你使用了放大镜\n"); wait(); printf("\n你看到了"); if(q[qlen]1){ printf("实弹\n"); Yourmoney+=2500.0; }else{ printf("空弹\n"); } Sleep(500); printf("\n"); }else{ printf("你现在没有放大镜\n"); Sleep(1145); system("cls"); } }else if(x4){ if(daoju[1]){ if(!shoukao_you){ daoju[1]--; daojulen--; printf("你使用了手铐\n"); printf("你获得了连开两枪的机会\n"); shoukao_you=1; }else{ printf("你已经用过手铐了\n"); } Sleep(1145); system("cls"); }else{ printf("你现在没有手铐\n"); Sleep(1145); system("cls"); } }else if(x5){ if(daoju[2]){ if(Hurt1){ daoju[2]--; daojulen--; printf("你使用了小刀\n"); printf("若下一发为实弹则伤害+1\n"); Yourmoney+=500.0; Hurt=2; }else{ printf("你已经用过小刀了\n"); } Sleep(1145); system("cls"); }else{ printf("你现在没有小刀\n"); Sleep(1145); system("cls"); } }else if(x==6){ if(daoju[3]){ if(Your^6){ daoju[3]--; daojulen--; printf("你使用了烟\n"); printf("你回复了一点生命\n"); Yourmoney+=500.0; Your++; }else{ printf("你现在不需要烟\n"); } Sleep(1145); }else{ printf("你现在没有烟\n"); Sleep(1145); system("cls"); } }else{ if(daoju[4]){ daoju[4]--; daojulen--; printf("你使用了饮料\n"); wait(); printf("\n"); printf("你退了一发"); if(q[qlen]==2){ printf("空弹"); kong--; }else{ printf("实弹"); Yourmoney+=500.0; shi--; } qlen--; Sleep(500); }else{ printf("你现在没有饮料\n"); Sleep(1145); system("cls"); } } Sleep(1000); system("cls"); } int Know;//通过放大镜得知下一发子弹 int shoukaoemo; void fightyou(){ printf("恶魔决定向你开枪"); T++; wait(); if(q[qlen]==2){ Yourmoney+=(double)(2000.0*(Hurt1.0)(1+(double)(kong)1.0/(double)(shi+kong))); kong--; qlen--; Hurt=1; Know=0; printf("是空弹\n"); if(shoukaoemo){ printf("因为恶魔使用了手铐,所以可以再来一次\n"); T--; Sleep(500); shoukaoemo=0; } }else{ Yourmoney+=(double)(5000.0(Hurt1.0)(1+(double)(kong)1.0/(double)(shi+kong))); shi--; qlen--; Your-=Hurt; Hurt=1; printf("是实弹\n"); Know=0; Sleep(500); IsOver(); if(shoukaoemo){ printf("因为恶魔使用了手铐,所以可以再来一次\n"); Yourmoney+=1000.0; T--; Sleep(500); shoukaoemo=0; } } } void fightemo(){ printf("恶魔决定向自己开枪"); wait(); if(q[qlen]==2){ Yourmoney+=2000.0(1+(double)(shi)1.0/(double)(shi+kong)); kong--; qlen--; printf("是空弹\n"); Know=0; }else{ Yourmoney+=5000.0(1+(double)(kong)*1.0/(double)(shi+kong)); shi--; T++; qlen--; Other-=Hurt; Hurt=1; printf("是实弹\n"); Know=0; Sleep(500); IsOver(); if(shoukaoemo){ printf("因为恶魔使用了手铐,所以可以再来一次\n"); T--; Sleep(500); shoukaoemo=0; } } } void Timeother(){ printf("你的生命:%d/6\n恶魔生命:%d/6\n",Your,Other); printf("剩余实弹数:%d 剩余空弹数:%d\n",shi,kong); printf("你现在拥有的道具:\n"); for(int i=0;i<=4;i++){ cout<<daojuname[i]; printf("%d",daoju[i]); printf("个"); if(i!=4){ printf(","); } } printf("\n"); printf("恶魔现在拥有的道具:\n"); for(int i=0;i<=4;i++){ cout<<daojuname[i]; printf("%d",daoju1[i]); printf("个"); if(i!=4){ printf(","); } } printf("\n"); printf("现在是恶魔的回合\n"); Sleep(1500);

                if(Other!=6){
                	if(daoju1[3]){
                		daoju1[3]--;
                		daojulen1--;
                		printf("恶魔使用了烟\n");
                		printf("恶魔回复了一点生命\n");
                		Other++;
                		Yourmoney+=500.0;
                		Sleep(1145);
                		system("cls");
                		return ;
                	}
                }
                if(Know==0&&kong==0){
                	Know=1;
                }
                if(Know==0){
                	if(abs(shi-kong)<2&&kong!=0){
                		if(daoju1[0]){
                			daoju1[0]--;
                			daojulen1--;
                			printf("恶魔使用了放大镜\n");
                			wait();
                			printf("\n恶魔看到了");
                			if(q[qlen]==1){
                				printf("实弹");
                				Yourmoney+=2500.0;
                				Know=1;
                			}else{
                				printf("空弹");
                				Know=2;
                			}
                			Sleep(1145);
                			system("cls");
                			return ;
                		}
                	}
                }else if(Know==1){
                	if(Hurt==1&&daoju1[2]){
                		daoju1[2]--;
                		daojulen1--;
                		Hurt++;
                		printf("恶魔使用了小刀\n");
                		printf("若下一发为实弹则伤害+1");
                		Yourmoney+=500.0;
                		Sleep(1145);
                		system("cls");
                		return ;
                	}else{
                		if(shi>=kong+1&&daoju1[1]&&shoukaoemo!=1){
                			daoju1[1]--;
                			daojulen1--;
                			shoukaoemo=1;
                			printf("恶魔使用了手铐\n");
                			printf("恶魔获得了连开两枪的机会\n");
                			Sleep(1145);
                			system("cls");
                			return ;
                		}
                		fightyou();
                		system("cls");
                		return ;
                	}
                }else{
                	if(daoju1[4]){
                		daoju1[4]--;
                		daojulen1--;
                		printf("恶魔使用了饮料\n");
                		wait();
                		printf("\n");
                		printf("恶魔退了一发"); 
                		if(q[qlen]==2){
                			printf("空弹");
                			kong--;
                		}else{
                			printf("实弹");
                			shi--;
                		}
                		Know=0;
                		qlen--;
                		Sleep(500);
                		Sleep(1145);
                		system("cls");
                		return ;
                	}else{
                		fightemo();
                		Sleep(1145);
                		system("cls");
                		return ;
                	}
                }
                if(shi>=kong){
                	fightyou();
                }else{
                	fightemo();
                }
                Sleep(1145);
                system("cls");
                

                } void Play(){ while(1){ if(shi0){ build_gun(); T=0; continue; } if(T%20){ Timeyou(); }else{ Timeother(); } } } void danrenplay(){ for(int i=1;i<=3;i++){ printf("."); // Sleep(1000); } printf("\n"); printf("又来了一位挑战者...\n"); Sleep(1000); int x; while(1){ printf("准备好参与恶魔的游戏吗?胜者带走奖金,败者将会在此长眠\n1.好的\n2.没问题\n"); scanf("%d",&x); if(x1||x2){ break; } printf("输入不合法\n"); Sleep(1145); system("cls"); } while(1){ printf("你清楚我们的规则吗?\n1.清楚\n2.不清楚\n"); scanf("%d",&x); if(x1||x2){ break; } printf("输入不合法\n"); Sleep(1145); system("cls"); } if(x==1){

                }else{
                	for(int i=1;i<=3;i++){
                		printf(".");
                		Sleep(1000);
                	}
                	printf("\n");
                	printf("规则:\n");
                	printf("你和恶魔都各有6点生命\n") ;
                	printf("每一回合开始前,你将知道一共有几发实弹,几发空弹,同时双方都将获得4个道具作为补给(上限为8个)\n"); 
                	printf("每一回合,你可以选择对自己开枪,对恶魔开枪或者使用道具\n");
                	printf("如果你对自己开枪,若为空弹,则可以继续行动,否则,停止行动\n");
                	printf("如果你对恶魔开枪,无论如何,都将停止行动\n");
                	printf("道具一览:\n"); 
                	printf("放大镜:可以知道下一发子弹是空弹还是实弹\n");
                	printf("手铐:增加一次本回合的行动次数\n");
                	printf("小刀:若下一发子弹为实弹,则伤害+1\n");
                	printf("烟:可以回复1点体力\n");
                	printf("饮料:可以退一发子弹\n");
                	system("pause");
                	system("cls");
                }
                
                printf("好吧\n");
                Sleep(1145);
                printf("游戏将要开始了哦\n");
                Sleep(1145);
                system("cls");
                Play();
                

                } void IsOver_duo(){ if(Your<=0){ printf("玩家B赢了\n玩家B获得了奖金$%.2lf\n",Yourmoney); system("pause"); exit(0); }else if(Other<=0){ printf("玩家A赢了\n玩家A获得了奖金$%.2lf\n",Yourmoney); system("pause"); exit(0); }

                } void build_gun_duo(){ kong=Rand(1,4); shi=Rand(1,4); qlen=0; printf("%d发实弹,%d发空弹\n",shi,kong); int a1=kong,a2=shi; for(int i=1;i<=kong+shi;i++){ // Sleep(50); int sum=Rand(1,a1+a2); if(sum<=a1){ a1--; q[++qlen]=2; }else{ a2--; q[++qlen]=1; } } int maxn=min(2,8-daojulen); printf("玩家A获得了%d个道具:\n",maxn); daojulen+=maxn; for(int i=1;i<=maxn;i++){ // Sleep(50); int kkk=Rand(0,4); daoju[kkk]++; cout<<daojuname[kkk]; if(i!=maxn){ printf(","); } } printf("\n"); maxn=min(2,8-daojulen1); printf("玩家B获得了%d个道具:\n",maxn); daojulen1+=maxn; for(int i=1;i<=maxn;i++){ int kkk=Rand(0,4); daoju1[kkk]++; cout<<daojuname[kkk]; if(i!=maxn){ printf(","); } } printf("\n"); system("pause"); system("cls"); } void Timeyou_duo(){ int x; while(1){ printf("玩家A的生命:%d/4\n玩家B的生命:%d/4\n",Your,Other); printf("剩余实弹数:%d 剩余空弹数:%d\n",shi,kong); printf("玩家A现在拥有的道具:\n"); for(int i=0;i<=4;i++){ cout<<daojuname[i]; printf("%d",daoju[i]); printf("个"); if(i!=4){ printf(","); } } printf("\n"); printf("玩家B现在拥有的道具:\n"); for(int i=0;i<=4;i++){ cout<<daojuname[i]; printf("%d",daoju1[i]); printf("个"); if(i!=4){ printf(","); } } printf("\n"); printf("现在是玩家A的回合\n"); printf("玩家A要\n1.向玩家B开枪\n2.向自己开枪\n"); for(int i=0;i<=4;i++){ printf("%d.使用",i+3); cout<<daojuname[i]<<'\n'; } scanf("%d",&x); if(1<=x&&x<=7){ break; } printf("输入不合法\n"); Sleep(1145); system("cls"); } if(x1){ printf("玩家A决定向玩家B开枪"); T++; wait(); if(q[qlen]2){ Yourmoney+=(double)(2000.0*(Hurt1.0)(1+(double)(shi)*1.0/(double)(shi+kong))); kong--; qlen--; Hurt=1; printf("是空弹\n"); if(shoukao_you1){ shoukao_you=0; printf("因为玩家A使用了手铐,所以可以再来一次\n"); Sleep(500); T--; } }else{ // printf("((%lf))\n",Yourmoney); Yourmoney+=(double)(5000.0*(Hurt1.0)(1+(double)(kong)*1.0/(double)(shi+kong))); // printf("{{%lf}}\n",Yourmoney); shi--; qlen--; Other-=Hurt; Hurt=1; printf("是实弹\n"); Sleep(500); IsOver_duo(); if(shoukao_you1){ shoukao_you=0; Yourmoney+=1000.0; printf("因为玩家A使用了手铐,所以可以再来一次\n"); Sleep(500); T--; } } }else if(x2){ printf("玩家A决定向自己开枪"); wait(); if(q[qlen]2){ Yourmoney+=(double)(2000.0*(Hurt1.0)(1+(double)(kong)1.0/(double)(shi+kong))); kong--; qlen--; Hurt=1; printf("是空弹\n"); }else{ Yourmoney+=5000.0(1+(double)(shi)*1.0/(double)(shi+kong)); T++; shi--; qlen--; Your-=Hurt; Hurt=1; printf("是实弹\n"); Sleep(500); IsOver_duo(); if(shoukao_you1){ shoukao_you=0; printf("因为玩家A使用了手铐,所以可以再来一次\n"); Sleep(500); T--; } } }else if(x3){//{"放大镜","手铐","小刀","烟","饮料"}; if(daoju[0]){ daoju[0]--; daojulen--; printf("玩家A使用了放大镜\n"); wait(); printf("\n玩家A看到了"); if(q[qlen]1){ printf("实弹\n"); Yourmoney+=2500.0; }else{ printf("空弹\n"); } Sleep(500); printf("\n"); }else{ printf("玩家A现在没有放大镜\n"); Sleep(1145); system("cls"); } }else if(x4){ if(daoju[1]){ if(!shoukao_you){ daoju[1]--; daojulen--; printf("玩家A使用了手铐\n"); printf("玩家A获得了连开两枪的机会\n"); shoukao_you=1; }else{ printf("玩家A已经用过手铐了\n"); } Sleep(1145); system("cls"); }else{ printf("玩家A现在没有手铐\n"); Sleep(1145); system("cls"); } }else if(x5){ if(daoju[2]){ if(Hurt1){ daoju[2]--; daojulen--; printf("玩家A使用了小刀\n"); printf("若下一发为实弹则伤害+1\n"); Yourmoney+=500.0; Hurt=2; }else{ printf("玩家A已经用过小刀了\n"); } Sleep(1145); system("cls"); }else{ printf("玩家A现在没有小刀\n"); Sleep(1145); system("cls"); } }else if(x6){ if(daoju[3]){ if(Your^4){ daoju[3]--; daojulen--; printf("玩家A使用了烟\n"); printf("玩家A回复了一点生命\n"); Yourmoney+=500.0; Your++; }else{ printf("玩家A现在不需要烟\n"); } Sleep(1145); }else{ printf("玩家A现在没有烟\n"); Sleep(1145); system("cls"); } }else{ if(daoju[4]){ daoju[4]--; daojulen--; printf("玩家A使用了饮料\n"); wait(); printf("\n"); printf("玩家A退了一发"); if(q[qlen]2){ printf("空弹"); kong--; }else{ printf("实弹"); Yourmoney+=500.0; shi--; } qlen--; Sleep(500); }else{ printf("玩家A现在没有饮料\n"); Sleep(1145); system("cls"); } } Sleep(1000); system("cls"); } void Timeother_duo(){ int x; while(1){ printf("玩家A的生命:%d/4\n玩家B的生命:%d/4\n",Your,Other); printf("剩余实弹数:%d 剩余空弹数:%d\n",shi,kong); printf("玩家A现在拥有的道具:\n"); for(int i=0;i<=4;i++){ cout<<daojuname[i]; printf("%d",daoju[i]); printf("个"); if(i!=4){ printf(","); } } printf("\n"); printf("玩家B现在拥有的道具:\n"); for(int i=0;i<=4;i++){ cout<<daojuname[i]; printf("%d",daoju1[i]); printf("个"); if(i!=4){ printf(","); } } printf("\n"); printf("现在是玩家B的回合\n"); printf("玩家B要\n1.向玩家A开枪\n2.向自己开枪\n"); for(int i=0;i<=4;i++){ printf("%d.使用",i+3); cout<<daojuname[i]<<'\n'; } scanf("%d",&x); if(1<=x&&x<=7){ break; } printf("输入不合法\n"); Sleep(1145); system("cls"); } if(x1){ printf("玩家B决定向玩家A开枪"); T++; wait(); if(q[qlen]2){ Yourmoney+=(double)(2000.0*(Hurt1.0)(1+(double)(shi)*1.0/(double)(shi+kong))); kong--; qlen--; Hurt=1; printf("是空弹\n"); if(shoukaoemo1){ shoukaoemo=0; printf("因为玩家B使用了手铐,所以可以再来一次\n"); Sleep(500); T--; } }else{ // printf("((%lf))\n",Yourmoney); Yourmoney+=(double)(5000.0*(Hurt1.0)(1+(double)(kong)*1.0/(double)(shi+kong))); // printf("{{%lf}}\n",Yourmoney); shi--; qlen--; Your-=Hurt; Hurt=1; printf("是实弹\n"); Sleep(500); IsOver_duo(); if(shoukaoemo1){ shoukaoemo=0; Yourmoney+=1000.0; printf("因为玩家B使用了手铐,所以可以再来一次\n"); Sleep(500); T--; } } }else if(x2){ printf("玩家B决定向自己开枪"); wait(); if(q[qlen]2){ Yourmoney+=(double)(2000.0*(Hurt1.0)(1+(double)(kong)1.0/(double)(shi+kong))); kong--; qlen--; Hurt=1; printf("是空弹\n"); }else{ Yourmoney+=5000.0(1+(double)(shi)*1.0/(double)(shi+kong)); T++; shi--; qlen--; Other-=Hurt; Hurt=1; printf("是实弹\n"); Sleep(500); IsOver_duo(); if(shoukao_you1){ shoukao_you=0; printf("因为玩家B使用了手铐,所以可以再来一次\n"); Sleep(500); T--; } } }else if(x3){//{"放大镜","手铐","小刀","烟","饮料"}; if(daoju1[0]){ daoju1[0]--; daojulen1--; printf("玩家B使用了放大镜\n"); wait(); printf("\n玩家B看到了"); if(q[qlen]1){ printf("实弹\n"); Yourmoney+=2500.0; }else{ printf("空弹\n"); } Sleep(500); printf("\n"); }else{ printf("玩家B现在没有放大镜\n"); Sleep(1145); system("cls"); } }else if(x4){ if(daoju1[1]){ if(!shoukaoemo){ daoju1[1]--; daojulen1--; printf("玩家B使用了手铐\n"); printf("玩家B获得了连开两枪的机会\n"); shoukaoemo=1; }else{ printf("玩家B已经用过手铐了\n"); } Sleep(1145); system("cls"); }else{ printf("玩家B现在没有手铐\n"); Sleep(1145); system("cls"); } }else if(x5){ if(daoju1[2]){ if(Hurt1){ daoju1[2]--; daojulen1--; printf("玩家B使用了小刀\n"); printf("若下一发为实弹则伤害+1\n"); Yourmoney+=500.0; Hurt=2; }else{ printf("玩家B已经用过小刀了\n"); } Sleep(1145); system("cls"); }else{ printf("玩家B现在没有小刀\n"); Sleep(1145); system("cls"); } }else if(x6){ if(daoju1[3]){ if(Other^4){ daoju1[3]--; daojulen1--; printf("玩家B使用了烟\n"); printf("玩家B回复了一点生命\n"); Yourmoney+=500.0; Other++; }else{ printf("玩家B现在不需要烟\n"); } Sleep(1145); }else{ printf("玩家B现在没有烟\n"); Sleep(1145); system("cls"); } }else{ if(daoju1[4]){ daoju1[4]--; daojulen1--; printf("玩家B使用了饮料\n"); wait(); printf("\n"); printf("玩家B退了一发"); if(q[qlen]2){ printf("空弹"); kong--; }else{ printf("实弹"); Yourmoney+=500.0; shi--; } qlen--; Sleep(500); }else{ printf("玩家B现在没有饮料\n"); Sleep(1145); system("cls"); } } Sleep(1000); system("cls"); } int asdasd; void duorenplay(){ while(1){ if(shi0){ build_gun_duo(); T=asdasd; asdasd++; continue; } if(T%20){ Timeyou_duo(); }else{ Timeother_duo(); } } } int main(){ srand(time(0)); int x; while(1){ printf("请选择你想要的模式:\n1.单人\n2.双人(此模式中,生命值为4,道具补给为2)\n"); scanf("%d",&x); if(x1||x2){ break; } printf("输入不合法\n"); Sleep(1145); system("cls"); } system("cls"); if(x==1){ danrenplay(); }else{ Your=Other=4; duorenplay(); } return 0; }`

              • @ 2024-12-1 11:22:34

                @

                为什么我A0590的程序在DEV上能过,在OJ上RE?

                #include <bits/stdc++.h>
                #define ull unsigned long long
                using namespace std;
                ull seed,a[10000005];
                int n,m,sum=0;
                ull rnd(){
                    seed=seed*seed+seed+30ull;
                    return seed;
                }
                int main(){
                    freopen("random.in","r",stdin);
                    freopen("random.out","w",stdout);
                    cin>>seed>>n>>m;
                    for(int i=1;i<=m;i++) cin>>a[i];
                    for(int i=1;i<=n;i++){
                        ull b=rnd();
                        for(int j=1;j<=m;j++) if(b==a[j]) sum++;
                    }
                    cout<<sum;
                    return 0;
                }
                

                传送门(TO A0590)

                • @ 2024-12-1 11:08:27

                  @

                  ???

                  • @ 2024-11-30 21:31:48

                    我的离散化哪里错了能不能帮我看看

                    没有题号,就是一个离散化模版

                    #include<bits/stdc++.h>
                    using namespace std;
                    struct node
                    {
                    	int x;//原数 
                    	int id;//在原数组里的编号 
                    	int t;//离散化之后的数字 
                    }a[100005];
                    bool cmp(node x,node y)
                    {
                    	return x.x<y.x;
                    }
                    int n;
                    int main()
                    {
                    	ios::sync_with_stdio(0);
                    	cin.tie(0);
                    	cin>>n;
                    	for(int i=1;i<=n;i++)
                    	{
                    		cin>>a[i].x;
                    		a[i].id=i;
                    	}
                    	sort(a+1,a+1+n,cmp);
                    	int tot=0;
                    	for(int i=1;i<=n;i++)
                    	{
                    		int x=a[i].x;
                    		while(a[i].x==x)
                    		{
                    			a[i].t=tot;
                    			i++;
                    		}
                    		tot++;
                    	}
                    	for(int i=1;i<=n;i++)
                    	{
                    		cout<<a[i].t<<' ';
                    	}
                    	return 0;
                    }
                    
                    • @ 2024-11-30 20:25:39

                      我大概应该可能差不多没有参加NOIP

                    • @ 2024-11-30 20:23:11

                      可恶

                      • @ 2024-11-30 19:35:59

                        https://oj.since2018.top/p/TEST1001 谁做不过谁sb废了,快去重开吧

                        • @ 2024-11-30 15:10:58

                          关机代码怎么写?

                        • @ 2024-11-29 20:49:15

                          七圣召唤投骰子的代码,可以提建议

                          #include<bits/stdc++.h>
                          using namespace std;
                          int aa[8],bb[8]; 
                          int qiu(int n){
                              return rand()%n+1;
                          }
                          int main(){
                          	srand(time(0));
                          	cout<<"七圣召唤"<<endl;
                          	cout<<"请输入各自的名字例:A B"<<endl;
                          	string a,b;
                          	cin>>a>>b;
                          	cout<<"是否了解规则?"<<endl;
                          	cout<<"A   YES"<<endl;
                          	cout<<"B   NO"<<endl;
                          	char z;
                          	cin>>z;
                          	if(z=='B'){
                          		cout<<"1风 2岩 3雷 4草 5水 6火 7冰"<<endl;
                          		cout<<"关于使用:1删除(输入其位置) 2指定其值(输入其位置,输入指定值)"<<endl; 
                          	}
                          	int c=1;
                          	while(true){
                          		cout<<"回合"<<c<<endl;
                          		cout<<"开始摇骰子"<<endl;
                          		cout<<a<<"的骰子如下"<<endl;
                          		for(int i=1;i<=7;i++){
                          			aa[i]=qiu(7);
                          			cout<<aa[i]<<" ";
                          		}
                          		cout<<endl;
                          		cout<<"是否重摇指定?输入1,不修改则输入为0"<<endl;
                          		int s;
                          		for(int i=1;i<=7;i++){
                          			cin>>s;
                          			if(s==1){
                          				aa[i]=qiu(7);
                          			}
                          		}
                          		cout<<a<<"的骰子如下"<<endl;
                          		for(int i=1;i<=7;i++){
                          			if(aa[i]==0){
                          				continue;
                          			}
                          			cout<<aa[i]<<" ";
                          		}
                          		cout<<endl;
                          		cout<<b<<"的骰子如下"<<endl;
                          		for(int i=1;i<=7;i++){
                          			bb[i]=qiu(7);
                          			cout<<bb[i]<<" ";
                          		}
                          		cout<<endl;
                          		cout<<"是否重摇指定?输入1,不修改则输入为0"<<endl;
                          		for(int i=1;i<=7;i++){
                          			cin>>s;
                          			if(s==1){
                          				bb[i]=qiu(7);
                          			}
                          		}
                          		cout<<b<<"的骰子如下"<<endl;
                          		for(int i=1;i<=7;i++){
                          			if(bb[i]==0){
                          				continue;
                          			}
                          			cout<<bb[i]<<" ";
                          		}
                          		cout<<endl;
                          		while(true){
                          			cout<<a<<"的操作如下"<<endl;
                          			cin>>s;
                          			if(s==1){
                          				int w;
                          				cin>>w;
                          				aa[w]=0;
                          			}
                          			else{
                          				int w,z;
                          				cin>>w>>z;
                          				aa[w]=z;
                          			}
                          			cout<<a<<"的骰子"<<endl;
                          			for(int i=1;i<=7;i++){
                          				if(aa[i]==0){
                          					continue;
                          				}
                          				cout<<aa[i]<<" ";
                          			}
                          			cout<<endl;
                          			cout<<b<<"的操作如下"<<endl;
                          			cin>>s;
                          			if(s==1){
                          				int w;
                          				cin>>w;
                          				bb[w]=0;
                          			}
                          			else{
                          				int w,z;
                          				cin>>w>>z;
                          				bb[w]=z;
                          			}
                          			cout<<b<<"的骰子"<<endl;
                          			for(int i=1;i<=7;i++){
                          				if(bb[i]==0){
                          					continue;
                          				}
                          				cout<<bb[i]<<" ";
                          			}
                          			cout<<endl;	
                          			cout<<"是否继续操作?1/0"<<endl;
                          			cin>>s;
                          			if(s==0){
                          				break;
                          			}
                          		}
                          		cout<<"退出游戏输入0,否则输入1"<<endl;
                          		cin>>s;
                          		if(s==0){
                          			cout<<"游戏结束"<<endl;
                          			return 0;
                          		}
                          		c++;
                          	}
                          	return 0;
                          } 
                          
                        • @ 2024-11-28 21:10:24

                          @ 啥时候发硬币?

                          • @ 2024-11-25 20:00:07

                            刚学set,不知道怎么回事?

                            • @ 2024-11-25 21:15:38

                              我现在也不清楚,但是有更靠谱的方法

                            • @ 2024-11-25 21:17:49

                              刚对了一遍代码,发现你那个set定义在main函数里就对了,不知为何

                            • @ 2024-11-25 21:18:52

                              样例(无CE)

                              #include<bits/stdc++.h>
                              using namespace std;
                              int main(){
                                  int n; cin>>n;
                                  set<int> se;
                                  for(int i=0;i<n;i++){
                                      int x; cin>>x;
                                      se.insert(x);
                                  }
                                  for(auto it=se.begin();it!=se.end();it++){
                                      cout<<*it;
                                  }
                                  return 0;
                              }
                            • @ 2024-11-26 21:45:53

                              @ ???

                            • @ 2024-11-26 21:51:58

                              @ DEV有点问题,题AC了

                            • @ 2024-11-27 20:33:24

                              @ dev用不了auto,要用的话就这样配置

                              1. 在上边点工具
                              2. 点编译选项
                              3. 在编译器的编译时加入以下命令下面的白框输入以下指令
                              4. 点确定

                              原因: dev没有

                          • @ 2024-11-24 19:20:23

                            看这里红宝石是真的吗?那我们岂不是赚大了?(严重怀疑红宝石真实性)

                          • @ 2024-11-24 18:57:06

                            zs的例题讲解

                            https://oj.since2018.top/p/A0555) 题目在上面 首先可以建立一个字符串这里我用char,存一下n。

                                char a;
                                for(int i=1;i<=8;i++){
                                    cin>>a;
                                }
                            

                            下来一个一个扫一遍,如下。(合并上面代码)

                                char a;
                                int c=0;//计数器
                                for(int i=1;i<=题目规定范围;i++){
                                    cin>>a;
                                    if(a=='?'){//自己写
                                        c++;//一个一个扫
                                    }
                                }
                            

                            如上,遇到3,c++。 重点注意要加freopen,我就在这里错了

                                freopen("number.in","r",stdin);
                                freopen("number.out","w",stdout);
                            

                            下来合起来就AC了!完结撒花

                          • @ 2024-11-24 13:59:16

                            MC0005 数据削弱版

                            题目背景

                            MC++在上数学真题班的时候因为讨厌牛吃草问题所以想出来的

                            题目描述

                            一天,MC++在坐车去找无个名个氏玩的时候,走到了一条牛吃人公路,公路全长kk米。

                            这里有dd头发狂的牛,据说是从Farmer John 那里逃出来的(可能是因为FJ老是有问题,住不下去了),第ii头牛埋伏在bib_i点,当车经过bi+1sb_i+1*s点时,牛就会冲出来追击车辆,第ii头牛会以cic_i的速度追击车辆。

                            MC++知道以自己的车技绝对过不去,于是请了mm名司机,第ii名司机在被牛追击时,速度会增加aia_i

                            MC++从这里的交警得知,这里的牛在发现自己的距离离车大于nn米时就会放弃追击。

                            已知车的初始速度为1m/1m/秒,且保证不会有两头牛同时追击车辆。

                            也就是说,当车在经过bjb_j点时(j>ij>i),若第ii头牛正在追击,则第bjb_j点的牛会因为不想打架而放弃追逐 (吸吸务者为俊杰(识时务者为俊杰))

                            现在MC++想知道,m个司机能否通过牛吃人公路呢?

                            (只要被抓住,就必死无疑,MC++可不想死在这里)

                            注意!车辆的起始点为0

                            输入格式

                            输入共4行

                            第一行输入5个整数kk,nn,mm,ss,dd,含义见上;

                            第二行输入mm个正整数,第ii个整数表示aia_i;

                            第三行输入dd个正整数,第ii个整数表示bib_i;

                            第四行输入dd个正整数,第ii个整数表示cic_i;

                            提示

                            ai+sa_i+s可能等于cjc_j;

                            通过条件:车在kk点且没有任何一头牛追上来

                            如果当前点+当前车速>k,认为通过

                            输出格式

                            一共输出m+1m+1

                            ii(11~mm)行:如果第ii个司机能成功通过牛吃人公路,输出YesYes,否则输出NoNo

                            m+1m+1行:输出两个数,第一个数sumsum表示有多少名司机能通过公路,第二个数表示这mm名司机的通过率,保留整数且向下取整,后面需加上%。

                            样例

                            10 2 1 1 0
                            0
                            
                            Yes
                            1 100%
                            

                            样例解释1

                            MC++遇到了假的牛吃人公路。

                            10 5 2 2 2
                            2 0
                            1 4
                            2 2
                            
                            Yes
                            No
                            1 50%
                            

                            样例解释2

                            对于第一名司机,他是可以通过公路的

                            对于第二个司机,他会在5点被抓

                            共有1名司机可通过,通过率50%

                            数据限制

                            对于100%的数据,1n,m,s<1050d<10510k,bi<1030ai,ci<501≤n,m,s<10^5,0≤d<10^5,10≤k,b_i<10^3,0≤a_i,c_i<50

                            保证bi+s<bj(i<j)b_i+s<b_j(i<j)

                            细分化:

                            对于40%的数据,ai=0a_i=0,测试点4满足特殊数据A;

                            对于另外20%的数据,ai=1a_i=1,测试点6满足特殊数据A;

                            对于另外20%的数据,牛会放弃追逐,测试点7满足特殊数据A;

                            剩下的20%的数据,没有特殊样例;

                            也就是说,这道题有30~80分可以骗。

                            特殊数据A:d=0d=0

                          • @ 2024-11-23 21:34:28

                            33DAI的接龙疑似可以用并查集写。

                            就是把所有词库扫一遍用d/bfs扫到可以接到的词,把他们合并到同一集合。

                            最后就是判断 ssee 是否在同一个集合内

                            所以如果把并查集优化buff叠满的话时间复杂度最坏可以近似看成 O(n2)\text{O}(n^2)

                            好像更慢了

                            • @ 2024-11-23 21:41:27

                              有一个优化策略就是用一个 ff 数组表示这个单词还有没有必要再搜

                              第一次先搜 f1f_1,中途扫到的编号如果是 t1tmt_1 \sim t_m 那么就是把 ft1ftmf_{t_1} \sim f_{t_m} 全部赋值成 11 ,下次搜索时直接看 fi=1f_i =1 的就好了

                              但这个优化优化的不多,比如这个hack

                              input:

                              5 1 10
                              1 2
                              3 4
                              5 6
                              7 8
                              9 10
                              

                              output {

                              No
                              
                              
                            • @ 2024-11-23 21:45:10

                              但你会发现优化了个毛

                              10 1 10
                              1 2
                              2 3
                              4 5
                              5 6
                              6 7
                              7 8
                              8 9
                              9 10
                              

                              表面上搜了一次 O(n)\text{O}(n) 就过了但是在找 fi=1(i1)f_i=1(i \ge 1)时还是用了 nn,所以还是 n2n^2

                            • @ 2024-11-23 21:49:16

                              打错了 fi=1f_i =1 不用再搜,fi=0f_i =0还没搜

                            • @ 2024-11-24 13:02:54

                              @

                              你还拿上一等了
                          • @ 2024-11-23 11:49:54

                            现在看什么都像kruskal

                            • @ 2024-11-23 10:20:27

                              @

                              当我在OIERDB找到我的时候: 吴雨航 高中毕业三年 100/400 二等奖 西安市未央区西航四校

                              西西牢湿给我出来!

                            • @ 2024-11-22 17:15:13

                              我猜一下,今天的四道题目名字是:

                              33DAI的决斗

                              33DAI的超速检测

                              33DAI的染色

                              33DAI的擂台游戏

                              qwq

                            • @ 2024-11-21 22:45:45

                              今天还是炸波简单题(有1点难)

                              (MC++老课堂-3)

                              今天讲R26T2 A0543 停车费计算

                              真的简单那

                              用判断解决好吧

                              粘贴题目!

                              题目描述

                              33DAI想要计算一下停车费。旺座曲江停车场的收费标准为:

                              如果停车时长在xx分钟内,不收费。

                              停车时长大于xx分钟时:

                              yy分钟共收费aa元(不满yy分钟的部分按照yy分钟收费)

                              从第y+1y+1分钟起,每yy分钟收费bb元(不满yy 分钟部分的按照yy分钟计算)

                              现在已知33DAInn次停车每次的停车时间,第ii次停了tit_i分钟。请你算出33DAI一共花了多少停车费。

                              我们可以通过样例来解决问题,粘贴样例!

                              5 
                              30 
                              60 2 3
                              30 31 60 61 660
                              
                              41
                              

                              通过观察,我们发现,这道题与星星历那道题有点像

                              那就通过星星历的方法解决问题

                              是错的呦

                              代码框架(自己吃去吧,我懒得讲了)

                              #include  <bits/stdc++.h>
                              using namespace std;
                              int n,x,y,a,b,t[10005];
                              long long sum=0;
                              int main(){
                                  freopen("park.in","r",stdin);
                                  freopen("park.out","w",stdout);
                                  cin>>n>>x>>y>>a>>b;
                                  for(int i=1;i<=n;i++){
                                      cin>>t[i];
                                  }
                                  for(int i=1;i<=n;i++){
                                      if(t[i]<=) continue;
                                      if(t[i]> && t[i]<=) sum+=;
                                      if(t[i]>){
                                          sum+=;
                                          t[i]-=;
                                          while(t[i]>=){
                                              sum+=;
                                              t[i]-=;
                                          }
                                          if(t[i]< && t[i]>0){
                                              sum+=;
                                          }
                                      }
                                  }
                                  cout<<sum;
                                  return 0;
                              }
                              

                              你问我为什么要加freopen,请看VCR

                              文件IO没看见吗???

                              下课!

                              • @ 2024-11-21 22:25:26

                                西西牢湿给我出来!

                                • @ 2024-11-21 22:24:46

                                  当我在OIERDB找到我的时候: 吴雨航 高中毕业三年 100/400 二等奖 西安市未央区西航四校

                                • @ 2024-11-19 22:53:55

                                  P1536. 村村通求改

                                  using namespace std;
                                  int n,m,father[1005],ans,x,y;
                                  
                                  int find(int x){
                                  	if(father[x]=x)return x;
                                  	else return father[x]=find(father[x]);
                                  }
                                  int main(){
                                  	ios::sync_with_stdio(false);
                                  	cin.tie(0);
                                  	while(true){
                                  		cin>>n;
                                  		if(n==0)return 0;
                                  		cin>>m;
                                  		for(int i=1;i<=n;i++) father[i]=i;
                                  		for(int i=1;i<=m;i++){ 
                                  			cin>>x>>y;
                                  			father[find(x)]=find(y);
                                  		}
                                  		ans=-1;
                                  		for(int i=1;i<=n;i++)
                                  			if(father[i]==i)
                                  				ans++;
                                  		cout<<ans<<'\n';
                                  	}
                                  	return 0;
                                  }
                                  
                                  
                                • @ 2024-11-19 21:42:22

                                  @ 什么时候把r32的题解挂到33wiki上

                                  • @ 2024-11-25 17:05:17

                                    不更新33wik了,更新的是33文档不更新33wik了,更新的是33文档

                                • @ 2024-11-18 19:36:34

                                  @能不能把我要发的硬币攒着后面一块发?我想保住我的1111/11111

                                • @ 2024-11-18 12:48:53

                                  要解决“x的平方加y是多少?”这个问题,我们需要明确以下几点:

                                  1. 确定变量 ( x ) 和 ( y ) 的值。
                                  2. 计算 ( x ) 的平方。
                                  3. 将 ( x ) 的平方与 ( y ) 相加。

                                  假设我们已经知道 ( x ) 和 ( y ) 的具体值。为了演示解析过程,我们可以假设一些具体的数值。例如,设 ( x = 3 ) 和 ( y = 4 )。

                                  下面是详细的解析过程:

                                  第一步:计算 ( x ) 的平方

                                  [ x = 3 ] [ x^2 = 3^2 = 9 ]

                                  第二步:将 ( x ) 的平方与 ( y ) 相加

                                  [ y = 4 ] [ x^2 + y = 9 + 4 = 13 ]

                                  因此,当 ( x = 3 ) 和 ( y = 4 ) 时,( x ) 的平方加 ( y ) 等于 13。

                                  总结

                                  如果已知 ( x ) 和 ( y ) 的具体值,可以按照上述步骤进行计算。具体步骤如下:

                                  1. 计算 ( x ) 的平方,即 ( x^2 )。
                                  2. 将 ( x^2 ) 与 ( y ) 相加,得到结果。

                                  对于任意给定的 ( x ) 和 ( y ),公式为: [ x^2 + y ]

                                  这个公式适用于任何实数 ( x ) 和 ( y )。

                                  • @ 2024-11-18 12:47:36

                                    To solve the system of equations:

                                    1. ( x + 10 = y )
                                    2. ( y - 10 = x )

                                    We can start by substituting the expression for ( y ) from the first equation into the second equation.

                                    From the first equation, we have: [ y = x + 10 ]

                                    Now substitute ( y ) in the second equation: [ (x + 10) - 10 = x ]

                                    Simplify the left side: [ x + 10 - 10 = x ] [ x = x ]

                                    This simplification shows that the original equations are dependent and essentially the same. This means that any value of ( x ) will satisfy the equation as long as ( y ) is ( x + 10 ).

                                    Therefore, the solution to the system of equations is: [ x = x ] [ y = x + 10 ]

                                    In other words, ( x ) can be any real number, and ( y ) will always be 10 more than ( x ).

                                    • @ 2024-11-18 12:00:32

                                      33DAI 的接龙你们那啥做的,我用的BFS,我看好多人用DFS

                                      #include<bits/stdc++.h>
                                      using namespace std;
                                      int n,s,e;
                                      struct node
                                      {
                                      	int a,b;
                                      }g[20];
                                      queue<int> q;
                                      int vis[20];
                                      int main()
                                      {
                                      	ios::sync_with_stdio(0);
                                      	cin.tie(0);
                                      	cin>>n>>s>>e;
                                      	for(int i=1;i<=n;i++)
                                      	{
                                      		cin>>g[i].a>>g[i].b;
                                      	}
                                      	q.push(s);
                                      	while(!q.empty())
                                      	{
                                      		int x=q.front();
                                      		q.pop();
                                      		if(x==e)
                                      		{
                                      			cout<<"Yes";
                                      			return 0;
                                      		}
                                      		for(int i=1;i<=n;i++)
                                      		{
                                      			if(vis[i]==1 || g[i].a!=x)
                                      			{
                                      				continue;
                                      			}
                                      			vis[i]=1;
                                      			q.push(g[i].b);
                                      		}
                                      	}
                                      	cout<<"No";
                                      	return 0;
                                      }
                                      

                                      似乎33DAI没有用搜索

                                      • @ 2024-11-18 12:01:49

                                        这么说 [CSP-J 2024] 接龙是不是也可以搜索

                                      • @ 2024-11-18 13:06:32

                                        @ 确实如此

                                        #include<bits/stdc++.h>
                                        using namespace std;
                                        int main(){
                                        	int n,s,e,d;
                                        	int z=0,zz=0,k=0;
                                        	cin>>n>>s>>e;
                                        	d=s;
                                        	int a[11],b[11];
                                        	for(int i=1;i<=n;i++){
                                        		cin>>a[i]>>b[i];
                                        		if(a[i]==s){
                                        			z=1;
                                        		}
                                        		if(b[i]==e){
                                        			zz=1;
                                        		}
                                        	}
                                        	if(s==e){
                                        		cout<<"Yes";
                                        		return 0;
                                        	}
                                        	if(z==0 || zz==0){
                                        		cout<<"No";
                                        	}
                                        	else{
                                        		for(int c=1;c<=n;c++){
                                        			for(int j=1;j<=n;j++){
                                        				if(d==a[j]){
                                        					d=b[j];
                                        				}
                                        				if(d==e){
                                        					cout<<"Yes";
                                        					return 0;
                                        				}
                                        			}
                                        		}
                                        		cout<<"No";
                                        	}
                                        	return 0;
                                        }
                                        //zswdlqy
                                        
                                    • @ 2024-11-17 14:36:59
                                      ojbug

                                      语文成绩

                                      • @ 2024-11-17 10:17:16

                                        • @ 2024-11-16 20:55:22

                                          小黑板呢

                                          • @ 2024-11-16 19:57:39