B 君的第一题

求斐波那契数列模n的循环节。

1、暴力bsgs,毕姥爷好像说循环节最大是6*n还是多少的,反之比较小,直接bsgs这题是可以过的。但是我非常蠢重载运算符的时候把相等返回成了小于,然后根本把结构体放不进map里去(我以为按道理只有等于的时候会炸,但事实上我根本放不进去啊)。然后改成不小于就可以过这题。

 //Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=1e7+;
typedef long long LL;
typedef double db;
using namespace std;
int T,p,sz=; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} struct jz {
LL a[][];
friend bool operator <(const jz&A,const jz&B) {
For(i,,) For(j,,) if(A.a[i][j]!=B.a[i][j])
return A.a[i][j]<B.a[i][j];
return ;
}
friend bool operator ==(const jz&A,const jz&B) {
return A.a[][]==B.a[][]&&A.a[][]==B.a[][]&&A.a[][]==B.a[][]&&A.a[][]==B.a[][];
}
friend jz operator *(const jz&A,const jz&B) {
jz rs;
For(i,,) For(j,,) {
rs.a[i][j]=;
For(k,,) (rs.a[i][j]+=A.a[i][k]*B.a[k][j]%p)%=p;
}
return rs;
}
}tp,now,bs;
map<jz,int>mp; void solve() {
tp.a[][]=,tp.a[][]=,tp.a[][]=,tp.a[][]=;
bs.a[][]=,bs.a[][]=,bs.a[][]=,bs.a[][]=;
now=bs;
mp.clear();
For(i,,sz) {
now=now*tp;
if(!mp[now]) mp[now]=i;
//cout<<mp[now]<<endl;
if(now==bs) {
printf("%d\n",i);
return;
}
}
jz x=now;
For(i,,sz) {
if(mp[x]) {
LL ans=(LL)i*sz-mp[x];
if(ans!=) {
printf("%lld\n",ans);
return;
}
}
x=x*now;
}
} #define ANS
int main() {
#ifdef ANS
freopen("shijiazhuang.in","r",stdin);
freopen("shijiazhuang.out","w",stdout);
#endif
read(T);
while(T--) {
read(p);
solve();
}
Formylove;
}

bsgs

2、我最讨厌的斐波那契的一坨性质

传送门

hdu题目传送门

 //Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=;
typedef long long LL;
typedef double db;
using namespace std;
int T;
LL n,p; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} struct jz {
LL a[][];
friend jz operator *(const jz&A,const jz&B) {
jz rs;
For(i,,) For(j,,) {
rs.a[i][j]=;
For(k,,) (rs.a[i][j]+=A.a[i][k]*B.a[k][j]%p)%=p;
}
return rs;
}
}bs,rs; void jzksm(LL b) {
rs.a[][]=rs.a[][]=;
rs.a[][]=rs.a[][]=;
bs.a[][]=; bs.a[][]=bs.a[][]=bs.a[][]=;
while(b) {
if(b&) rs=rs*bs;
bs=bs*bs;
b>>=;
}
} LL ksm(LL a,LL b,LL p) {
LL rs=,bs=a%p;
while(b) {
if(b&) rs=rs*bs%p;
bs=bs*bs%p;
b>>=;
}
return rs;
} LL gcd(LL a,LL b) { return !b?a:gcd(b,a%b); } LL lcm(LL a,LL b) { return a/gcd(a,b)*b; } LL solve() {
if(p==) return ;
if(p==) return ;
if(p==) return ;
LL a;
if(ksm(,(p-)/,p)==) a=p-;
else a=(p+)*;
LL ans=a;
for(LL x=;x*x<=a;x++) if(a%x==) {
LL tp=x;
jzksm(tp);
if(rs.a[][]==&&rs.a[][]==&&rs.a[][]==&&rs.a[][]==) ans=min(ans,tp);
tp=a/x;
jzksm(tp);
if(rs.a[][]==&&rs.a[][]==&&rs.a[][]==&&rs.a[][]==) ans=min(ans,tp);
}
return ans;
} LL work(LL n) {
if(n==) return ;
LL tp=n,rs=;
for(LL x=;x*x<=n;x++) if(tp%x==) {
LL m=;
while(tp%x==) {
tp/=x; m++;
}
p=x;
rs=lcm(rs,solve()*ksm(p,m-,1e18));
}
if(tp!=) {
p=tp;
rs=lcm(rs,solve());
}
return rs;
} #define ANS
int main() {
#ifdef ANS
freopen("shijiazhuang.in","r",stdin);
freopen("shijiazhuang.out","w",stdout);
#endif
read(T);
For(cs,,T) {
read(n);
printf("%lld\n",work(n));
//printf("Case #%d: %lld\n",cs,work(n));
}
Formylove;
}

