【GDOI2018模拟8】 数学竞赛 三角函数性质+记忆化搜索



数据范围:p,q≤20。
只能说我整个人傻逼了.....
我们考虑三角函数的部分性质:
$sin(x)=\sqrt{ 1-cos^2(x)}$
$cos(x)=\sqrt{1-sin^2(x)}$
$tan(x)=\frac{sin(x)}{cos(x)}$
根据这三条公式,我们可以据此推出以下六种转移方式,即:
$arcsin(x)→cos(x)\ or\ tan(x)$
$arccos(x)→sin(x)\ or\ tan(x)$
$arctan(x)→sin(x)\ or\ cos(x)$
我们又根据上述的部分性质,我们用分数$\frac{\sqrt{a}}{\sqrt{b}}$去表示x,其中a,b均为非负整数。
不难根据以下转移式子得到转移出的根式
由$arcsin(x)→cos(x)$得到$\frac{\sqrt{b-a}}{\sqrt{b}}$
由$arcsin(x)→tan(x)$得到$\frac{\sqrt{a}}{\sqrt{b-a}}$
由$arccos(x)→sin(x)$得到$\frac{\sqrt{b-a}}{\sqrt{b}}$
由$arccos(x)→tan(x)$得到$\frac{\sqrt{b-a}}{\sqrt{a}}$
由$arctan(x)→sin(x)$得到$\frac{\sqrt{a}}{\sqrt{a+b}}$
由$arctan(x)→cos(x)$得到$\frac{\sqrt{b}}{\sqrt{a+b}}$
然后简单地记忆搜索以下就可以了。
#include<bits/stdc++.h>
using namespace std;
int vis[][]={};
int x,y;
int cnt[]={}; int use=;
void add(int x,int y){cnt[++use]=y; cnt[++use]=x;}
int dfs(int a,int b){
if(a>||b>||a<||b<=||(a==&&b!=)) return ;
int d=__gcd(a,b);
a/=d; b/=d;
if(a==x&&b==y) return ;
if(vis[a][b]) return ;
vis[a][b]=;
if(dfs(b-a,b)) {add(,); return ;}
if(dfs(a,b-a)) {add(,); return ;}
if(dfs(a,a+b)) {add(,); return ;}
if(dfs(b,a+b)) {add(,); return ;}
if(dfs(b-a,b)) {add(,); return ;}
if(dfs(b-a,a)) {add(,); return ;}
return ;
} int main(){
string s; cin>>s;
scanf("%d/%d",&x,&y);
int d=__gcd(x,y);
x/=d; y/=d;
x=x*x; y=y*y;
dfs(,);
while(use--){
printf("%d",cnt[use+]);
}
}
【GDOI2018模拟8】 数学竞赛 三角函数性质+记忆化搜索的更多相关文章
- POJ 2704 Pascal's Travels 【DFS记忆化搜索】
题目传送门:http://poj.org/problem?id=2704 Pascal's Travels Time Limit: 1000MS Memory Limit: 65536K Tota ...
- 2017广东工业大学程序设计竞赛决赛 题解&源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)
心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起“唱” ...
- UVa 11762 Race to 1 (数学期望 + 记忆化搜索)
题意:给定一个整数 n ,然后你要把它变成 1,变换操作就是随机从小于等于 n 的素数中选一个p,如果这个数是 n 的约数,那么就可以变成 n/p,否则还是本身,问你把它变成 1 的数学期望是多少. ...
- uva 11762 数学期望+记忆化搜索
题目大意:给一个正整数N,每次可以在不超过N的素数中随机选择一个P,如果P是N的约数,则把N变成N/p,否则N不变,问平均情况下需要多少次随机选择,才能把N变成1? 分析:根据数学期望的线性和全期望公 ...
- [CSP-S模拟测试]:集合合并(记忆化搜索)
题目传送门(内部题133) 输入格式 第一行一个正整数$n$. 第二行$n$个正整数$a_i$,表示一开始有$S_i=\{a_i\}$ 输出格式 输出一个非负整数表示最大的收益之和 样例 样例输入: ...
- [CSP-S模拟测试]:彩球问题(记忆化搜索)
题目传送门(内部题91) 输入格式 第一行一个正整数$N$,表示颜色种类数. 第二行$N$个正整数$k[i],k[i]$表示第$i$种颜色的数量$(1\leqslant k[i]\leqslant 3 ...
- Codevs_1017_乘积最大_(划分型动态规划/记忆化搜索)
描述 http://codevs.cn/problem/1017/ 给出一个n位数,在数字中间添加k个乘号,使得最终的乘积最大. 1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提 ...
- 记忆化搜索 codevs 2241 排序二叉树
codevs 2241 排序二叉树 ★ 输入文件:bstree.in 输出文件:bstree.out 简单对比时间限制:1 s 内存限制:128 MB [问题描述] 一个边长为n的正三 ...
- HDU 4597 Play Game(记忆化搜索,深搜)
题目 //传说中的记忆化搜索,好吧,就是用深搜//多做题吧,,这个解法是搜来的,蛮好理解的 //题目大意:给出两堆牌,只能从最上和最下取,然后两个人轮流取,都按照自己最优的策略,//问说第一个人对多的 ...
随机推荐
- 2018.08.29 NOIP模拟 table(拓扑排序+建图优化)
[描述] 给出一个表格,N 行 M 列,每个格子有一个整数,有些格子是空的.现在需要你 来做出一些调整,使得每行都是非降序的.这个调整只能是整列的移动. [输入] 第一行两个正整数 N 和 M. 接下 ...
- cgo -rpath指定动态库路径
// #cgo CFLAGS: -Wall // #cgo LDFLAGS: -Wl,-rpath="/home/liuliang/ffmpeg-build/lib" // #cg ...
- 关于调用Feign client超时得不到结果的问题
需要在调用方的配置文件加入以下配置 hystrix.command.default.execution.timeout.enabled: false ribbon: ConnectTimeout: R ...
- python nan 变成0
在使用numpy数组的过程中时常会出现nan或者inf的元素,可能会造成数值计算时的一些错误.这里提供一个numpy库函数的用法,使nan和inf能够最简单地转换成相应的数值. numpy.nan_t ...
- chrome添加 postman扩展程序图文简介
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.无论是web前端开发 或 android.ios开发,只要涉及调用后端接口,postman这类型工具就必不可少了.相对于 ...
- Android 3D游戏开发
OpenGL ES(OpenGL Embedded System) Android 3D游戏开发技术宝典:OpenGL ES 2.0(android 3d游戏开发技术宝典 -opengl es 2.0 ...
- 用Execute操作数据库
1.原型是:_ConnectionPtr Execute( _bstr_t CommandText, VARIANT * RecordsAffected, long Options ); 参数 1. ...
- poj3321-Apple Tree(DFS序+树状数组)
Apple Tree Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 36442 Accepted: 10894 Desc ...
- DFS剪枝处理HDU1010
http://acm.hdu.edu.cn/showproblem.php?pid=1010 题意很好理解,不是最短路,而是dfs,虽然地图不算大,稍微注意一点的dfs也能险过,但是700+ms和78 ...
- spring集成struts2
Struts2前身是WebWork,核心并没有改变,其实就是把WebWork改名为struts2,与Struts1一点关系没有. Struts2中通过ObjectFactory接口实现创建及获取Act ...