【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(记忆化搜索,深搜)
题目 //传说中的记忆化搜索,好吧,就是用深搜//多做题吧,,这个解法是搜来的,蛮好理解的 //题目大意:给出两堆牌,只能从最上和最下取,然后两个人轮流取,都按照自己最优的策略,//问说第一个人对多的 ...
随机推荐
- myeclipse 中 svn 更新 提交 同步资源库 详细解释下他们的功能
原理是这样的 svn服务器一般放在公共的服务器上,大家连这个服务器,在MyEclipse上使用svn控件 可以下载svn上的项目至本地,所以很多公司将开发要用到的软件都放在svn上,有同事来只要连上s ...
- 简单的socket编程
1.socket 服务器搭建 实例化socket服务器,循环获取请求 package com.orange.util; import java.io.IOException; import java. ...
- KBMMW 4.6 正式版发布
喜大普奔迎新年! Merry Christmas! We are happy to announce the release of kbmMW v. 4.60.00 Professional and ...
- 2018.10.20 NOIP模拟 巧克力(trie树+dfs序+树状数组)
传送门 好题啊. 考虑前面的32分,直接维护后缀trietrietrie树就行了. 如果#号不在字符串首? 只需要维护第一个#前面的字符串和最后一个#后面的字符串. 分开用两棵trie树并且维护第一棵 ...
- 2018.08.20 loj#117. 有源汇有上下界最小流(模板)
传送门 这题真有意思... 先是有一个点T的我怀疑人生. 然后学大佬们封装了我的dinic就莫名其妙的过了??? 所以说锅给谁好呢? 给dinic吧... 解法就是先求出一段可行流,然后从t到s加一条 ...
- Linux设置开机启动项
第一种方式:ln -s 建立启动软连接 在Linux中有7种运行级别(可在/etc/inittab文件设置),每种运行级别分别对应着/etc/rc.d/rc[0~6].d这7个目录 Tips:/etc ...
- 字典树Java实现
Trie树的原理 Trie树也称字典树,因为其效率很高,所以在在字符串查找.前缀匹配等中应用很广泛,其高效率是以空间为代价的. 利用串构建一个字典树,这个字典树保存了串的公共前缀信息,因此可以降低查询 ...
- 【转】web应用缓慢故障分析
在这以后里分享一篇关于web应用缓慢的分析过程,感觉挺有用的. 原文出处:http://xjsunjie.blog.51cto.com/999372/751585 友在一家购物网站做运维不久,今日打电 ...
- i9-9900k烤机
新装机一台,记录烤机参数 硬件配置: cpu: i9-9900k 主板:技嘉Z390 AORUS PRO WIFI 内存:海盗船ddr4 3200 显卡:技嘉gtx1080ti 硬盘:三星970Pro ...
- python logging 实现的进程安全的文件回滚日志类
python标准库中的logging模块在记录日志时经常会用到,但在实际使用发现它自带的用于本地日志回滚的类 logging.handlers.RotatingFileHandler 在多进程环境下会 ...