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. spark window本地运行wordcount错误

    在运行本地运行spark或者hadoop代码时可能会遇到一下三种问题   1.Exception in thread "main" java.lang.UnsatisfiedLin ...

  2. 【Flutter学习】基本组件之基本列表ListView组件

    一,概述 列表是前端最常见的需求. 在flutter中,用ListView来显示列表页,支持垂直和水平方向展示,通过一个属性我们就可以控制其方向,列别有以下分类 水平列表 垂直列表 数据量非常大的列表 ...

  3. 基于mybatis-plus的代码生成

    基于mybatis-plus的代码生成 前言 随着敏捷开发模式的推广,伴着日益增长的需求,日常工作中我们越来越注重效率和便捷性.今天我们就来探讨下如何自动生成代码,准确地说是如何依赖数据库生成我们的e ...

  4. 一个类似indexOf()的功能的函数

    之前面试的时候遇到了这样的一道题,不过写的时候有些细节没注意到,现在重新写了一下. 写一个类似indexOf()的功能的函数 var str = "dafdfgvdahjfbhyuyvtur ...

  5. opencv环境变量配置

    本文章由@浅墨_毛星云 出品  原文文章链接:http://blog.csdn.net/poem_qianmo/article/details/19809337 作者:毛星云(浅墨)    微博:ht ...

  6. (动态改变数据源遇到的问题)ORACLE11g:No Dialect mapping for JDBC type: -9解决方案

    在动态改变数据源时 hibernate配置不能使用Oracle官方的方言(org.hibernate.dialect.Oracle10gDialect) 做法写一个方言扩展类,缺什么类型,添加什么类型 ...

  7. phoenix 利用CsvBulkLoadTool 批量带入数据并自动创建索引

    需要先创建表: CREATE TABLE IF NOT EXISTS population ( state CHAR() NOT NULL, city VARCHAR NOT NULL, popula ...

  8. java.io.FileNotFoundException: [WEB-INF/spring-servlet.xml] cannot be opened because it does not exist

    今天启动web 项目出现错误提示: java.io.FileNotFoundException: [WEB-INF/spring-servlet.xml] cannot be opened becau ...

  9. C# WinfForm 控件之dev报表 XtraReport (四) 动态绑定主从关系表

    一般的单据都是由主从关系的,比如部门与人员.单据表头与表身.仓库与存货.分类与档案等等 所以主从关系是报表用的最多的 1.准备数据库 简单方便 --主表 create table RdRecord ( ...

  10. C# WinfForm 控件之dev报表 XtraReport (二) 固定数据绑定

    已经子解了XtraReport的初步用法 现在再进一步了解 数据绑定 我们还是先不整高深的 先来个写死的 让我们的数据库数据可以通过报表呈现先 1.准备 还在上节基础上 只不过我把form1 中的Do ...