解题报告:n个人围坐成一圈,并且将这n个人从1到n编号,然后编号为1 的人手上有一个物品,将这个物品往向左传递给第k个人,1<=k<=n/2,当这个物品再次传到编号为1 的人的手上时,游戏结束,要使这个k最大,并且,在游戏结束后要求每一个人都要拿过这个物品,求这个最大的k。

看了一下就猜想大概就是在n/2附近去找,然后做了几个小的数字分析了一下,发现猜想没有错误,不过不能证明,这题还有一个到现在还是很困惑的地方,为什么我的代码数组一定要开到20000,本来开到2000就够了,但我的一定要开到20000,就因为这个比赛的时候卡了很久。希望知道的大牛给我留个言。

下面将这几种情况列出来:

1.n & 1 == 1       ans = n / 2;

2.n & 1 == 0  && n / 2 % 2 == 1            ans = n / 2 - 2;

3.n & 1 == 0 && n / 2 % 2 == 0             ans = n / 2 - 1;

 #include<cstdio>
#include<cstring>
#include<iostream>
using namespace std; char* chu(char *s)
{
int len = strlen(s),f = ;
char t[];
int left = ;
for(int i = ;i<len;++i)
{
int x = *left + s[i] - '';
t[f++] = x / + '';
if((s[i]-'') & )
left = ;
else left = ;
}
t[f] = NULL;
if(t[] == '')
return t+;
return t;
} char* sub2(char *s)
{
int len = strlen(s);
int l = len - ;
while(l >= )
{
if((s[l] - '') != )
{
s[l] -= ;
break;
}
else s[l] = '';
l--;
}
if(s[] == '')
return s+;
return s;
} int main()
{
int T,te = ;
scanf("%d",&T);
while(T--)
{
char str[],temp[];
scanf("%s",str);
int len = strlen(str);
if((str[len-]-'') & )
{
str[len-] -= ;
char *ans = chu(str);
printf("%s\n",ans);
}
else
{
char *an = chu(str);
an = sub2(an);
int len2 = strlen(an);
if((an[len2-] -'') & )
printf("%s\n",an);
else
{
an = sub2(an);
printf("%s\n",an);
}
}
if(T != )
printf("\n");
}
return ;
}

训练赛第一场A题 (ZOJ 2313)的更多相关文章

  1. 10.29训练赛第一场B题

    题目大意:有n个队伍之间比赛,每两个队伍之间都有一场比赛,因此一共有n(n-1) / 2场比赛,但是这里丢失了一场比赛的记录,现在让你通过n(n-1) /2 -1场仍然存在的比赛记录来判断丢失的那条比 ...

  2. 训练赛第二场C题 zoj 2339 Hyperhuffman

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2339 解题报告:题目太长了,比赛的时候根本看不懂,完了之后问了什 ...

  3. 训练赛第二场G题 ZOJ 2343

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2343 解题报告:首先我假设最后的正确的结果是a[1] , a[2 ...

  4. 训练赛第一场D题

    解题报告:一开始不知道ATA的意思,后来才知道原来是转置矩阵乘以原来的矩阵.这题说起来比较麻烦就不说了,直接上代码: #include<cstdio> #include<cstrin ...

  5. Contest1585 - 2018-2019赛季多校联合新生训练赛第一场(部分题解)

    Contest1585 - 2018-2019赛季多校联合新生训练赛第一场 C 10187 查找特定的合数 D 10188 传话游戏 H 10192 扫雷游戏 C 传送门 题干: 题目描述 自然数中除 ...

  6. HDU6578 2019HDU多校训练赛第一场 1001 (dp)

    HDU6578 2019HDU多校训练赛第一场 1001 (dp) 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6578 题意: 你有n个空需要去填,有 ...

  7. HDU6579 2019HDU多校训练赛第一场1002 (线性基)

    HDU6579 2019HDU多校训练赛第一场1002 (线性基) 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6579 题意: 两种操作 1.在序列末 ...

  8. 训练赛第二场E题 Cottage Village

    题目大意:在一条X轴上,有若干个正方形,并且保证这些正方形的中心都在X轴上,然后输入n个正方形的中心的X坐标,和正方形的边长,现在要再插入一个正方形,要求是,新插入的正方形至少要有一条边与原来的正方形 ...

  9. 2019牛客多校赛第一场 补题 I题

    I题  Points Division 题意: 给你n个点,每个点有坐标(xi,yi)和属性(ai,bi),将点集划分为两个集合, 任意 A 集合的点 i 和 B 集合点 j, 不允许 xi > ...

随机推荐

  1. js汉字按字母排序

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  2. Genymotion-ARM-Translation_v1.1安装报“an error occured while deploying the file”

    如上图,在将Genymotion-ARM-Translation_v1.1.zip拖动Genymotion虚拟机中报了图中错误,在百度后找到了解决办法,下面是我的操作步骤 1.下载re管理器之类的ap ...

  3. php单例模式 (转

    假设我们需要写一个类用来操作数据库,并同时满足以下要求: ①SqlHelper类只能有一个实例(不能多)②SqlHelper类必须能够自行创建这个实例③必须自行向整个系统提供这个实例,换句话说:多个对 ...

  4. laravel报404错误与NGINX报404错误区别

      nginx自己配置的404页面 和laravel配置的404页面:如果报了404 :执行laravel的404页面: 那这个404页面对nginx来说意味着什么    laravel 路由和页面找 ...

  5. 实现LinearLayout(垂直布局,Gravity内容排布)

    首先上Gravity的代码,Android原版的Gravity搞得挺复杂的,太高端了.但基本思路是使用位运算来做常量,我就自己消化了一些,按自己的思路来实现. 先上代码,在做分析. package k ...

  6. 如何在Windows下查看JAVA端口占用情况(阿里面试)

    如需要确定谁占用了9050端口 为例: 1.Windows平台 在windows命令行窗口下执行: 1.查看所有的端口占用情况 C:\>netstat -ano 协议 本地地址 外部地址 状态 ...

  7. Python日记——nginx+Gunicorn部署你的Flask项目

    转自:http://blog.csdn.net/qq_32198277/article/details/52432890 大家在学习Python的时候常常都是输入 python 文件名.py   这样 ...

  8. path变量修改后无法保存

    Eclipse启动时出现错误: A Java Runtime Environment (JRE) or Java Development Kit(JDK) must be available in o ...

  9. poj2761 feed the dog

    题目链接:http://poj.org/problem?id=2761 Description Wind loves pretty dogs very much, and she has n pet ...

  10. com.android.support:appcompat-v7 版本号问题

    supportLibVersion 的头数字是和targetSdkVersion 版本一样的. ext { supportLibVersion = '22.2.1'} compile "co ...