2012 East Central Regional Contest Gym100642E

2023-10-29 07:50

本文主要是介绍2012 East Central Regional Contest Gym100642E,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

爆搜

  1 #include<bits/stdc++.h>
  2 #define maxn 20
  3 #define LL long long 
  4 #define INF 0x7fffffff
  5 using namespace std;
  6 int seg[maxn],n,r1,r2;
  7 char op[maxn],o[maxn];
  8 LL cal(LL x,LL y,char opt){
  9     if(opt=='*') return x*y;
 10     else if(opt=='+') return x+y;
 11     else if(opt=='-') return x-y;
 12 }
 13 LL dfs1(LL *a,int len1,char *s,int len2,int p){
 14     LL xx;
 15     if(len1==3){
 16         if(p==1){
 17             xx=max(cal(cal(a[1],a[2],s[1]),a[3],s[2]),cal(a[1],cal(a[2],a[3],s[2]),s[1]));
 18             return xx;
 19         }
 20         else{
 21             xx=min(cal(cal(a[1],a[2],s[1]),a[3],s[2]),cal(a[1],cal(a[2],a[3],s[2]),s[1]));
 22             return xx;
 23         }
 24     }
 25     if(len1==2){
 26         return cal(a[1],a[2],s[1]);
 27     }
 28     if(len1==1){
 29         return a[1];
 30     }
 31     LL tem[maxn],t;
 32     char o[maxn];
 33     if(p==1) t=-INF;
 34     else t=INF;
 35     for(int i=1;i<len1;i++){
 36         for(int j=1;j<=i-1;j++) tem[j]=a[j];
 37             tem[i]=cal(a[i],a[i+1],s[i]);    
 38         for(int j=i+1;j<=len1-1;j++) tem[j]=a[j+1];
 39         for(int j=1;j<=i-1;j++) o[j]=s[j];
 40         for(int j=i+1;j<=len2;j++) o[j-1]=s[j];
 41         xx=dfs1(tem,len1-1,o,len2-1,p^1);
 42         if(p==1){
 43             t=max(t,xx);
 44         }
 45         else 
 46             t=min(t,xx);
 47     }
 48     return t;
 49 }
 50 int main(){
 51 //    freopen("txt.out","w",stdout);
 52     int T;
 53     cin>>T;
 54     int flag=0,tot=0;
 55     LL tem[maxn];
 56     LL res,l1,l2,ans;
 57     while(T--){
 58         cin>>n;
 59         n++;
 60         r1=-INF,r2=INF;
 61         for(int i=1;i<=n-1;i++){
 62             scanf("%d",&seg[i]);
 63             cin>>op[i];
 64         }
 65         cin>>seg[n];
 66     for(int i=1;i<n;i++){
 67         for(int j=1;j<=i-1;j++) tem[j]=seg[j];
 68             tem[i]=cal(seg[i],seg[i+1],op[i]);    
 69         for(int j=i+1;j<=n-1;j++) tem[j]=seg[j+1];
 70         for(int j=1;j<=i-1;j++) o[j]=op[j];
 71         for(int j=i+1;j<=n-1;j++) o[j-1]=op[j];
 72         res=dfs1(tem,n-1,o,n-2,0);
 73         if(r1<res){
 74             r1=res;
 75             l1=i;
 76         }
 77     }
 78     cout<<"Case "<<++tot<<":"<<endl;
 79     cout<<"Player 1 "<<"("<<seg[l1]<<op[l1]<<seg[l1+1]<<") leads to "<<r1<<endl;
 80     for(int i=1;i<n;i++){
 81         for(int j=1;j<=i-1;j++) tem[j]=seg[j];
 82             tem[i]=cal(seg[i],seg[i+1],op[i]);    
 83         for(int j=i+1;j<=n-1;j++) tem[j]=seg[j+1];
 84         for(int j=1;j<=i-1;j++) o[j]=op[j];
 85         for(int j=i+1;j<=n-1;j++) o[j-1]=op[j];
 86         res=dfs1(tem,n-1,o,n-2,1);
 87         if(r2>res){
 88             r2=res;
 89             l2=i;
 90         }
 91     }
 92     cout<<"Player 2 "<<"("<<seg[l2]<<op[l2]<<seg[l2+1]<<") leads to "<<r2<<endl;
 93     if(r1>-r2) flag=1;
 94     else if(r1<-r2) flag=-1;
 95     else flag=0;
 96     if(flag==1) cout<<"Player 1 wins"<<endl;
 97     else if(flag==-1) cout<<"Player 2 wins"<<endl;
 98     else cout<<"Tie"<<endl;
 99     }
100     return 0;
101 }

 

