A. Picking&Dancing

有一列n个石子,两人交替取石子,每次只能取连续的两个,取走后,剩下的石子仍然排成1列。问最后剩下的石子数量是奇数还是偶数。

读懂题意就没什么好说的。

#include<stdio.h>
int n;
int main()
{
scanf("%d",&n);
if(n%2)
puts("Xiaoyu_Chen");
else
puts("Yitong_Qin");
return 0;
}

B. string

首先我们可以倒着贪心。因为比如aabd,这个d 合并不合并到b 和之前的字符串无关。
然后我们写出伪代码:

ans :=1;
for i:= n-1 downto 1 do
if(s[i]<> s[i+1])
then ans :=1;
else inc(ans);

然后我们发现,答案就是开头连续相同的字母数。

#include<bits/stdc++.h>
using namespace std;
long long i,ans,l;
char ch;
string s;
int main() {
cin>>s;
l = s.length();
ch = s[0];
i = 1;
ans = 1;
while (s[i] == ch && i < l) {
ans++;
i++;
}
cout<<ans;
}

C. How To Get Twenty-four?

题意:给定一个数n,问你能否用n个"7"仅仅通过加减乘除(可添加括号)这几种运算得到24点。

手推一下n比较小的情况,容易发现,n<=5时都是无解的。

n=6的情况在样例中给出 :

(7*7*7-7)/(7+7)=24

n=7时:

(7+7+7)/7*(7+7/7)=24
因此,在n>7时,对于n为偶数的情况,可以通过n=6的解来+7再-7得到;同理,对于n为奇数的情况,可以通过n=7的解来+7再-7得到。
因此,n>=6时,均有解。
#include<stdio.h>
int n;
int main()
{
scanf("%d",&n);
if(n<=5)
puts("NO");
else
puts("YES");
return 0;
}

D. Passing the Ball

结论题:

若M为奇数,则答案为((N-1)^M-N+1)/N
若M为偶数,则答案为((N-1)^M+N-1)/N

证明一:

设F[k]为球最后传给第k个人的情况数
显然球最后传给第2到第N个人的概率相同,即F[2]=F[3]=...=F[N]
F[1]+F[2]+F[3]+...+F[N]=(N-1)^M
F[1]+(N-1)*F[2]=(N-1)^M
而球一旦传给第3到第N个人,则球最后传给前两个人的概率相同
即在球曾传给第3到第N个人的情况中,最后传给前两个人的情况数相同
而在球没有传给第3到N个人的情况中,即前两个人互传的情况,有:
若M为奇数,则最后传给第2个人
若M为偶数,则最后传给第1个人
即F[2]=F[1]+1(M为奇数)
F[2]=F[1]-1(M为偶数)
综上所述,F[1]=((N-1)^M-N+1)/N(M为奇数)
F[1]=((N-1)^M+N-1)/N(M为偶数)

证明二:

设F[k]为k次传球后传给第1个人的情况数
则F[k]=(N-1)^(k-1)-F[k-1],且F[1]=0
故若M为奇数,则F[m]=(N-1)^(M-1)-(N-1)^(M-2)+...-(N-1)^1
=(1-N)*((1-N)^(M-1)-1)/(1-N-1)
=((N-1)^M-N+1)/N
若M为偶数,则F[m]=(N-1)^(M-1)-(N-1)^(M-2)+...+(N-1)^1
=(N-1)((N-1)^(M-2)-(N-1)^(M-3)+...-(N-1)^1+1)
=(N-1)(((N-1)^(M-1)-N+1)/N+1)
=((N-1)^M+N-1)/N

Hint:由于数据范围进行过弱化,因此本应无法通过的直接递推的做法也可以AC了。

#include <cstdio>
#include <iostream>
using namespace std;
long long n,m;
int main(){
scanf("%lld%lld",&n,&m);
long long ans=1;
for(int i=1;i<=m;++i)ans*=n-1;
if(m&1)ans=(ans-n+1)/n;
else ans=(ans+n-1)/n;
printf("%lld",ans);
}

E. Homura's Game

题意:给定一个体积为a*b*c的长方体(由a*b*c个1*1*1的小立方体房间构成),最开始有一个石子在坐标为(1,1,1)的房间里,两人交替移动石子到一个相邻的房间,但是不能移动到曾经访问过的房间。不能移动了算输。问是否存在先手必胜策略?

考虑二维的情况,若一个a*b的棋盘恰好有偶数个格子,那么它一定可以被1*2大小的长方形卡片恰好完全覆盖。于是先手的玩家每次只需从当前卡片的一端移动到另一端即可,而后手的玩家却需要把石子移动到一个新的卡片上。于是,只要后手的玩家可以移动卡片,先手的玩家就必然可以移动卡片,于是先手必胜。
若这个棋盘恰好有奇数个格子呢?显然,除了左上角的一个格子以外,其他的所有格子可以被1*2大小的长方形卡片恰好完全覆盖。于是先手的玩家第一步必须把石子移动到一个新的卡片上。于是先手必败。

考虑三维的情况,我们容易发现,结论仍然成立。

于是只需判断a*b*c的奇偶性。偶数输出YES,奇数输出NO。

容易发现,当且仅当a,b,c均为奇数时,a*b*c才为奇数,否则为偶数。

