【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(记忆化搜索,深搜)
题目 //传说中的记忆化搜索,好吧,就是用深搜//多做题吧,,这个解法是搜来的,蛮好理解的 //题目大意:给出两堆牌,只能从最上和最下取,然后两个人轮流取,都按照自己最优的策略,//问说第一个人对多的 ...
随机推荐
- 开始Java之旅
从今天起,cgg将给大家讲讲Java这种神奇的东西. 至于配置环境变量,大家可以看看我的博客:环境变量上面有详细解释. 下面先给大家一个公式: public class [文件名]{ ...
- 2018.10.13 bzoj1070: [SCOI2007]修车(费用流)
传送门 费用流经典题目. 自我感觉跟TheWindy′sThe Windy'sTheWindy′s很像. 利用费用提前计算的思想来建图就行了. 代码: #include<bits/stdc++. ...
- java,arduino,C#之间的一些编码转换
1.C#-> Encoding.UTF8.GetBytes( "abc中") ->[97,98,99,228,184,173] java->byte[] bs= ...
- flask_模板
由于python中生成html比较繁琐,所以flask自动为你配置好jinjia2模板.下面我们开始学习模板应用吧~ 1.编写microblog模块 注:(1)这里为了渲染模板,我们从Flask导入了 ...
- 201709020工作日记--synchronized、ReentrantLock、读写锁
1.reentrantLock java.util.concurrent.lock 中的Lock 框架是锁定的一个抽象,它允许把锁定的实现作为 Java 类,而不是作为语言的特性来实现.这就为Lock ...
- Hdu428 漫步校园 2017-01-18 17:43 88人阅读 评论(0) 收藏
漫步校园 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submissi ...
- 用 PHP 编写 http 服务器
概述 众所周知,我们一般使用 PHP 开发Web程序时需要使用到比如Apache或Nginx等Web服务器来支持,那么有没有办法直接使用PHP开发HTTP服务器,答案当然是可以的,最近看了一遍Work ...
- IFNULL函数
MySQL函数里有一个很有用的函数IFNULL,它的形式是IFNULL(fieldA,fieldB),意义是当字段fieldA是NULL时取fieldB,不是NULL时取fieldA的值. 这个函数与 ...
- 执行Docker命令报错解决办法
shim error: docker-runc not installed on system 服务器重启以后,执行docker命令报以上错误,解决办法如下: cd /usr/libexec/do ...
- Web app制作细节:web app互动制作技巧
Google .微软.苹果三大巨头紧锣密鼓地在web app的研发产品领域圈地设岗,并试图建立以自己为中心的”云“服务平台,企图在web app时代到来的时候充当霸主.本文将围绕web app的制作, ...