B 君的第二题

1、我并没有想到的70分做法,开个堆把1~n的i/1放进去,每次取出最大i/x的然后把i/(x+1)放进堆即可。有人用这个A了这道题我也不知道他是怎么做到的。

2、100分做法,二分答案。二分被选上的最低分数,大于这个分数的都得被选,等于这个分数的可选可不选,判断一下是否合法就好了。

毕姥爷比较优秀用整数二分,我比较菜用实数二分但是过了我也没办法。

 //Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=1e5+;
typedef long long LL;
typedef double db;
using namespace std;
int n,m,ans[N],fl[N];
db p[N]; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} int ck(db pt) {
LL t1=,t2=;
For(i,,n) {
int l=,r=m,rs=;
while(l<=r) {
int mid=((l+r)>>);
if(p[i]>=pt*mid) rs=mid,l=mid+;
else r=mid-;
}
fl[i]=ans[i]=;
if(rs) {
if(p[i]==pt*rs) { ans[i]=rs-; fl[i]=; t1+=rs-; t2++; }
else { ans[i]=rs; t1+=rs; }
}
}
if(m>=t1&&m<=t1+t2) {
For(i,,n) if(fl[i]&&t1<m) {
ans[i]++; t1++;
}
return ;
}
if(m<t1) return -;
if(m>t1+t2) return ;
} #define ANS
int main() {
#ifdef ANS
freopen("taiyuan.in","r",stdin);
freopen("taiyuan.out","w",stdout);
#endif
read(n); read(m);
db l=0.0,r=0.0;
For(i,,n) {
read(p[i]);
r=max(r,p[i]);
}
for(;;) {
db mid=(l+r)/2.0;
if(ck(mid)==) break;
if(ck(mid)==-) l=mid;
else r=mid;
}
For(i,,n) printf("%d\n",ans[i]);
Formylove;
}

B 君的第三题

曼哈顿距离和切比雪夫距离的相互转换

题目转换为求一点到所有点的切比雪夫距离最小,再转换坐标变成求曼哈顿距离最小。于是x,y分开考虑,每一维取中位数就好了。

然后要求点数,就是中位数围成的矩形中的整点个数。因为现在的坐标转回去的时候是(x+y)/2,(x-y)/,2所以实际上是这个矩形中横轴坐标奇偶相同的整点个数。特判当矩形只剩下一个点,而这个点奇偶不同时,要抖动一下找四周的点作为实际答案。

 //Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=1e5+;
typedef long long LL;
typedef double db;
using namespace std;
int n,anstot;
LL xx[N],yy[N],ansnum=1e18; template<typename T> void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} void calc(LL x,LL y) {
LL rs=;
For(i,,n)
rs+=abs(xx[i]-x)+abs(yy[i]-y);
if(rs<ansnum) ansnum=rs,anstot=;
else if(rs==ansnum) anstot++;
} LL odd(LL l,LL r) {
if((l&)&&(r&)) return (r-l+)/;
else return (r-l+)/;
} LL even(LL l,LL r) {
if(!(l&)&&!(r&)) return (r-l+)/;
else return (r-l+)/;
} void solve(LL xl,LL xr,LL yl,LL yr) {
if(xl==xr&&yl==yr&&(xl+yl)%!=) {
calc(xl-,yl);
calc(xl+,yl);
calc(xl,yl-);
calc(xl,yl+);
}
else {
calc(xl,yl);
anstot=odd(xl,xr)*odd(yl,yr)+even(xl,xr)*even(yl,yr);
}
} #define ANS
int main() {
#ifdef ANS
freopen("zhengzhou.in","r",stdin);
freopen("zhengzhou.out","w",stdout);
#endif
read(n);
For(i,,n) {
LL x,y;
read(x); read(y);
xx[i]=x+y;
yy[i]=x-y;
}
sort(xx+,xx+n+);
sort(yy+,yy+n+);
solve(xx[(n+)/],xx[(n+)/],yy[(n+)/],yy[(n+)/]);
printf("%lld\n%d\n",ansnum/,anstot);
Formylove;
}

