(原创题) 比大小 (贪心+模拟+分类)
来源:互联网 发布:文都看视频的软件 编辑:程序博客网 时间:2024/06/05 22:48
Problem Description
小明和小花在玩一个比大小的游戏,现在有四个互不相同但位数相同的数字,小花先取两个,剩下的留给小明。小明和小花可以分别从中再选出一个数字,进行一些操作。小明可以把数字‘6’变成数字‘9’,小花可以把数字‘2’变成数字‘5’。但是由于小花先取,所以最多只能进行k-1次操作,而小明最多可以进行k次操作。问最后两个人操作之后的数哪个更大?假设小明和小花都足够聪明。
Input
第一行输入一个整数T,表示数据组数(1< T<10000);
第二行输入四个整数a,b,c,d(0<=a、b、c、d<=10^9);
第三行输入一个整数k,表示最多可以进行的操作次数(0<=k<=10);
Output
对于每组数据,如果小花赢了,输出“Win”,如果两个数相同,输出“Equal”,如果小花输了,输出“Lose”。
Sample Input
2
123 126 135 136
1
16 63 76 65
1
Sample Output
Win
Lose
最得意之作,没有之一。为此我在验的时候还探索出了如何比较同根数的理论。整个实现花了我将近两个礼拜的时间。
#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>using namespace std;struct node{ long long x,num;}s1[5],s2[5];long long cmp(node a,node b){ return a.x>b.x;}long long change(char s[],long long k,int a,int b){ long long ans=0,i=0; for(i=0;s[i]!='\0';i++) { if(k==0) break; if(s[i]==a+'0') { ans=ans*10+b; k--; } else ans=ans*10+s[i]-'0'; } for(;s[i]!='\0';i++) ans=ans*10+s[i]-'0'; return ans;}int main(){ long long t,k; char a[5][10]; cin>>t; while(t--) { for(int i=0;i<4;i++) //输入 { cin>>a[i]; s1[i].num=s2[i].num=i; } cin>>k; for(int i=0;i<4;i++) s1[i].x=change(a[i],k-1,2,5); for(int i=0;i<4;i++) s2[i].x=change(a[i],k,6,9); sort(s1,s1+4,cmp); sort(s2,s2+4,cmp); int blag; if(s1[0].x<s2[2].x) //必输 blag=-1; else if(s1[0].x==s2[2].x) { if(s2[1].x==s2[2].x) blag=0; else if(s2[1].x>s2[2].x) { if(s1[0].num==s2[0].num||s1[0].num==s2[1].num) blag=0; else blag=-1; } } else if(s1[0].x>s2[2].x) { if(s1[0].x<s2[1].x) { if(s1[1].x>s2[2].x) { if(s1[0].num==s2[0].num||s1[0].num==s2[1].num) { if(s1[1].num==s2[0].num||s1[1].num==s2[1].num) blag=1; else blag=-1; } else blag=-1; } else if(s1[1].x==s2[2].x) { if(s1[0].num==s2[0].num||s1[0].num==s2[1].num) blag=1; else { if(s1[1].num==s2[0].num||s1[1].num==s2[1].num) blag=0; else blag=-1; } } else if(s1[1].x<s2[2].x) { if(s1[0].num==s2[0].num||s1[0].num==s2[1].num) blag=1; else blag=-1; } } else if(s1[0].x==s2[1].x) { if(s1[0].num==s2[0].num||s1[0].num==s2[1].num) blag=1; else blag=0; } else if(s1[0].x>s2[1].x) blag=1; } if(blag==-1) cout<<"Lose"<<endl; else if(blag==0) cout<<"Equal"<<endl; else if(blag==1) cout<<"Win"<<endl; } return 0;}
阅读全文
0 0
- (原创题) 比大小 (贪心+模拟+分类)
- poj 1323 贪心(比大小游戏)
- NYOJ73(比大小)
- 日期(加、比大小)
- c++原创题目2 比大小
- 【NOIP 模拟题】[T1]连锁店(贪心)
- HTTP服务器模拟(原创)
- 选机房(贪心模拟)
- Delete HDU5210 (模拟贪心)
- UVA 11039(模拟,贪心)
- LA 3602 (贪心,模拟)
- Crossing River(贪心+模拟)
- 国王游戏(贪心+模拟)
- 两个数比大小(通过按键)
- 南阳73 比大小(大数)
- CodeForces673BProblems for Round(比大小)
- 字符串比对大小(版本号比较)
- NYOJ 73. 比大小(大整数比较大小)
- qt资料
- http协议
- 网易2018笔试题四
- 优秀Java程序员必须了解的GC工作原理
- Glide的整体理解相关的图解
- (原创题) 比大小 (贪心+模拟+分类)
- eclipse连接数据库出现 Access denied for user ''@'localhost' (using password: YES) 2
- 基于JQuery的轮播图插件nivo-slider使用教程
- 轻松上手SpringMVC
- 你真的能求出这个三角形的面积吗?
- OpenStack社区贡献入门
- 机器学习之路(转)
- [教程]Ubuntu 下为单版本和多版本 PHP 安装扩展
- UE4中的 Pawn、Character、Controller、Player Controller是什么?