Codeforces 935 简单几何求圆心 DP快速幂求与逆元
A
- #include <bits/stdc++.h>
- #define PI acos(-1.0)
- #define mem(a,b) memset((a),b,sizeof(a))
- #define TS printf("!!!\n")
- #define pb push_back
- #define inf 1e9
- //std::ios::sync_with_stdio(false);
- using namespace std;
- //priority_queue<int,vector<int>,greater<int>> que; get min
- const double eps = 1.0e-8;
- typedef pair<int, int> pairint;
- typedef long long ll;
- typedef unsigned long long ull;
- //const int maxn = 3e5 + 10;
- const int maxm = ;
- const int turn[][] = {{, }, { -, }, {, }, {, -}};
- //priority_queue<int, vector<int>, less<int>> que;
- //next_permutation
- ll mod = 3e7;
- int weight;
- int from,to;
- vector<pair<int,int> > place[];
- int main()
- {
- int anser=;
- int n;
- cin >> n;
- for(int i=; i<=n; i++)
- {
- if(n%i==)
- anser++;
- }
- cout<<anser<<endl;
- }
B
- #include <bits/stdc++.h>
- #define PI acos(-1.0)
- #define mem(a,b) memset((a),b,sizeof(a))
- #define TS printf("!!!\n")
- #define pb push_back
- #define inf 1e9
- //std::ios::sync_with_stdio(false);
- using namespace std;
- //priority_queue<int,vector<int>,greater<int>> que; get min
- const double eps = 1.0e-8;
- typedef pair<int, int> pairint;
- typedef long long ll;
- typedef unsigned long long ull;
- //const int maxn = 3e5 + 10;
- const int maxm = ;
- const int turn[][] = {{, }, { -, }, {, }, {, -}};
- //priority_queue<int, vector<int>, less<int>> que;
- //next_permutation
- ll mod = 3e7;
- int num[];
- int check(int x,int y)
- {
- if(x==y)
- return ;
- if(x>y)
- return ;
- return ;
- }
- int main()
- {
- int n;
- int anser=;
- int nowx,nowy;
- nowx=nowy=;
- cin >> n;
- string a;
- cin >> a;
- int now=;
- int belong=;
- for(int i=; i<n; i++)
- {
- if(a[i]=='U')
- nowy++;
- else
- nowx++;
- belong=check(nowx,nowy);
- num[i]=belong;
- if(i>=)
- if(num[i]+num[i-]==)
- anser++;
- // cout<<i<<" "<<nowx<<" "<<nowy<<endl;
- // cout<<anser<<endl;
- }
- cout<<anser<<endl;
- }
C
简单几何 题意题
给你一个圆和一个点,让你在给定圆内画一个圆,使得答案圆不能包含给定点,而且使得给定圆没有被答案圆覆盖的面积最小。输出答案圆的圆心和半径即可。
- #include <bits/stdc++.h>
- #define PI acos(-1.0)
- #define mem(a,b) memset((a),b,sizeof(a))
- #define TS printf("!!!\n")
- #define pb push_back
- #define inf 1e9
- //std::ios::sync_with_stdio(false);
- using namespace std;
- //priority_queue<int,vector<int>,greater<int>> que; get min
- const double eps = 1.0e-8;
- typedef pair<int, int> pairint;
- typedef long long ll;
- typedef unsigned long long ull;
- //const int maxn = 3e5 + 10;
- const int maxm = ;
- const int turn[][] = {{, }, { -, }, {, }, {, -}};
- //priority_queue<int, vector<int>, less<int>> que;
- //next_permutation
- ll mod = 3e7;
- int num[];
- int main()
- {
- double R,x1,x2,y1,y2;
- cin >>R >> x1 >> y1 >> x2 >> y2;
- double xap,yap,r;
- double len=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
- double dis1=sqrt(len);
- if(len>=R*R)
- {
- printf("%.7f %.7f %lf",x1,y1,R);
- return ;
- }
- if(x1==x2&&y1==y2)
- {
- printf("%.7f %.7f %.7f",x1+R/,y1,R/);
- return ;
- }
- r=(R+dis1)/2.0;
- xap=x2+(x1-x2)*(r/dis1);
- yap=y2+(y1-y2)*(r/dis1);
- printf("%.7f %.7f %lf",xap,yap,r);
- }
D
给你两个长为N包含0的数字串 0可以变化为1-k的任何数
要求你求出第一个串比第二个大的可能性(一个分数)模上1e9+7
总共的可能性数量很好想 是K的0数量次方 再把分数转化为求逆元就变为:比原串大的方案数乘以 总方案数对MOD的逆元 模MOD
dp[i][0]表示到第i个两个字典序相等的方案数 dp[i][1]表示到第i个第一个比第二个字典序大的方案数
dp[i][1]可以由dp[i-1][0]与dp[i-1][1]转换而来 而 dp[i][0]只能由dp[i-1][0]转换而来
所以分类讨论
1.a=ai b=bi时
相等时
dp[i][0]=dp[i-1][0]
dp[i][1]=dp[i-1][1]
前大于后时
dp[i][1]=dp[i-1][0]+dp[i-1][1]
dp[i][0]=0
后大于前时
dp[i][1]=dp[i][0]=0
2.a=0 b=bi时
dp[i][0]=dp[i-1][0]
dp[i][1]=dp[i-1][1]*k+dp[i-1][0]*(k-bi)
3.a=ai b=0时
dp[i][0]=dp[i-1][0]
dp[i][1]=dp[i-1][1]*k+dp[i-1][0]*(b-1)
4.a=b=0
dp[i][0]=dp[i-1][0]*k
dp[i][1]=dp[i-1][1]*k*k+dp[i-1][0]*(k-1)*k/2
一直dp到n
- #include <bits/stdc++.h>
- #define PI acos(-1.0)
- #define mem(a,b) memset((a),b,sizeof(a))
- #define TS printf("!!!\n")
- #define pb push_back
- #define inf 1e9
- //std::ios::sync_with_stdio(false);
- using namespace std;
- //priority_queue<int,vector<int>,greater<int>> que; get min
- const double eps = 1.0e-8;
- typedef pair<int, int> pairint;
- typedef long long ll;
- typedef unsigned long long ull;
- const int turn[][] = {{, }, { -, }, {, }, {, -}};
- //priority_queue<int, vector<int>, less<int>> que;
- //next_permutation
- const int mod = 1e9+;
- int sum=;
- ll dp[][];
- int num[][];
- ll quickpow(ll x,ll n)
- {
- ll res=;
- while(n)
- {
- if(n&)res=res*x%mod;
- x=x*x%mod;
- n/=;
- }
- return res;
- }
- int main()
- {
- ll n,m;
- cin >> n >> m;
- for(int i=; i<=; i++)
- for(int j=; j<=n; j++)
- {
- scanf("%d",&num[i][j]);
- }
- mem(dp,);
- dp[][]=;
- for(int i=; i<=n; i++)
- {
- sum+=(num[][i]==);
- sum+=(num[][i]==);
- if(num[][i]&&num[][i])
- {
- if(num[][i]==num[][i])
- {
- dp[i][]=dp[i-][];
- dp[i][]=dp[i-][];
- }
- else if(num[][i]>num[][i])
- {
- dp[i][]=(dp[i-][]+dp[i-][])%mod;
- dp[i][]=;
- }
- else
- {
- dp[i][]=;
- dp[i][]=dp[i-][];
- }
- }
- else if(num[][i]==&&num[][i]==)
- {
- dp[i][]=dp[i-][]*m%mod;
- dp[i][]=((dp[i-][]*((m*m)%mod)%mod+dp[i-][]*((m-)*m/)%mod)%mod)%mod;
- }
- else if(num[][i]==)
- {
- dp[i][]=dp[i-][]%mod;
- dp[i][]=(dp[i-][]*m%mod+dp[i-][]*(m-num[][i])%mod)%mod;
- }
- else if(num[][i]==)
- {
- dp[i][]=dp[i-][]%mod;
- dp[i][]=(dp[i-][]*m%mod+dp[i-][]*(num[][i]-)%mod)%mod;
- }
- }
- ll anser=dp[n][]*quickpow(quickpow(m,sum),mod-)%mod;
- cout<<anser<<endl;
- }
Codeforces 935 简单几何求圆心 DP快速幂求与逆元的更多相关文章
- Codeforces Round #536 (Div. 2) F 矩阵快速幂 + bsgs(新坑) + exgcd(新坑) + 欧拉降幂
https://codeforces.com/contest/1106/problem/F 题意 数列公式为\(f_i=(f^{b_1}_{i-1}*f^{b_2}_{i-2}*...*f^{b_k} ...
- 【bzoj4870】[Shoi2017]组合数问题 dp+快速幂/矩阵乘法
题目描述 输入 第一行有四个整数 n, p, k, r,所有整数含义见问题描述. 1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1 输出 一行一个整数 ...
- codeforce 227E 矩阵快速幂求斐波那契+N个连续数求最大公约数+斐波那契数列的性质
E. Anniversary time limit per test2 seconds memory limit per test256 megabytes inputstandard input o ...
- HDU4869:Turn the pokers(快速幂求逆元+组合数)
题意: 给出n次翻转和m张牌,牌相同且一开始背面向上,输入n个数xi,表示xi张牌翻转,问最后得到的牌的情况的总数. 思路: 首先我们可以假设一开始牌背面状态为0,正面则为1,最后即是求ΣC(m,k) ...
- POJ-3070Fibonacci(矩阵快速幂求Fibonacci数列) uva 10689 Yet another Number Sequence【矩阵快速幂】
典型的两道矩阵快速幂求斐波那契数列 POJ 那是 默认a=0,b=1 UVA 一般情况是 斐波那契f(n)=(n-1)次幂情况下的(ans.m[0][0] * b + ans.m[0][1] * a) ...
- 小白月赛13 小A的路径 (矩阵快速幂求距离为k的路径数)
链接:https://ac.nowcoder.com/acm/contest/549/E来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...
- hdu 2065 "红色病毒"问题(快速幂求模)
n=1 --> ans = 2 = 1*2 = 2^0(2^0+1) n=2 --> ans = 6 = 2*3 = 2^1(2^1+1) n=3 --> ans = 20 ...
- Product Oriented Recurrence(Codeforces Round #566 (Div. 2)E+矩阵快速幂+欧拉降幂)
传送门 题目 \[ \begin{aligned} &f_n=c^{2*n-6}f_{n-1}f_{n-2}f_{n-3}&\\ \end{aligned} \] 思路 我们通过迭代发 ...
- hdu4686 简单的矩阵快速幂求前n项和
HDU4686 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4686 题意:题目说的很清楚了,英语不好的猜也该猜懂了,就是求一个表达式的前n项和,矩阵 ...
随机推荐
- HBuilder使用逍遥Android模拟器
Microvirt HBuilder使用逍遥Android模拟器 1.逍遥模拟器安装 地址: 点我下载 2.连接注意事项 a. 复制adb等文件 HBuilder安装目录中tools文件夹下的三个文件 ...
- git本地分支推送到远程分支
1.创建的创建和初始化 创建git仓库可以在远端创建一个仓库, 然后check到本地,在本地的文件里创建工程文件,然后提交 也可以将本地现有的工程和远端的空仓库关联 本地创建了一个工程 iOSDemo ...
- Centos7系统备份与恢复教程
原文地址:https://www.cnblogs.com/fang888/p/8473485.html Centos系统备份与恢复教程 tar: 特点 1.保留权限 2.适合备份整个目录 3.可以选择 ...
- Mysql 数据库锁表的原因和解决方法
摘自: https://www.csdn.net/gather_2f/MtTaIgxsMTM5NC1ibG9n.html 锁表的原因:当多个连接(数据库连接)同时对一个表的数据进行更新操作,那么速度将 ...
- VC程序禁用提示框
程序需要24小时不中断 如果错误提示了的话 runtime error 监控程序就不能重启 下面是网上找的 方便以后用到 http://blog.csdn.net/yuzhiyuxia/article ...
- 【后台管理系统】—— Ant Design Pro 项目爬坑(一)
1.表单rule中可以分对象处理不同规则 <FormItem label="类型名称" {...formLayout}> { form.getFieldDecorato ...
- webpack前置知识2(JavaScript项目初始化)
所有的JavaScript项目都是在终端输入npm init -y进行项目初始化,如果要自定义项目规则,去掉 -y 参数. vscode终端快捷键ctrl+` 初始化 运行上述命令后,项目内会新建一个 ...
- 一、Python环境的搭建
1.python官方下载地址:https://www.python.org/:python现在有两个版本:python2.7.x和python3.x 2.安装:一路下一步,默认安装 3.配置环境变量: ...
- C# WinForm开发系列学习 地址 很详细
http://www.cnblogs.com/peterzb/archive/2009/07/27/1531910.html
- fiddler之数据分析和查看(inspectors)-抓包
在instpectors中主要是对请求和响应进行查看和分享,监听请求的响应内容.他有多个分页标签.界面分上下两部分,上面部分显示请求的相关信息:下面部分显示响应相关信息.简单说明常用的几个分页标签 一 ...