codechef The Ball And Cups题解
The Ball And Cups
At the end of a busy day, The Chef and his assistants play a game together. The game is not just for fun but also used to decide who will have to clean the kitchen. The Chef is a Game Master, so his concern is how to manage the game but not how to win the game
like his assistants do.
The game requires players to find the only ball under one of the N cups after their positions are changed in a special way. At the beginning of the game, The Chef places N cups in a row and put a ball under the C-th
cup from the left (the cups are numbered from 1 to N). All players can see the initial position of the ball. Then Chef performs Q flip operations. Each flip operation is defined by two integers L and R such
that 1 ≤ L ≤ R ≤ N and consists in reversing the segment [L, R] of cups. Namely, Chef swaps L-th and R-th cups, (L+1)-th and (R−1)-th cups, and so on. After
performing all the operations Chef asks his assistants to choose a cup that they think the ball is under it. Who can guess the position of the ball will win the game, and of course, the others will have to clean the kitchen.
The Chef doesn't want to check all the N cups at the end of the game. He notes down the value of C and the pairs (L, R) and asked you, the mastered programmer, to determine the cup that contains the ball.
Input
The first line of the input contains a single integer T, denoting the number of test cases. The description of Ttest cases follows. The first line of each test case contains three space-separated integers N, C and Q,
denoting the total number of cups, the initial position of the ball and the number of flip operations Chef will perform. Each of the following Q lines contains two space-separated integers L and R, denoting
the ends of the segment of the current flip operation.
Output
For each test case output on a separate line the final position of the ball.
Constraints
- 1 ≤ T ≤ 10
- 1 ≤ N ≤ 100000 (105)
- 1 ≤ C ≤ N
- 1 ≤ Q ≤ 10000 (104)
- 1 ≤ L ≤ R ≤ N
Example
Input:
1
5 2 3
1 4
3 5
1 5 Output:
1
也是个构造数学公式的样例。
这里是过万个输入。故此最优点理一下输入,使得程序能够0ms过。
注意:
1 陷阱 - C会不在[L, R]范围内
2 fread处理输入,记得推断最后输入结束的条件 - fread返回长度为零,否则。尽管能够AC。可是程序是有bug的。
我都使用类当做函数使用了,能够非常好降低变量名的冲突。
#pragma once
#include <stdio.h> class TheBallAndCups
{
int st, len;
static const int BU_MAX = 5120;
char buffer[BU_MAX]; char getFromBuffer()
{
if (st >= len)
{
len = fread(buffer, 1, BU_MAX, stdin);
st = 0;
}
return buffer[st++];
} int scanInt()
{
char c = getFromBuffer();
while (c < '0' || '9' < c)
{
c = getFromBuffer();
}
int num = 0;
while ('0' <= c && c <= '9' && 0 != len)//必需要加0 != len推断输入结束
{
num = (num<<3) + (num<<1) + (c - '0');
c = getFromBuffer();
}
return num;
} public:
TheBallAndCups() : st(0), len(0)
{
int T = 0, N = 0, C = 0, L = 0, R = 0, Q = 0;
T = scanInt();
while (T--)
{
N = scanInt();
C = scanInt();
Q = scanInt();
while (Q--)
{
L = scanInt();
R = scanInt();
if (C < L || R < C) continue;
int M = L + ((R-L)>>1);
if (C <= M)
{
int diff = C - L;
C = R - diff;
}
else
{
int diff = R - C;
C = L + diff;
}
}
printf("%d\n", C);
}
}
}; int theBallAndCups()
{
TheBallAndCups();
return 0;
}
codechef The Ball And Cups题解的更多相关文章
- CodeChef November Challenge 2013 部分题解
http://www.codechef.com/NOV13 还在比...我先放一部分题解吧... Uncle Johny 排序一遍 struct node{ int val; int pos; }a[ ...
- codechef February Challenge 2018 简要题解
比赛链接:https://www.codechef.com/FEB18,题面和提交记录是公开的,这里就不再贴了 Chef And His Characters 模拟题 Chef And The Pat ...
- codechef Row and Column Operations 题解
版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/,未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...
- codechef January Lunchtime 2017简要题解
题目地址https://www.codechef.com/LTIME44 Nothing in Common 签到题,随便写个求暴力交集就行了 Sealing up 完全背包算出得到长度≥x的最小花费 ...
- codechef January Challenge 2017 简要题解
https://www.codechef.com/JAN17 Cats and Dogs 签到题 #include<cstdio> int min(int a,int b){return ...
- HDU 1556 Color the Ball 线段树 题解
本题使用线段树自然能够,由于区间的问题. 这里比較难想的就是: 1 最后更新须要查询全部叶子节点的值,故此须要使用O(nlgn)时间效率更新全部点. 2 截取区间不能有半点差错.否则答案错误. 这两点 ...
- codechef Sums in a Triangle题解
Let's consider a triangle of numbers in which a number appears in the first line, two numbers appear ...
- codechef Little Elephant and Permutations题解
The Little Elephant likes permutations. This time he has a permutation A[1], A[2], ..., A[N] of numb ...
- codechef Little Elephant and Bombs题解
The Little Elephant from the Zoo of Lviv currently is on the military mission. There are N enemy bui ...
随机推荐
- 高并发编程之ReentrantLock
上文学习jvm提供的同步方法synchronized的用法,一些常见的业务类型以及一道以前阿里的面试题,从中学习到了一些并发编程的一些规则以及建议,本文主要学习jdk提供的同步方法reentrantL ...
- Matrix-tree定理 spoj HIGH
Matrix-tree定理,给出一个无向图,问求出的生成树方案有多少种方案,利用Matrix-tree定理,主对角线第i行是i的度数,(i,j) 值为i和j之间边的数量,然后删去第一行第一列,利用初等 ...
- [BZOJ3514]CodeChef MARCH14 GERALD07加强版(LCT+主席树)
3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 2177 Solved: 834 ...
- Dubbo整合SpringCloud图片显示问题
Dubbo整合SpringCloud图片显示问题 Tips:公司项目,记录一点经验吧,理解的不对的地方欢迎大神指点 问题:商品图片上传功能(公司没有专门文件服务器)写的保存目录直接是保存在docker ...
- 快速幂 cojs 1130. 取余运算
cojs 1130. 取余运算 ★ 输入文件:dmod.in 输出文件:dmod.out 简单对比时间限制:10 s 内存限制:128 MB [题目描述] 输入b,p,k的值,求b^p ...
- 某DP题目4
题意 有两个栈分别有n和m个数,每次从任意栈中取出一个数,令k为不同输出序列的总数,其中第i种输出序列的产生方式有ai个,求Σai2. n <= 500 分析 此题是关于ai2转换.咋一看此题好 ...
- Educational Codeforces Round 10 D. Nested Segments 离线树状数组 离散化
D. Nested Segments 题目连接: http://www.codeforces.com/contest/652/problem/D Description You are given n ...
- window10下java环境变量的配置 javac不是内部或外部命令的问题
http://blog.csdn.net/suncold123/article/details/48392135 参考与上面这个博主. 今天在win10下重新配置了一下java环境变量.跟着网上的流程 ...
- AS3使用Json 传复杂数据 -------- 用数组而不是向量
package { public class Person { private var name:String; public function get Name():String { return ...
- StringFormat
public class StringFormatDemo { public static void main(String[] args) { String str = null; str = St ...