2016 google code jam

2016 google code jam round 3

problem 1 teaching assistant

codejam

问题描述:有一个AI评分系统,你第一天向他申请题目,第二天向他提交题目。你有两种mood可以选择:coding、jamming。但是AI会根据你申请的mood和提交的mood与它所处的mood是否一致来打分。
第一天申请:
  • 当你申请与它的mood一致时,它将你的题最高分设为10分。
  • 当你的申请的mood和它不一致时,他将你的选题最高分选为5分。
第二天提交
  • 当你提交的与它的mood一致他给你最高分10。
  • 当你提交的和他不一致给你5分。
样例:

第一天,你申请了coding,AI的mood是coding,他会给你的题设置为最高10分。
第二天,你提交的题是coding,和AI的mood相匹配也是coding,它给你最高分10分。
第三天,你申请的题是jamming,而此时AI的mood是coding,他会给你的题目设定最高分是5分。
第四天,你提交的题目是jamming,而此时AI的mode也是jamming的话,他给你最高分5分。
exampel

input _ _ ouput
5
CCJJ _ Case #1: 20
CJCJ _ Case #2: 10
CJJC _ Case #3: 20
CJJJ _Case #4: 15
CCCCCC _Case #5: 30

分析,这其实就是一个匹配的问题。用栈来保存数据。如果是与AI的mood匹配就将字符弹出,如果不同就保留。最后来计算。
实现:

  1/*gogle code jam 2016 round 3 teaching assistant
  2  * using stack to store the difreences.
  3  */
  4 #include <iostream>
  5 #include <stack>
  6 #include <cstdio>
  7
  8 using namespace std;
  9
 10
 11
 12 int main(){
 13     freopen("in.txt","r",stdin);
 14     freopen("out.txt","w",stdout);
 15     int t;
 16     cin >> t;
 17     for (int i = 1;i <= t; ++i){
 18     string s;
 19     stack<char> S;
 20     int an = 0;
 21     cin >> s;
 22     for (int i = 0;i < s.size(); ++i){
 23         if(S.top() != s[i] || S.empty())
 24             S.push(s[i]);
 25         else {
 26             S.pop();    //store the char unmatched.
 27             an +=10;
 28             }
 29          }
 30     an += S.size() / 2 * 5;
 31     printf("case #%d %d\n",i,an);
 32     }
 33     return 0;
 34
 35  }
~
~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值