bc#29 做题笔记
昨天的bc被坑惨了= =
本来能涨rating的大好机会又浪费了。。。大号已弃号
A:第一反应是高精度,结果模板找不到了= =,然后现学现卖拍了个java的BigInteger+快速幂,调了好半天不说还TLE。貌似这题就在卡java
实际上尼玛等号两边取log不就完了么。。。
卒
B:A题调了半天,开始做B的时候已经没多少时间了。。。
找出了斐波那契数列+前缀和的规律,结果把用矩阵快速幂求斐波那契前n项和的那个梗又忘了
最后out of submit time
卒
事实证明还是要多做成套的题,这样才能发现很多平时难以察觉到的问题。
-------------------------------------------------
补上AC Code:
A:高你妹妹的高精度
#include <iostream>
#include <cstdio>
#include <cmath>
#define eps 1e-8
using namespace std; int fcmp(double a,double b)
{
double tm=fabs(a-b);
if (tm<eps) return ; //a==b
else
return a<b?-:;
} int a,b,c,d; int main()
{
while(~scanf("%d%d%d%d",&a,&b,&c,&d))
{
double aa=log(a),cc=log(c);
aa=aa*b; cc=cc*d;
switch (fcmp(aa,cc))
{
case :printf("=\n");
break;
case -:printf("<\n");
break;
case :printf(">\n");
break;
}
} return ;
}
B:事实证明即使只有三组数据也可能出现cin TLE而scanf AC的情况= =
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <vector>
using namespace std;
#define ULL long long
#define MOD 10000007 ULL ans,mx1,mx2;
ULL n,k,x;
typedef vector<ULL> vec;
typedef vector<vec> mat;
int a[]; mat mul(mat &A,mat &B) //return A*B
{
mat C(A.size(),vec(B[].size()));
for (int i=;i<(int)A.size();i++)
{
for (int k=;k<(int)B.size();k++)
{
for (int j=;j<(int)B[].size();j++)
{
C[i][j]=(C[i][j]+A[i][k]*B[k][j])%MOD;
}
}
}
return C;
} mat m_pow(mat A,int m) //return A^m
{
mat B(A.size(),vec(A.size()));
for (int i=;i<(int)A.size();i++)
B[i][i]=;
while (m>)
{
if (m&) B=mul(B,A);
A=mul(A,A);
m>>=;
}
return B;
} int main()
{ //while (cin>>n>>k)
while (~scanf("%d%d",&n,&k))
{
mat AA(,vec());
mat A(,vec());
mat B(,vec());
mat C(,vec());
mat D(,vec());
mat T(,vec());
T[][]=; T[][]=; T[][]=;
A[][]=; A[][]=; A[][]=;
A[][]=; A[][]=; A[][]=;
A[][]=; A[][]=; A[][]=;
AA=A;
A=m_pow(A,k-);
C=mul(A,T);
B=mul(A,AA);
//B=m_pow(B,k-1);
D=mul(B,T);
ULL FK=C[][],FKK=D[][]-;
if (k==) {FK=; FKK=;}
if (k==) {FK=; FKK=;}
//cout<<FK<<" -- "<<FKK<<endl; /*
LL fk=1,fkk=2,FK=2,FKK=4;
for (int i=3;i<=k;i++)
{
//fk:f[k] fkk:f[k+1]
LL tmp=fk+fkk;
fk=fkk; fkk=tmp;
fk=fk%MOD;
fkk=fkk%MOD;
FK+=fk;
FKK=FK+fkk;
FK=FK%MOD;
FKK=FKK%MOD;
}
FKK-=1; if (FKK<0) FKK+=MOD;
*/ ans=;
mx1=; mx2=;
for (int i=;i<=n;i++)
{
cin>>x;
ans+=x;
if (x>mx1)
{
mx2=mx1;
mx1=x;
}
else if ((x<=mx1)&&(x>mx2))
{
mx2=x;
}
}
/*
for (int i=1;i<=n;i++)
{
cin>>a[i];
ans+=a[i];
}
sort(a+1,a+n+1);
mx1=a[n]; mx2=a[n-1];
*/ //cout<<mx1<<" "<<mx2<<" = "<<ans<<endl;
/*
for (int i=1;i<=k;i++)
{
ans=ans+mx1+mx2;
ans=ans%MOD;
LL tmp=mx1;
mx1=mx1+mx2;
mx2=tmp;
}
*/
//cout<<ans<<" - "<<FK<<" "<<FKK<<endl;
mx1=mx1*FKK; mx1=mx1%MOD;
mx2=mx2*FK; mx2=mx2%MOD;
ans=ans+mx1+mx2;
ans=ans%MOD;
//cout<<ans<<endl;
printf("%I64d\n",ans);
}
return ;
}
bc#29 做题笔记的更多相关文章
- bc#27做题笔记
rating掉的哗哗的T^T 1001:水题 1002:水题,但是题目看错了+手速太捉急 看一下样例解释就会知道,实际上第i个人只能坐第i辆公交车.= =好反人类 这样的话题目就简单了许多..... ...
- SDOI2017 R1做题笔记
SDOI2017 R1做题笔记 梦想还是要有的,万一哪天就做完了呢? 也就是说现在还没做完. 哈哈哈我竟然做完了-2019.3.29 20:30
- C语言程序设计做题笔记之C语言基础知识(下)
C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...
- C语言程序设计做题笔记之C语言基础知识(上)
C语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行事.并且C是相当灵活的,用于执行计算机程序能完成的几乎 ...
- SDOI2014 R1做题笔记
SDOI2014 R1做题笔记 经过很久很久的时间,shzr又做完了SDOI2014一轮的题目. 但是我不想写做题笔记(
- SDOI2016 R1做题笔记
SDOI2016 R1做题笔记 经过很久很久的时间,shzr终于做完了SDOI2016一轮的题目. 其实没想到竟然是2016年的题目先做完,因为14年的六个题很早就做了四个了,但是后两个有点开不动.. ...
- LCT做题笔记
最近几天打算认真复习LCT,毕竟以前只会板子.正好也可以学点新的用法,这里就用来写做题笔记吧.这个分类比较混乱,主要看感觉,不一定对: 维护森林的LCT 就是最普通,最一般那种的LCT啦.这类题目往往 ...
- java做题笔记
java做题笔记 1. 初始化过程是这样的: 1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化: 2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序 ...
- SAM 做题笔记(各种技巧,持续更新,SA)
SAM 感性瞎扯. 这里是 SAM 做题笔记. 本来是在一篇随笔里面,然后 Latex 太多加载不过来就分成了两篇. 标 * 的是推荐一做的题目. trick 是我总结的技巧. I. P3804 [模 ...
随机推荐
- C#加密解密大全
1.方法一 (不可逆加密) public string EncryptPassword(string PasswordString,string PasswordFormat ) { ...
- 分享我对领域驱动设计(DDD)的学习成果
本文内容提要: 1. 领域驱动设计之领域模型 2. 为什么建立一个领域模型是重要的 3. 领域通用语言(Ubiquitous Language) 4.将领域模型转换为代码实现的最佳实践 5. 领域建模 ...
- Android酷炫实用的开源框架(UI框架)
Android酷炫实用的开源框架(UI框架) 前言 忙碌的工作终于可以停息一段时间了,最近突然有一个想法,就是自己写一个app,所以找了一些合适开源控件,这样更加省时,再此分享给大家,希望能对大家有帮 ...
- 分布式中使用Redis实现Session共享(一)
上一篇介绍了如何使用nginx+iis部署一个简单的分布式系统,文章结尾留下了几个问题,其中一个是"如何解决多站点下Session共享".这篇文章将会介绍如何使用Redis,下一篇 ...
- 高性能JavaScript DOM编程
我们知道,DOM是用于操作XML和HTML文档的应用程序接口,用脚本进行DOM操作的代价很昂贵.有个贴切的比喻,把DOM和JavaScript(这里指ECMScript)各自想象为一个岛屿,它们之间用 ...
- jquery里面的$(this)和this都什么时候用,有什么区别
当你用的是jquery时,就用$(this),如果是JS,就用this $(this).html( $(this).html() + " BAM! " + i ); 这个里的htm ...
- 如何实现侧边栏菜单之间的分割线——不用border-bottom
相信大家都遇到过这样一个老生常谈的问题,就是如果当我们所要做的菜单是侧边栏,垂直方向自上而下的排列的菜单栏,我们在做的时候通常的构想是这样的,就是在每两个菜单之间添加分割线,通常的想法就是说给每个菜单 ...
- 4-pwd 打印当前工作目录
pwd print name of current/working directory 打印当前工作目录 [语法]: pwd [选项] [参数] [功能介绍] pwd命令以绝对路径的方式显示用户当前工 ...
- mysql 安装失败解决方法
在安装mysql的过程中,出现的最麻烦的问题和解决方法 安装后,启动不成功,就卡了,程序就没有响应. 如何解决: 找到mysql安装目录下的 #Path to the database root da ...
- 【BZOJ 3809】Gty的二逼妹子序列
这个莫队如果用线段树来维护的话,复杂度是$O(n\sqrt{n}logn+qlogn)$ 很明显,可以看出来莫队每次$O(1)$的移动因为套上了线段树变成了$O(logn)$,但莫队移动的总数是非常大 ...