cf593c
题意:有n(n<=50)个圆,给出每个圆的圆心坐标和半径r(r>=2)。
求两个函数f(t),g(t),t的取值为0到50的整数,每次令x=f(t),y=g(t),产生一个51个点的集合。要求这个点集对于每个圆至少有一个点落在圆内或圆周上。
g和f中只能使用常数,加法,乘法,减法,绝对值运算。
输出f和g。
分析:我们设计这样一个多项式,包含n项,当t取值为i的时候,只有第i项的值不为0。其余项均为0。
设计方案是每项都乘以这样一个系数,第i项需要乘以系数1/2×( 1-abs(t-i) + abs( 1 - abs(t-i) ) )。
当只有当i==t的时候该系数才不为0。
原理如下:如果我们设A=1-abs(t-i)的话,那么系数就是(A+abs(A))/2。
当i=1时,A和abs(A)关于未知数t的图像如下图所示。两者相加只有中间的重叠部分不会抵消。

这样我们就让f(t)=sigma(xi/2×( 1-abs(t-i) + abs( 1 - abs(t-i) ) )),由于圆的半径至少为2,所以xi/2取整带来的误差不会产生影响。
g(t)同理。
#include <cstdio>
#include <string>
#include <iostream>
using namespace std; int n; string make(int i, int a)
{
char st[];
sprintf(st, "%d", i);
string num = string(st);
string ret = "((1-abs((t-" + num + ")))+abs((1-abs((t-" + num + ")))))";
sprintf(st, "%d", a/);
num = string(st);
return "(" + num + "*" + ret + ")";
} int main()
{
scanf("%d", &n);
string f = string("");
string g = string("");
for (int i = ; i < n; i++)
{
int x, y, r;
scanf("%d%d%d", &x, &y, &r);
f = "(" + f + "+" + make(i, x) + ")";
g = "(" + g + "+" + make(i, y) + ")"; }
cout << f << endl;
cout << g << endl;
return ;
}
cf593c的更多相关文章
- CF593C Beautiful Function 构造
正解:构造 解题报告: 传送门! 我知道我咕了好几篇博客似乎,,,但我不听!我就是要发新博客QAQ!(理不直气也壮 这题,想明白了还是比较简单的QwQ实现起来似乎也没有很复杂QAQ 首先思考一下,显然 ...
随机推荐
- 安装win7x64、x86总提示文件出错或安装大型软件出错或0x0000001a、0x0000003b蓝屏
从不同地方下载好几个安装包,安装时候到展开文件步骤总是提示文件出错,无法安装下去. 这样可以确认不会是安装包出问题. 搜索原因,偶然看到可能与内存有关. 就检测了一遍,过程:控制面板>管理工具& ...
- 谁让APP工程师产生了泡沫?
这两年移动互联网比较火,移动APP的开发人员也是比较紧缺. 面试了一个做APP的,能力很一般,态度也比较傲慢.最后感觉肯定不会用这个人了,但是出于验证自己想法的目的,还是很诚恳地以一个决定录取他的态度 ...
- knockoutJS学习笔记04:监控属性
一.语法介绍 先来看一个简单的例子: <span data-bind="text:name"></span> var obj = {name:ko.obse ...
- Visual Studio 2015的坑:中文字符串编译后成乱码
(2015年8月5日更新:微软已经修复了Roslyn的这个bug,详见 https://github.com/dotnet/roslyn/pull/4303 ) 昨天,我们用VS2015编译了博客程序 ...
- 分享录制的正则表达式入门、高阶以及使用 .NET 实现网络爬虫视频教程
我发布的「正则表达式入门以及高阶教程」,欢迎学习. 课程简介 正则表达式是软件开发必须掌握的一门语言,掌握后才能很好地理解到它的威力: 课程采用概念和实验操作 4/6 分隔,帮助大家理解概念后再使用大 ...
- Android开发自学笔记(Android Studio)—4.2TextView及其子类
一.引言 TextView是我们最常用的一个控件了,它类似于C# Winform程序中的Lable,Java Swing编程中的JLable,不过相对功能更强大些,但从功能上看,它其实就是个文字编辑器 ...
- C 语言学习 第二次作业总结
本次作业内容,主要有以下几点: 新建 coding 帐号,且使用 coding 上传本次作业的代码 Printf及条件判断语句的使用 作业总结 作业总结: 同学们开始渐入佳境,能够较为流畅的写出合理的 ...
- LCS问题
最长公共子序列问题 1.这里pre数组表示回溯的方式,状态转移方程!!! #include <iostream> #include <algorithm> #include & ...
- html与htm区别
1.index.html与index.htm同时有,先访问.html 2.htm是为了兼容以前的DOS系统.
- 推公式 HDU 2552
T 给你2个值 求另外一个 需要推一下 tan(a+b)=(tan(a)+tan(b))/(1-tan(a)*tan(b)); 等式左右取tan tan(atan(a))=a 1/s=tan(...) ...