Source:二维的情况,BZOJ2463 [中山市选2009]谁能赢呢?

#include<stdio.h>
int n;
int main()
{
int a,b,c,i;
scanf("%d%d%d",&a,&b,&c);
if(a%2==1 && b%2==1 && c%2==1)
puts("NO");
else
puts("YES");
return 0;
}

UESTC第八届ACM趣味程序设计竞赛到此就全部结束了!祝贺得奖的大家!没有得奖的选手也不要气馁,只要努力,ACM系列程序设计竞赛一直会欢迎你们的!

在此也感谢各位命题人的工作。

电子科技大学第八届ACM趣味程序设计竞赛第四场(正式赛)题解的更多相关文章

  1. UESTC-第五届ACM趣味程序设计竞赛第四场(正式赛)--不完全解题报告

    比赛链接: http://acm.uestc.edu.cn/contest.php?cid=230 A.Police And The Thief ---UESTC 1913 简单博弈,先假设在警察先走 ...

  2. 第七届ACM趣味程序设计竞赛第四场(正式赛) 题解

    Final Pan's prime numbers 题目连接: http://acm.uestc.edu.cn/#/problem/show/1272 题意 给你n,要求你在[4,n]范围内找到一个最 ...

  3. CDOJ 第七届ACM趣味程序设计竞赛第三场(正式赛) 题解

    宝贵资源 题目连接: http://acm.uestc.edu.cn/#/problem/show/1265 题意 平面上给n个点(n<=1000),要求找一个面积最小的正方形,将所有的点都囊括 ...

  4. 西安电子科技大学第16届程序设计竞赛 G-小国的复仇

    西安电子科技大学第16届程序设计竞赛网络同步赛 G-小国的复仇 2 链接:https://www.nowcoder.com/acm/contest/107/G来源:牛客网 题目描述 众所周知,汀老师是 ...

  5. 电子科技大学第九届ACM趣味程序设计竞赛(热身赛)题解

    比赛地址:http://acm.uestc.edu.cn/#/contest/show/191 A题 小羽涂色 题意: 在x轴的正半轴上,问你是否存在一段区间[L,R]其中包含r个奇数和g个偶数. 分 ...

  6. 西安电子科技大学第16届程序设计竞赛 E Xieldy And His Password

    链接:https://www.nowcoder.com/acm/contest/107/E来源:牛客网 Xieldy And His Password 时间限制:C/C++ 1秒,其他语言2秒 空间限 ...

  7. 西安电子科技大学第16届程序设计竞赛 B Words Game

    链接:https://www.nowcoder.com/acm/contest/107/B来源:牛客网 Words Game 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 13107 ...

  8. 西安电子科技大学第16届程序设计竞赛 F Operating System (unique() 去重函数)

    链接:https://www.nowcoder.com/acm/contest/107/F来源:牛客网 Operating System 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ ...

  9. 山东省第八届ACM大学生程序设计竞赛

    C 暂时还不对 #include <iostream> #include <cstdio> #include <cmath> using namespace std ...

随机推荐

  1. 论Segmentation fault

    刚开始学c的时候,最头疼的事情是编译总是通不过,郁闷的要死,只要编译通过了,就兴奋的要死.现在,最头疼的事情是什么呢,编译没问题,但是程序跑的时候会出现Segmentation fault! 这个东西 ...

  2. Android菜鸟成长记16 -- JSON的解析

    JSON的定义  一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  3. SecureCRT和SecureFx设置中文乱码

    SecureCRT和SecureFx设置中文乱码 SecureCRT和SecureFx连接服务器时中文显示乱码,找了好多资料好久都没整出来,后来整出来了,因此把个人的解决办法提供出来,已变帮助更多的人 ...

  4. 笔记002:javascript简介

    1. HTML服务于内容 CSS服务于表现 Javascript服务于行为(一切东西的粘合剂) 2.javascript能运行多种宿主环境中(Web浏览器最普遍) 3.历史 1995 Netscape ...

  5. mvc 项目下 webservice 程序无法运行

    错误描述: 可以出现调用HelloWorld的界面 点击调用按钮报无法找到该资源 错误分析: 把webservice当成controller了. 解决: global中 添加  routes.Igno ...

  6. js/jstl/el的区别

    JavaScript 学习的路径:http://www.w3school.com.cn/js/js_intro.asp 是世界上最流行的编程语言. 这门语言可用于 HTML 和 web,更可广泛用于服 ...

  7. 生成SSH key

    1.打开终端 2.输入cd ~/.ssh 3.输入ssh-keygen -t rsa -C (邮箱) 4.前往文件夹 /Users/admin/.ssh/id_rsa 5.找到id_rsa.pub , ...

  8. Android的setVisibility(View.GONE)无效的问题及原因分析

    出现这种情况很可能是因为设置了animation,并且调用了setFillAfter(true),这就会导致setVisibility无效,只需要调用一下clearAnimation()方法或者去掉s ...

  9. Linux入门学习 常用命令

    cd命令 功能是切换到指定的目录:命令格式:cd [目录名]有几个符号作为目录名有特殊的含义:"/"代表根目录.".."代表上一级目录."~" ...

  10. textFiled的placeHolder字体颜色

    self.title=@"修改UITextField的placeholder字体颜色"; UITextField *textTF=[[UITextField alloc]initW ...