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]\) 互不相同. 有两种 ...
随机推荐
- mysql(四)------Mysql中的锁
1. 2 MySQL InnoDB 锁的基本类型 https://dev.mysql.com/doc/refman/5.7/en/innodb-locking.html 官网把锁分成了 8 类.所以我 ...
- 项目管理工具看板 All In One
项目管理工具看板 All In One Trello https://trello.com/ 我们来总结一下 Trello 是 Atlassian 旗下公司,所有使用 Trello 的人都将使用 At ...
- React Hooks vs React Class vs React Function All In One
React Hooks vs React Class vs React Function All In One React Component Types React Hooks Component ...
- js & void & undefined & null
js & void & undefined & null The void operator evaluates the given expression and then r ...
- node --experimental-modules & node.js ES Modules
node --experimental-modules & node.js ES Modules how to run esm modules in node.js cli $ node -v ...
- gitignore auto generator
gitignore auto generator .gitignore https://gitignore.io/ https://www.toptal.com/developers/gitignor ...
- Chrome blocked third-party cookies
Chrome blocked third-party cookies Chrome Incognito Chrome 无痕模式 https://support.google.com/chrome/an ...
- 为什么ElasticSearch比MySQL更适合全文索引
熟悉 MySQL 的同学一定都知道,MySQL 对于复杂条件查询的支持并不好.MySQL 最多使用一个条件涉及的索引来过滤,然后剩余的条件只能在遍历行过程中进行内存过滤,对这个过程不了解的同学可以先行 ...
- 27_MySQL数字函数(重点)
/* SALES部门中工龄超过20年的,底薪增加10% SALES部门中工龄不满20年的,底薪增加5% ACCOUNTING部门,底薪增加300元 RESEARCH部门里低于部门平均底薪的,底薪增加2 ...
- 微信小程序:日期组件picker的使用
1.页面代码 <view class="right"> <picker mode="date" value="{{material. ...