其实我特别后悔当年第一次见到毕姥爷之后没有立刻退役。

要是人生重来,不学OI了,也不学理了,我就想安安静静地当个文科生。说实话我对史地都挺感兴趣的,政治无感但好歹是我高一学得最好的每次月考帮我拉分的一个科目,而理化生,抱歉半毛钱兴趣都没有,如果不是竞赛应该会认真考虑读文吧。虽然读文好像不能学计算机了,那就不学了吧,大概多读书多到处走以后当个写东西的,这样的人生可能更适合我?

我邪在沙海说过里有一句话

对于弱者的帮助有时候只能让他变得更弱,在这个社会里,在自己不擅长的行业被淘汰,有时候是一种幸运,你可以去寻找真正适合自己的生活,而帮助弱者,把他们在自己不擅长的行业中抬到一个太高的位置,往往会让他们死无葬身之地。

这一次无论能走到哪里,都是最后一次了,我未来再不会碰算法竞赛相关了。忘了从哪听到的一句话大概是“所有的热爱最终都变成执念”,我现在在干的事情已经完全脱离我的初衷了,我和之前的我状态完全不一样了。而且我更是清晰且悲哀地认识到,竞赛可能真的并不适合我。当然,不适合和不做是两码事,于是现在OI对于我已经从目的变成仅仅手段了,这有违我的初心,是我所不喜欢的,也是让现在的我难受的,但是我没有别的办法。现在的我能做的只有尽我所能地去做我能做到的所有事情。

