AtCoder Grand Contest 020
A - Move and Win
Time limit : 1sec / Memory limit : 512MB
Score : 300 points
Problem Statement
A game is played on a strip consisting of N cells consecutively numbered from 1 to N.
Alice has her token on cell A. Borys has his token on a different cell B.
Players take turns, Alice moves first. The moving player must shift his or her token from its current cell X to the neighboring cell on the left, cell X−1, or on the right, cell X+1. Note that it's disallowed to move the token outside the strip or to the cell with the other player's token. In one turn, the token of the moving player must be shifted exactly once.
The player who can't make a move loses, and the other player wins.
Both players want to win. Who wins if they play optimally?
Constraints
- 2≤N≤100
- 1≤A<B≤N
- All input values are integers.
Input
Input is given from Standard Input in the following format:
N A B
Output
Print Alice if Alice wins, Borys if Borys wins, and Draw if nobody wins.
Sample Input 1
5 2 4
Sample Output 1
Alice
Alice can move her token to cell 3. After that, Borys will be unable to move his token to cell 3, so he will have to move his token to cell 5. Then, Alice moves her token to cell 4. Borys can't make a move and loses.
Sample Input 2
2 1 2
Sample Output 2
Borys
Alice can't make the very first move and loses.
Sample Input 3
58 23 42
Sample Output 3
Borys
不存在平手啊,我还在想平手,而且和n无关
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,a,b;
cin>>n>>a>>b;
if((b-a-)&)
cout<<"Alice";
else cout<<"Borys";
return ;
}
B - Ice Rink Game
Time limit : 2sec / Memory limit : 512MB
Score : 500 points
Problem Statement
An adult game master and N children are playing a game on an ice rink. The game consists of K rounds. In the i-th round, the game master announces:
- Form groups consisting of Ai children each!
Then the children who are still in the game form as many groups of Ai children as possible. One child may belong to at most one group. Those who are left without a group leave the game. The others proceed to the next round. Note that it's possible that nobody leaves the game in some round.
In the end, after the K-th round, there are exactly two children left, and they are declared the winners.
You have heard the values of A1, A2, ..., AK. You don't know N, but you want to estimate it.
Find the smallest and the largest possible number of children in the game before the start, or determine that no valid values of Nexist.
Constraints
- 1≤K≤105
- 2≤Ai≤109
- All input values are integers.
Input
Input is given from Standard Input in the following format:
K
A1 A2 … AK
Output
Print two integers representing the smallest and the largest possible value of N, respectively, or a single integer −1 if the described situation is impossible.
Sample Input 1
4
3 4 3 2
Sample Output 1
6 8
For example, if the game starts with 6 children, then it proceeds as follows:
- In the first round, 6 children form 2 groups of 3 children, and nobody leaves the game.
- In the second round, 6 children form 1 group of 4 children, and 2 children leave the game.
- In the third round, 4 children form 1 group of 3 children, and 1 child leaves the game.
- In the fourth round, 3 children form 1 group of 2 children, and 1 child leaves the game.
The last 2 children are declared the winners.
Sample Input 2
5
3 4 100 3 2
Sample Output 2
-1
This situation is impossible. In particular, if the game starts with less than 100 children, everyone leaves after the third round.
Sample Input 3
10
2 2 2 2 2 2 2 2 2 2
Sample Output 3
2 3
这个人是和n的大小有关,而且是递增的,二分就好,二分范围搞错和不小心强制转换GG两发,R应该是1e18就够了,1e9*1e9
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
const int N=1e5+;
int a[N],k;
ll la(int x)
{
ll L=,R=(ll)4e18;
while(L<=R)
{
ll mi=(L+R)/;
for(int i=;i<=k;i++)mi=mi/a[i]*a[i];
if(mi>x)R=(L+R)/-;
else L=(L+R)/+;
}
L--;
ll t=L;
for(int i=;i<=k;i++)
L=L/a[i]*a[i];
if(L==x)return t;
else return ; }
ll lb(int x)
{
ll L=,R=(ll)4e18;
while(L<=R)
{
ll mi=(L+R)/;
for(int i=;i<=k;i++)mi=mi/a[i]*a[i];
if(mi<x) L=(L+R)/+;
else R=(L+R)/-;
}
ll t=L;
for(int i=;i<=k;i++)
L=L/a[i]*a[i];
if(L==x)return t;
else return ;
}
int main()
{
scanf("%d",&k);
for(int i=;i<=k;i++)scanf("%d",&a[i]);
ll x=lb(),y=la();
if(!x)printf("-1");
else printf("%llu %llu",x,y);
return ;
}
C - Median Sum
Time limit : 2sec / Memory limit : 512MB
Score : 700 points
Problem Statement
You are given N integers A1, A2, ..., AN.
Consider the sums of all non-empty subsequences of A. There are 2N−1 such sums, an odd number.
Let the list of these sums in non-decreasing order be S1, S2, ..., S2N−1.
Find the median of this list, S2N−1.
Constraints
- 1≤N≤2000
- 1≤Ai≤2000
- All input values are integers.
Input
Input is given from Standard Input in the following format:
N
A1 A2 … AN
Output
Print the median of the sorted list of the sums of all non-empty subsequences of A.
Sample Input 1
3
1 2 1
Sample Output 1
2
In this case, S=(1,1,2,2,3,3,4). Its median is S4=2.
Sample Input 2
1
58
Sample Output 2
58
In this case, S=(58).
这个要找比s/2大的数,呜呜呜,就是背包的bitset,还是自己太菜了
#include<bits/stdc++.h>
using namespace std;
const int N=2e6+;
bitset<N>V;
int main()
{
int n,s=;
scanf("%d",&n);
V[]=;
for(int i=,x; i<n; i++)scanf("%d",&x),s+=x,V|=V<<x;
for(int i=s/;;i--)
if(V[i])
{
printf("%d\n",s-i);
return ;
}
}
AtCoder Grand Contest 020的更多相关文章
- Atcoder Grand Contest 020 E - Encoding Subsets(记忆化搜索+复杂度分析)
Atcoder 题面传送门 & 洛谷题面传送门 首先先考虑如果没有什么子集的限制怎样计算方案数.明显就是一个区间 \(dp\),这个恰好一年前就做过类似的题目了.我们设 \(f_{l,r}\) ...
- Atcoder Grand Contest 020 F - Arcs on a Circle(DP+小技巧)
Atcoder 题面传送门 & 洛谷题面传送门 一道难度 unavailable 的 AGC F 哦 首先此题最棘手的地方显然在于此题的坐标可以为任意实数,无法放入 DP 的状态,也无法直接计 ...
- AtCoder Grand Contest 020 D - Min Max Repetition
q<=1000个询问,每次问a,b,c,d:f(a,b)表示含a个A,b个B的字符串中,连续A或连续B最小的串中,字典序最小的一个串,输出这个串的c到d位.a,b<=5e8,d-c+1&l ...
- AtCoder Grand Contest 020 题解
传送门 怎么又是\(tourist\)神仙的题-- \(A\) 咕咕 int n,a,b; int main(){ scanf("%d%d%d",&n,&a,&am ...
- AtCoder Grand Contest 020 (AGC020) E - Encoding Subsets 动态规划
原文链接www.cnblogs.com/zhouzhendong/p/AGC020E.html 前言 真 \(\cdot\) 信仰型动态规划 题解 我们可以采用信仰型动态规划解决此题. 设 \(dp[ ...
- AtCoder Grand Contest 012
AtCoder Grand Contest 012 A - AtCoder Group Contest 翻译 有\(3n\)个人,每一个人有一个强大值(看我的假翻译),每三个人可以分成一组,一组的强大 ...
- AtCoder Grand Contest 011
AtCoder Grand Contest 011 upd:这篇咕了好久,前面几题是三周以前写的... AtCoder Grand Contest 011 A - Airport Bus 翻译 有\( ...
- AtCoder Grand Contest 031 简要题解
AtCoder Grand Contest 031 Atcoder A - Colorful Subsequence description 求\(s\)中本质不同子序列的个数模\(10^9+7\). ...
- AtCoder Grand Contest 010
AtCoder Grand Contest 010 A - Addition 翻译 黑板上写了\(n\)个正整数,每次会擦去两个奇偶性相同的数,然后把他们的和写会到黑板上,问最终能否只剩下一个数. 题 ...
随机推荐
- AdonisJs(Node框架)学习总结
先列出作为前端开发人员必须知道的10个NodeJs框架 AdonisJs 一个服务端渲染的MVC框架,它是 Laravel (PHP框架)的一个 NodeJS 版本. 可以安装脚手架工具adonis ...
- 突然心血来潮,想写写我在java面试中遇到的事。作为一个应届生,我觉得我的情况都与大部分应届生是差不多的,希望你们能在这上面得到一些有用的
面试过程吧,怎么说呢?从一开始接触面试到现在成功了几家,这中间我确实收获了许多,那我就从我第一次面试开始讲吧. 第一次面试是有人介绍过来的,总之还是有一位贵人相助,所以第一次面试时,面试官很好没有怎么 ...
- 删除Chrome地址栏记录中自动补全的网址
为了删除某个自动补全的网站,多年的历史纪录没了,还浪费我十多分钟,蠢哭_(:з」∠)_ 不是历史记录.不是清除浏览器数据.不是myactivity(谷歌账号)中的历史纪录,直接在书签中搜索,删除,OK ...
- XPath语法规则及实例
XPath语法规则及实例 XPath语法规则 一.XPath术语: 1.节点:在XPath中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释以及文档(根)节点. XML文档是被作为节点树 ...
- openstack nova fail to create vm
2019-05-13 14:43:27.017 47547 ERROR nova.compute.manager [req-3f1af0ed-c342-4cf3-8e76-6963053a5227 8 ...
- 多线程编程之pthread线程深入理解
不同的平台和操作系统上 进程和线程的实现机制不完全一致 但是一般来说线程栈都是独立的 只要得到地址就可以相互访问 Pthread是 POSIX threads 的简称,是POSIX的线程 ...
- ps基础实例
一:合并多个图片 1.先新件一个图片)CTRL+N),大小定成你想要的大小 2.把你要放入的照片用PS打开 3.把放入的照片用移动工具(V)拉到新件的图片里面 4.用CTRL+T调整大小(按住SHIF ...
- Python——基本运算符
计算机不止可以进行加减乘除,还可以进行多种运算,比如算数运算,逻辑运算,赋值运算等 算数运算 以下假设变量:a=10,b=20 比较运算 以下假设变量:a=10,b=20 赋值运算 以下假设变量:a= ...
- Java中List集合排序的方法 比较器的使用 根据学生对象数学 语文 英语成绩总和进行sort排序
package com.swift; import java.util.ArrayList; import java.util.Collections; import java.util.Compar ...
- cocos2dx 3.x c++代码打包给lua调用过程(mac)
下载cocos2dx 框架,在应用程序->cocos->framework->cocos2d-x-3.x->tools->tolua目录下,一个ini文件对应一个py文件 ...