CCPC-2020 黑龙江省赛——Let’s Get Married
题意:~~
思路:题目给出的数字太少了,我们多写几个,就会发现每层最左边的值等于1.2*k(k+1) ,k代表层数,找规律发现如果一个点的坐标为2.(x,y)且|a|+|b|=k,id<=2*k*(k+1),利用这两个结论我们我们就可以解题了,如果给我们的是id,那么我们二分出该值所在层数,然后这里有个技巧我们吧该值减去上一层最大的值,就可以把id小化,同时方便计算左边,正因为这个处理,我们发现在x周上方的点是左右对称放置的,很容易得到坐标,剩下两个象限里的点,则是安斜对角变化的,第三象限的是从左上到右下依次递减,第四象限的则是从左下到右上依次递减。然后在坐标轴上的点即为id-f(n-1).针对操作二给出坐标求值,就需要用到结论2,先确定上一层的最大值,然后分情况讨论x,y的位置确定id,这些并不复杂,找几个点就能发现其中的规律。要注意的是nowx,nowy是一直在变化的。
AC_Code:
ll nowx,nowy;
ll f(ll x){ //返回当前层大的的元素
if(x<=0) return 0;
return 2ll*(1+x)*x;
}
int find(ll id){ //二分找层数
ll l=0,r=1e9;
while(l<r){
ll mid=(l+r)>>1;
if(f(mid)>=id) r=mid;
else l=mid+1;
}
return l;
}
void solve1(ll id){
ll n=find(id);
id-=f(n-1);
ll x,y;
if(id==0) x=0,y=0; //原点
else if(id==1) x=0,y=n;//y轴上
else if(id<=2*n-1){//x轴上方
ll t=id/2;
ll r=id%2;
if(!r) x=t,y=n-t;
else x=-t,y=n-t;
}
else if(id<=3*n){//第四象限
id-=2*n;
y=-id;
x=n-id;
}
else if(id<=4*n){//第三象限
id-=3*n;
x=-id;
y=-(n-id);
}
printf("%lld %lld\n",x-nowx,y-nowy);
nowx=x,nowy=y;
}
void solve2(ll x,ll y)
{
ll n=abs(x)+abs(y); // |x|+|y|=k,该层最左边的值为2*k(k+1);
ll id;
id=f(n-1);
if(y>0)
{
if(x>0) id+=2*abs(x);
else id+=2*abs(x)+1;
}
else
{
if(x>=0) id+=2*n+abs(y);
else id+=3*n+abs(x);
}
if(n==0) id=0;
printf("%lld\n",id);
nowx=x,nowy=y;
}
void run(){
ll op=rdll(),x,y,id;
if(op==1){
id=rdll();
solve1(id);
}
else{
x=rdll(),y=rdll();
solve2(x,y);
}
}
(训练的时候一直因为是推公式,推了两个小时,都没结果,隔了好几天才补出来)
CCPC-2020 黑龙江省赛——Let’s Get Married的更多相关文章
- CCPC 2020 长春站 部分简略题解
gym链接:CCPC 2020 changchun site A: 题目大意:商店里有若干个充值档位和首充奖励,你有\(n\)块钱问最多能拿到多少水. 解:由于档位不多可以直接枚举,整个二进制枚举一下 ...
- 2016 CCPC长春重现赛
1.2016中国大学生程序设计竞赛(长春)-重现赛 2.总结:会做的太少,应变能力也不行,或者说猜题目的能力不行 02 水 04 HDU 5914 Triangle 1.题意:1~n,n个数,问 ...
- 2016 CCPC 长春站现场赛总结(流水账= =)
总的来说在写这篇总结的时候心情还是愉悦的,因为第一次参加区域赛就越过铜直接拿了个银~开心之情无法用语言形容啊233= =... 从杭州坐火车到长春,去的时候24个小时,回来32个小时,在路上就花了2天 ...
- xdoj 2020校赛复盘
平时写东西都不喜欢复盘,这肯定不是一个好习惯,感觉每次花好几个小时甚至好几天写题目然后没写出来也不去看题解是一种很蠢的行为( 花了这么久时间打校赛,虽然水平很low,数据结构也不太会用,还是记录一下自 ...
- ccpc 2016 省赛
1.configuration if ide. 2.file import and export. 3.check your program more than once. ============= ...
- 记第二届CCPC全国女生赛参赛体验
离比赛时间已经有点久了,今天整理博客看到“”参赛体会“”这一分类,觉得记录一下也好 流水账记一下感受 因为题目我已经忘记了.. 第一次..那么久..大概有三个多小时在金牌区吧.. 然后就是一无所出了. ...
- Team Contests - Warmup(2016年多校热身赛,2016年黑龙江省赛)
Team Contests - Warmup A 题意:... 思路:不会 代码:... 随机 B 题意:给n个点,问是否有一个圆上有最少n/3个点 思路:随机大法好. 代码:... 递推 C 题意: ...
- CCPC 2019 网络赛 1006 Shuffle Card
// 签到题,比赛时候写双向链表debug了半天,发现有更好方法,记录一下. Shuffle Card HDU 6707 题意: 有一 \(n\) 张卡片,编号 \(1~n\) ,给定初始编号 ...
- CCPC 2019 网络赛 1002 array (权值线段树)
HDU 6703 array 题意: 给定一个数组 \(a_1,a_2, a_3,...a_n\) ,满足 \(1 \le a[i]\le n\) 且 \(a[i]\) 互不相同. 有两种 ...
随机推荐
- C++ part1
C++内存分配 references: C++ 自由存储区是否等价于堆? c++ new 与malloc有什么区别 C++, Free-Store vs Heap 1. 栈:由编译器自动分配释放,存放 ...
- Taro 3.x in Action
Taro 3.x in Action React, 小程序 https://taro-docs.jd.com/taro/docs/README Taro Next 跨端, 跨框架 Taro 是一个开放 ...
- WebXR All in One
WebXR All in One VR / WebVR WebXR https://www.w3.org/TR/webxr/ WebXR Device API https://immersiveweb ...
- DataBase All in One
DataBase All in One DB SQL: relational database management system NoSQL(Not only SQL / Non SQL): key ...
- C++算法代码——笨小猴
题目来自:http://218.5.5.242:9018/JudgeOnline/problem.php?id=1163 题目描述 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼.但是他找到了 ...
- Jump Server在docker中安装部署
安装部署: 1.准备机器: 官方环境要求: 硬件配置: 2个CPU核心, 4G 内存, 50G 硬盘(最低) 操作系统: Linux 发行版 x86_64 Python = 3.6.x Mysql S ...
- 将VMware工作站最小化到托盘栏
目录 前言 将VMware最小化到托盘栏的方法 1.下载 Trayconizer 2.解压 trayconizerw.zip 3.创建 VMware 快捷方式 4.修改 VMware 快捷方式 5.运 ...
- Jmeter的脚本参数化
一.变量 Jmeter中的变量用法:${变量名称} 变量定义:两种 1.用户定义变量 User Defined Variables 2.用户参数 User Parameters 1.1用户定义变量 ...
- 后端程序员之路 13、使用KNN进行数字识别
尝试一些用KNN来做数字识别,测试数据来自:MNIST handwritten digit database, Yann LeCun, Corinna Cortes and Chris Burgesh ...
- 二叉树、平衡二叉树、红黑树、B树、B+树与B*树
转: 二叉树.平衡二叉树.红黑树.B树.B+树与B*树 一.二叉树 1️⃣二叉查找树的特点就是左子树的节点值比父亲节点小,而右子树的节点值比父亲节点大,如图: 基于二叉查找树的这种特点,在查找某个节点 ...