转载于:https://www.cnblogs.com/poler/p/7375646.html

这篇关于2012 East Central Regional Contest Gym100642E的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/299273

相关文章

2014 Multi-University Training Contest 8小记

1002 计算几何 最大的速度才可能拥有无限的面积。 最大的速度的点 求凸包, 凸包上的点( 注意不是端点 ) 才拥有无限的面积 注意 :  凸包上如果有重点则不满足。 另外最大的速度为0也不行的。 int cmp(double x){if(fabs(x) < 1e-8) return 0 ;if(x > 0) return 1 ;return -1 ;}struct poin

2014 Multi-University Training Contest 7小记

1003   数学 , 先暴力再解方程。 在b进制下是个2 , 3 位数的 大概是10000进制以上 。这部分解方程 2-10000 直接暴力 typedef long long LL ;LL n ;int ok(int b){LL m = n ;int c ;while(m){c = m % b ;if(c == 3 || c == 4 || c == 5 ||

2014 Multi-University Training Contest 6小记

1003  贪心 对于111...10....000 这样的序列,  a 为1的个数,b为0的个数,易得当 x= a / (a + b) 时 f最小。 讲串分成若干段  1..10..0   ,  1..10..0 ,  要满足x非递减 。  对于 xi > xi+1  这样的合并 即可。 const int maxn = 100008 ;struct Node{int

AtCoder Beginner Contest 370 Solution

A void solve() {int a, b;qr(a, b);if(a + b != 1) cout << "Invalid\n";else Yes(a);} B 模拟 void solve() {qr(n);int x = 1;FOR(i, n) FOR(j, i) qr(a[i][j]);FOR(i, n) x = x >= i ? a[x][i]: a[i][x];pr2(

CF Bayan 2015 Contest Warm Up B.(dfs+暴力)

B. Strongly Connected City time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/475/probl

CF Bayan 2015 Contest Warm Up A.(模拟+预处理)

A. Bayan Bus time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output 题目链接: http://codeforces.com/contest/475/problem/A The fi

[项目][CMP][Central Cache]详细讲解

目录 1.设计&结构2.申请内存3.释放内存4.框架 1.设计&结构 Central Cache也是一个哈希桶结构,它的哈希桶的映射关系跟Thread Cache是一样的不同的是它的每个哈希桶位置挂的是SpanList链表结构(带头双向循环链表),不过每个映射桶下面的span中的大内存块被按映射关系切成了一个个小内存块对象挂在span的自由链表中 8Byte映射位置下面挂的是

AtCoder Beginner Contest 369 D - Bonus EXP 动态规划

原题链接: https://atcoder.jp/contests/abc369/tasks/abc369_d 思路:   这道题为什么要用动态规划呢,其实,对于第i个怪物,我们有打与不打两种处理方式,而对于打,我们是获得两倍的经验值,还是一倍的经验值,与我们打了奇数只怪物还是打了偶数只怪物有关了,因此我们定义dp[i][0] 为前i只怪物总共打了偶数次,dp[i][1] 为前i只怪物总

VS2010与2012项目类型选择,MFC

今天装了了一个 VS2012,  在用向导创建工程的时候,发现在项目类型选择的时候,我们要去观察室继承的谁,VS2010项目类型选择,MFC,mainfrm 继承是cframewnd,而VS2012,继承是CframewndEX    区别好大

2015 Multi-University Training Contest 5 1009 MZL#39;s Border

MZL's Border  Problem's Link:  http://acm.hdu.edu.cn/showproblem.php?pid=5351   Mean:  给出一个类似斐波那契数列的字符串序列,要你求给出的f[n]字符串中截取前m位的字符串s中s[1...i] = s[s.size()-i+1....s.size()]的最大长度。 analyse:   过计算