NOIp2018集训test-10-15 (bike day1)的更多相关文章

  1. NOIp2018集训test-10-21 (联考六day1)

    今天被高一狂踩,两个手抖,t1一个1写成2,t3一个+=写成=,所谓失之毫厘谬以千里,直接丢了50分. 完全背包 看到背包体积如此之大物品体积如此之小容易很想到贪心,肯定要先加很多很多的性价比最高的最 ...

  2. NOIp2018集训test-9-15(联考二day1)

    T1.矩阵游戏 水题.每一行最后乘的数为x[i],每一列为y[i],暴力算第一行的列的贡献,每一行的列的贡献是公差为所有列的贡献之和的等差数列,然后每一行再乘上行的贡献求和即为答案. //Achen ...

  3. [NOIP2018模拟赛10.16]手残报告

    [NOIP2018模拟赛10.16]手残报告 闲扯 炉石乱斗模式美滋滋啊,又颓到好晚... 上来T2先敲了树剖,看T1发现是个思博DP,然后没过大样例,写个暴力发现还是没过大样例!?才发现理解错题意了 ...

  4. 背水一战 Windows 10 (15) - 动画: 缓动动画

    [源码下载] 背水一战 Windows 10 (15) - 动画: 缓动动画 作者:webabcd 介绍背水一战 Windows 10 之 动画 缓动动画 - easing 示例演示缓动(easing ...

  5. Linux Kernel 3.11.4/3.10.15/3.4.65/3.0.99

    Linux 今天又发布了4个更新版本,分别是: 3.11.4 2013-10-05 [tar.xz] [pgp] [patch] [view patch] [view inc] [cgit] [cha ...

  6. CVE-2015-1328 Ubuntu 12.04, 14.04, 14.10, 15.04 overlayfs Local Root

    catalog . 引言 . Description . Effected Scope . Exploit Analysis . Principle Of Vulnerability . Patch ...

  7. WTL汉化版2013.10.15

    汉化内容: 2013.10.15 版本:当前可下载Trunk最新版,wtl-code-467-trunk.zip 汉化内容: 1.应用向导的部分汉化,考虑到部分词汇的表述问题,只汉化无影响部分 2.资 ...

  8. [Mon Feb 10 15:21:06 2014] [notice] child pid 7101 exit signal File size limit exceeded (25)

    今天遇到的问题: LAMP的LOG里报如下错误. 然后IE和FIREFOX里显示连接被重置或是无法访问. 但自己建一个正常的PHP测试探针倒可以. 原来是PHP错误日志太多,无法写入LOG导致. [r ...

  9. Datatables插件1.10.15版本服务器处理模式ajax获取分页数据实例解析

    一.问题描述 前端需要使用表格来展示数据,找了一些插件,最后确定使用dataTables组件来做. 后端的分页接口已经写好了,不能修改.接口需要传入页码(pageNumber)和页面显示数据条数(pa ...

  10. macOS 10.15 开启 HiDPI

    普通的显示,接上 MacBook 发现原生的分辨率设置在 2K 显示器上字体很小,换成 1080P 分辨率显示效果又特别模糊.下面介绍MacBook强行开启 HiDPI. 什么是 HiDPI 它使用横 ...

随机推荐

  1. android studio 设计任务内容和识别内容界面 (android stuido design task layout)

    本人android studio版本是 3.4.1,设计了一个任务内容和识别内容的界面,欢迎大家品尝. 界面显示如下图所示: 实现代码如下: <?xml version="1.0&qu ...

  2. Ubuntu图形界面和终端界面切换快捷键

    Ctrl+Alt+F1可以从图形界面切换到终端界面. Ctrl+Alt+F7可以从终端界面退出来,重新回到图形界面

  3. CentOS7.6 部署asp.net core2.2 应用

    1.安装.net Core SDK 在安装.NET之前,您需要注册Microsoft密钥,注册产品存储库并安装所需的依赖项.这只需要每台机器完成一次. 打开终端并运行以下命令: sudo rpm -U ...

  4. YII 中加入短信接口的函数

    public function smsto($telphone,$message) { //短信接口用户名 $uid,如果没有或不能发送请与客服联系 $uid = 'zyd'; //短信接口密码 $p ...

  5. 「ZJOI2019」语言 解题报告

    「ZJOI2019」语言 3个\(\log\)做法比较简单,但是写起来还是有点麻烦的. 大概就是树剖把链划分为\(\log\)段,然后任意两段可以组成一个矩形,就是个矩形面积并,听说卡卡就过去了. 好 ...

  6. 【LeetCode 8】字符串转换整数 (atoi)

    题目链接 [题解] 注意越界的处理就好 简单题 还有.. 正的-2^31不能由2^31取相反数得到,因为正的int最多到2^31-1 [代码] class Solution { public: boo ...

  7. J2EE学习篇之--JQuery技术详解

    前面我们讲解了的J2EE的技术都是服务端的技术,下面我们来看一下前端的一些开发技术,这一篇我们来看一下jQuery技术 简介: jQuery由美国人John Resig创建,至今已吸引了来自世界各地的 ...

  8. 密码学之RSA基础

    预备数论知识 互质关系 如果两个正整数,除了1以外,没有其他公因子,那么就称这两个数是互质关系 比如:4和7,13和61 欧拉函数 思考:任意给定整数n,在小于等于n的正整数中,有多少个数与n构成互质 ...

  9. fiddler对浏览器、app抓包及证书安装

    1.fiddler对浏览器抓包 1.1 对浏览器的http的抓包 Capturing开启,进行抓包: Capturing关闭,停止抓包: 如下图:  1.2 对浏览器的https抓包 1.2.1 开启 ...

  10. cgo 和 Go 语言是两码事

    cgo不是Go 借用 JWZ的一句话 有些人,当他们面临一个问题时,认为“我知道,我会使用 cgo ”.那么现在,他们有了两个问题. 最近有人在 Gopher 的 Slack Channel 上使用 ...