中国(北方)大学生程序设计训练赛(第一周) (D E)
D题是个二分,每次check复杂度为O(n),类似于xdu_1068,只是一个是求积,一个是求商
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
typedef long double LF; const LF eps=1e-;
int a[],bb[];
LF b[];
LL A,B;
LL K;
LL rankof(LF x)
{
LL ans = ,now = B;
for(int i = ; i <= A; i++)
{
while(now)
{
if(a[i]*b[now] > x) now--;
else break;
}
ans += now;
}
return A*B-ans;
} void print()
{
puts("========");
for(int i=; i<=A; i++)
printf("%d ",a[i]);
puts("========");
for(int i=; i<=B; i++)
printf("%.2Lf ",b[i]);
puts("========");
} int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%lld%lld%lld",&A,&B,&K);
K--;
for(int i=; i<=A; i++)
scanf("%d",&a[i]);
for(int i=; i<=B; i++)
scanf("%d",&bb[i]),b[i]=(LF)1.0/bb[i];
sort(a+,a+A+);
sort(b+,b+B+);
// print();
LF l=a[]*b[],r=a[A]*b[B]+,mid;
while(r-l>eps)
{
mid=(l+r)/;
if(rankof(mid)<=K) r=mid;
else l=mid;
}
printf("%.2Lf\n",l);
}
}
D
E题是矩阵快速幂,注意sin函数有周期性
//话说这题模板没准备好,调了半天。。。(-。-;)
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long LL;
//////////////////////////////
LL T,n,f1,f2,ans;
///////////////////////////////
const long long N=;
const long long mod=; struct Mat
{
long long mat[N][N];
}; Mat Mut(Mat a,Mat b)
{
long long i,j,k;
Mat c;
memset(c.mat,,sizeof(c.mat));
for(k=; k<N; k++)
{
for(i=; i<N; i++)
{
if(a.mat[i][k])
for(j=; j<N; j++)
{
if(b.mat[k][j])
c.mat[i][j]=c.mat[i][j]+a.mat[i][k]*b.mat[k][j]%mod;
c.mat[i][j]=c.mat[i][j]%mod;
}
}
}
return c;
} Mat Pow(Mat a,long long n)
{
long long i,j;
Mat c;
for(i = ; i < N; ++i)
for(j = ; j < N; ++j)
c.mat[i][j] = (i == j);
for(; n; n>>=)
{
if(n&) c=Mut(c,a);
a=Mut(a,a);
}
return c;
} LL f(Mat A,long long n)
{
Mat A_;
A_=Pow(A,n);
LL ret=;
ret=(ret+A_.mat[][]*f2)%mod;
ret=(ret+A_.mat[][]*f1)%mod;
ret=(ret+A_.mat[][]*)%mod;
ret=(ret+A_.mat[][]*)%mod;
ret=(ret+A_.mat[][]*)%mod;
ret=(ret+A_.mat[][]*(-))%mod;
return (ret+mod)%mod;
} //=============================
Mat A; int main()
{
memset(A.mat,,sizeof(A.mat));
A.mat[][]=;A.mat[][]=;A.mat[][]=;
A.mat[][]=;
A.mat[][]=;
A.mat[][]=;
A.mat[][]=;
A.mat[][]=;
A.mat[][]=;
while(cin>>f1>>f2>>n)
{
// for(int n=1; n<15; n++)
// {
if(n==)
{
cout<<f1<<endl;
continue;
}
if(n==)
{
cout<<f2<<endl;
continue;
}
ans=f(A,n-);
cout<<ans<<endl;
// }
}
}
E
//3.6下午5点更新
整理了下模板后的E题代码
//p。s。 刚听队友提到矩阵可以用4*4的,感觉自己6*6蠢了些。。
//p。s。 修改时只需要修改列向量b和矩阵A的初始化即可
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long LL; LL n,ans;
const int N=;
const LL mod=1e9+;
LL b[]= {,,,,,-}; struct Mat
{
LL mat[N][N];
} A;
Mat Mut(Mat a,Mat b)
{
Mat c;
memset(c.mat,,sizeof(c.mat));
for(int k=; k<N; k++)
for(int i=; i<N; i++)
for(int j=; j<N; j++)
{
c.mat[i][j]+=a.mat[i][k]*b.mat[k][j]%mod;
c.mat[i][j]=c.mat[i][j]%mod;
}
return c;
}
Mat Qpow(Mat a,LL n)
{
Mat c;
for(int i=; i<N; ++i)
for(int j=; j<N; ++j)
c.mat[i][j]=(i==j);
for(; n; n>>=)
{
if(n&) c=Mut(c,a);
a=Mut(a,a);
}
return c;
}
LL cal(Mat A,LL n,LL b[])
{
Mat A_=Qpow(A,n-);
LL ret=;
for(int i=; i<N; i++)
{
ret+=A_.mat[][i]*b[i];
ret%=mod;
}
return (ret+mod)%mod;
}
void init_A()
{
memset(A.mat,,sizeof(A.mat));
A.mat[][]=,A.mat[][]=,A.mat[][]=;
A.mat[][]=;
A.mat[][]=;
A.mat[][]=;
A.mat[][]=;
A.mat[][]=;
}
int main()
{
init_A();
while(cin>>b[]>>b[]>>n) //b[1]即f1,b[0]即f2
{
ans=cal(A,n,b);
cout<<ans<<endl;
}
}
E——plus
中国(北方)大学生程序设计训练赛(第一周) (D E)的更多相关文章
- 中国(北方)大学生程序设计训练赛(第二周) (A B D G)
比赛链接 A题是KMP,先把A拼接到B的后面,然后利用next数组的意义(包括其具体含义,以及失配时的应用),得到ans #include<bits/stdc++.h> using nam ...
- Contest1585 - 2018-2019赛季多校联合新生训练赛第一场(部分题解)
Contest1585 - 2018-2019赛季多校联合新生训练赛第一场 C 10187 查找特定的合数 D 10188 传话游戏 H 10192 扫雷游戏 C 传送门 题干: 题目描述 自然数中除 ...
- HDU6578 2019HDU多校训练赛第一场 1001 (dp)
HDU6578 2019HDU多校训练赛第一场 1001 (dp) 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6578 题意: 你有n个空需要去填,有 ...
- HDU6579 2019HDU多校训练赛第一场1002 (线性基)
HDU6579 2019HDU多校训练赛第一场1002 (线性基) 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6579 题意: 两种操作 1.在序列末 ...
- 扎西平措 201571030332《面向对象程序设计 Java 》第一周学习总结
<面向对象程序设计(java)>第一周学习总结 正文开头: 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 ...
- 《JAVA程序设计》_第一周学习总结
20175217吴一凡 <java程序设计> 第一周学习总结 虽然已经做好了心理准备,但第一周的学习任务着实让我忙了整整三天,还是挺充实的吧.寒假已经在自己的电脑上安装好了虚拟机,我就在我 ...
- 201871010124 王生涛《面向对象程序设计JAVA》第一周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://edu.cnblogs.com/campus/xbsf/ ...
- 201871010132-张潇潇《面向对象程序设计(java)》第一周学习总结
面向对象程序设计(Java) 博文正文开头 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cn ...
- 网易云课堂_C语言程序设计进阶_第一周:数据类型:整数类型、浮点类型、枚举类型_1计算分数精确值
1 计算分数精确值(10分) 题目内容: 由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法. (0,1)之间的任何浮点数都可以表达为两个正整数的商, ...
随机推荐
- Java阶段性测试--知识点:数组,面向对象,集合、线程,IO流
#Java基础测试 涉及知识点:数组,面向对象,重载,重写,继承,集合,排序,线程,文件流 一.多项选择题(可能是单选,也可能是多选) 1.下列标识符命名不合法的是( D ). A.$_Name ...
- Java之【线程通信】--标志位练习
* 写两个线程,一个线程打印1-52,另一个线程答应字母A-Z. * 打印顺序为12A34B56C--5152Z.通过使用线程之间的通信协调关系. 注:分别给两个对象构造一个对象o,数字每打印两个或字 ...
- D语言需要大公司支持
Facebook开源flint:一个用D语言编写的C++静态代码分析器 http://www.csdn.net/article/2014-02-27/2818565-Building-and-open ...
- Web前端性能优化全攻略
网页制作poluoluo文章简介:Web 前端性能优化是个大话题,是个值得运维人员持续跟踪的话题,是被很多网站无情忽视的技术. Web 前端性能优化是个大话题,是个值得运维人员持续跟踪的话题,是被很多 ...
- DDD理论学习系列(5)-- 统一建模语言
DDD理论学习系列--案例及目录 1.引言 上一节讲解了领域模型,领域模型主要是将业务中涉及到的概念以面向对象的思想进行抽象,抽象出实体对象,确定实体所对应的方法和属性,以及实体之间的关系.然后将这些 ...
- Codility---MaxProfit
Task description A zero-indexed array A consisting of N integers is given. It contains daily prices ...
- iOS自定义弹出视图
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #78492a } p.p2 { margin: 0.0px 0. ...
- android蓝牙学习
学习路线 1 蓝牙权限 <uses-permission android:name="android.permission.BLUETOOTH" /> <uses ...
- rest api get 查询接口 多个参数
查询时,使用get,传递参数至服务器. angular js中,$http可以直接传递object,在get中,params:data 在服务端, query(x=x,y=y)可写成 query(** ...
- 查找oracle自己用户的表
查找oracle自己用户的表 select table_name from user_tables;