中国(北方)大学生程序设计训练赛(第一周) (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)之间的任何浮点数都可以表达为两个正整数的商, ...
随机推荐
- TreeSet集合排序方式二:定制排序Comparator
Comparator有两种实现方式: 1,匿名内部类 2,创建一个类用于实现Comparator,该类创建的对象就是比较器 Person类 public class Person implements ...
- 架构师之路--应用架构的选型和dubbo
这个选型主要决定于系统复杂度.先回顾一下. 1>单一应用架构:对于一个流量很小的网站来说,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本.之前在上家公司做过一个微信公众号的开发就是基 ...
- Unity应用架构设计(11)——一个网络层的构建
对于客户端应用程序,免不了和远程服务打交道.设计一个良好的『服务层』能帮我们规范和分离业务代码,提高生产效率.服务层最核心的模块一定是怎样发送请求,虽然Mono提供了很多C#网络请求类,诸如WebCl ...
- Java中的框架基础面试知识
spring mvc 工作机制(原理): DispatcherServlet主要用作职责调度工作,本身主要用于控制流程 Spring mvc运行原理 1.springmvc将所有的请求都提交给Disp ...
- Java虚拟机14:Java对象大小、对象内存布局及锁状态变化
一个对象占多少字节? 关于对象的大小,对于C/C++来说,都是有sizeof函数可以直接获取的,但是Java似乎没有这样的方法.不过还好,在JDK1.5之后引入了Instrumentation类,这个 ...
- 抓包工具 - Fiddler(详细介绍)
Fiddler的详细介绍 一.Fiddler与其他抓包工具的区别 1.Firebug虽然可以抓包,但是对于分析http请求的详细信息,不够强大.模拟http请求的功能也不够,且firebug常常是需要 ...
- Android之使用JAVA占位符格式数据(很实用)
小编虽然是学java出生,但工作之后就一直从事android开发,很多java基础都忘记完了,最近一年从ES换到了AS,原来的很多习惯都收到了挑战,比如我喜欢ES写方法的时候先在JAVA projec ...
- Ubuntu发行版升级
从UK 13.10升级到UK 14.10 方法一: 1.sudo apt-get update 2.sudo update-manager -c -d 3.选择upgrade(升级) 方法二 ...
- .NET 开发环境搭建
概述 在接下来的时间里,将会入手ASP.NET MVC这一专题,尽量用最快的时间,最有效的方法,分别从深度和广度上剖析这一专题,力求讲明白.讲透.以此来与大家分享,力求达到共同学习,共同交流,共同进步 ...
- 解决ionic在Android和iOS的一些样式上的冲突
//设置默认返回按钮的文字 $ionicConfigProvider.backButton.previousTitleText(false).text('返回'); // 设置全局 $http 超时 ...