CF593C Beautiful Function 构造

Stella981
• 阅读 534

正解:构造

解题报告:

传送门!

我知道我咕了好几篇博客似乎,,,但我不听!我就是要发新博客QAQ!(理不直气也壮

这题,想明白了还是比较简单的QwQ实现起来似乎也没有很复杂QAQ

首先思考一下,显然不可能构造出一个简单的函数就能通过所有的圆,一定是要一个个对症下药的

那反正我们要让它一一对应干脆就让它都穿过圆心嘛多方便

然后就考虑,怎么做到让它都穿过圆心呢

显然我们最好是能做出一个函数大概长这样:f(t)=h1(t)+h2(t)+h3(t)+...

然后我们通过某种方式使得它刚好取到第一个圆圆心位置x1的时候只有h1有值为y1,其他各项都=0

第二个圆第三个圆同理

那怎么构出来呢?

为什么不问问神奇绝对值呢?

于是考虑到绝对值的美妙性质

然后就做完了

具体怎么利用不难请读者自行课后思考

大概说下怎么构造出来趴,,,QwQ

首先我们要知道我们需要的h1(t)可以满足只有在t=t1时有值其他时候是没有值的

然后我们就可以这样:

令d=|t-t1| 做出(1-d+|1-d|)

当t1!=t时d>0且d为整数,所以d>=1,然后就会变成1-d-(1-d)=0

只有x1=x时d=0就变成1+1=2

欧克理解了绝对值怎么用之后就差不多了鸭

就对圆i,就给f加上⌊xi/2⌋*(1-d+|1-d|)  给g加上⌊yi/2⌋*(1-d+|1-d|)

然后就做完了!

昂对了还有就是,因为这里的/2是直接向下取整了的嘛

所以事实上它有可能不能通过圆心,而是离圆心有1的距离

但是因为它保证了每个圆的r>=1所以没有关系!

最后吐槽一下,,,它的输出极玄学的,,,我jio得你会这题思路并不能说明你能A此题,,,反正我最后依然没有理解到底要怎么个输出法,,,规则极多:D

CF593C Beautiful Function 构造 CF593C Beautiful Function 构造

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define rp(i,x,y) for(register ll i=x;i<=y;++i)

inline ll read()
{
    register char ch=getchar();register ll x=0;register bool y=1;
    while(ch!='-' && (ch>'9' || ch<'0'))ch=getchar();
    if(ch=='-')ch=getchar(),y=0;
    while(ch>='0' && ch<='9')x=(x<<1)+(x<<3)+(ch^'0'),ch=getchar();
    return y?x:-x;
}

int point[51][3],n;

void solve(int l , int r , int dir)
{
    if(l==r)printf("(%01d*abs(((1-abs((t-%d)))+abs((abs((t-%d))-1)))))",point[l][dir]/2,l,l);
    else{printf("(");solve(l,(l+r)>>1,dir);printf("+");solve(((l+r)>>1)+1,r,dir);printf(")");}
}

int main()
{
    n=read();
    rp(i,1,n)point[i][0]=read(),point[i][1]=read(),point[i][2]=read();\
    solve(1,n,0);printf("\n");solve(1,n,1);
    return 0;
}

所以这个是拿的神仙的代码,,,只改了下格式和读入QAQ

点赞
收藏
评论区
推荐文章
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
JDK 11 ZGC实现简介
JDK11ZGC简介注1:本文翻译自这篇文章(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fdinfuehr.github.io%2Fblog%2Fafirstlookintozgc%2F)注2:我有了新的独立博客地址(https://
Stella981 Stella981
3年前
JS nodeJs 的日期计算
dateutils前端引用<script type"text/javascript" src"dateutils.min.js"</script下载传送门,猛击我(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.co
Stella981 Stella981
3年前
Hexo博客:部署与插件
同步自我的个人博客墨语的后花园(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.mosdev.xyz%2F),请多多指教。在我两年前写的博客的搭建博客的简单步骤的这篇博文中,我简单的介绍的如何搭建一个基于Github的Hexo博客,现在我来介绍一些其他的用法和部
Stella981 Stella981
3年前
RxJava RxPermissions 动态权限 简介 原理 案例 MD
Markdown版本笔记我的GitHub首页我的博客我的微信我的邮箱MyAndroidBlogs(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fbaiqiantao%2FMyAndroidBlogs)baiqiantao(https
Stella981 Stella981
3年前
ORM数据库框架 greenDAO SQLite MD
Markdown版本笔记我的GitHub首页我的博客我的微信我的邮箱MyAndroidBlogs(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fbaiqiantao%2FMyAndroidBlogs)baiqiantao(https
Stella981 Stella981
3年前
RxJava 操作符 on和doOn 线程切换 调度 Schedulers 线程池 MD
Markdown版本笔记我的GitHub首页我的博客我的微信我的邮箱MyAndroidBlogs(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fgithub.com%2Fbaiqiantao%2FMyAndroidBlogs)baiqiantao(https
Stella981 Stella981
3年前
Codeforces 848C Goodbye Souvenir [CDQ分治,二维数点]
洛谷(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.luogu.org%2Fproblemnew%2Fshow%2FCF848C)Codeforces(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fco
Stella981 Stella981
3年前
Android 开发 MediaRecorder视频录制入门
前言  MediaRecorder是AndroidSDK提供用于录制音视频,关于音频的录制在我另一篇博客里已经介绍.传送门:https://www.cnblogs.com/guanxinjing/p/10976026.html(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2
Wesley13 Wesley13
3年前
51Nod1709 复杂度分析
似乎好久没发过博客了哎……好不容易有空写道题了,发个博客骗点访问量传送门(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.51nod.com%2FonlineJudge%2FquestionCode.html%23%21problemId%3D1709)出题人的做法是$O