B 君的第一题

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

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

  1. //Achen
  2. #include<bits/stdc++.h>
  3. #define For(i,a,b) for(int i=(a);i<=(b);i++)
  4. #define Rep(i,a,b) for(int i=(a);i>=(b);i--)
  5. #define Formylove return 0
  6. const int N=1e7+;
  7. typedef long long LL;
  8. typedef double db;
  9. using namespace std;
  10. int T,p,sz=;
  11.  
  12. template<typename T> void read(T &x) {
  13. char ch=getchar(); x=; T f=;
  14. while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
  15. if(ch=='-') f=-,ch=getchar();
  16. for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
  17. }
  18.  
  19. struct jz {
  20. LL a[][];
  21. friend bool operator <(const jz&A,const jz&B) {
  22. For(i,,) For(j,,) if(A.a[i][j]!=B.a[i][j])
  23. return A.a[i][j]<B.a[i][j];
  24. return ;
  25. }
  26. friend bool operator ==(const jz&A,const jz&B) {
  27. return A.a[][]==B.a[][]&&A.a[][]==B.a[][]&&A.a[][]==B.a[][]&&A.a[][]==B.a[][];
  28. }
  29. friend jz operator *(const jz&A,const jz&B) {
  30. jz rs;
  31. For(i,,) For(j,,) {
  32. rs.a[i][j]=;
  33. For(k,,) (rs.a[i][j]+=A.a[i][k]*B.a[k][j]%p)%=p;
  34. }
  35. return rs;
  36. }
  37. }tp,now,bs;
  38. map<jz,int>mp;
  39.  
  40. void solve() {
  41. tp.a[][]=,tp.a[][]=,tp.a[][]=,tp.a[][]=;
  42. bs.a[][]=,bs.a[][]=,bs.a[][]=,bs.a[][]=;
  43. now=bs;
  44. mp.clear();
  45. For(i,,sz) {
  46. now=now*tp;
  47. if(!mp[now]) mp[now]=i;
  48. //cout<<mp[now]<<endl;
  49. if(now==bs) {
  50. printf("%d\n",i);
  51. return;
  52. }
  53. }
  54. jz x=now;
  55. For(i,,sz) {
  56. if(mp[x]) {
  57. LL ans=(LL)i*sz-mp[x];
  58. if(ans!=) {
  59. printf("%lld\n",ans);
  60. return;
  61. }
  62. }
  63. x=x*now;
  64. }
  65. }
  66.  
  67. #define ANS
  68. int main() {
  69. #ifdef ANS
  70. freopen("shijiazhuang.in","r",stdin);
  71. freopen("shijiazhuang.out","w",stdout);
  72. #endif
  73. read(T);
  74. while(T--) {
  75. read(p);
  76. solve();
  77. }
  78. Formylove;
  79. }

bsgs

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

传送门

hdu题目传送门

  1. //Achen
  2. #include<bits/stdc++.h>
  3. #define For(i,a,b) for(int i=(a);i<=(b);i++)
  4. #define Rep(i,a,b) for(int i=(a);i>=(b);i--)
  5. #define Formylove return 0
  6. const int N=;
  7. typedef long long LL;
  8. typedef double db;
  9. using namespace std;
  10. int T;
  11. LL n,p;
  12.  
  13. template<typename T> void read(T &x) {
  14. char ch=getchar(); x=; T f=;
  15. while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
  16. if(ch=='-') f=-,ch=getchar();
  17. for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
  18. }
  19.  
  20. struct jz {
  21. LL a[][];
  22. friend jz operator *(const jz&A,const jz&B) {
  23. jz rs;
  24. For(i,,) For(j,,) {
  25. rs.a[i][j]=;
  26. For(k,,) (rs.a[i][j]+=A.a[i][k]*B.a[k][j]%p)%=p;
  27. }
  28. return rs;
  29. }
  30. }bs,rs;
  31.  
  32. void jzksm(LL b) {
  33. rs.a[][]=rs.a[][]=;
  34. rs.a[][]=rs.a[][]=;
  35. bs.a[][]=; bs.a[][]=bs.a[][]=bs.a[][]=;
  36. while(b) {
  37. if(b&) rs=rs*bs;
  38. bs=bs*bs;
  39. b>>=;
  40. }
  41. }
  42.  
  43. LL ksm(LL a,LL b,LL p) {
  44. LL rs=,bs=a%p;
  45. while(b) {
  46. if(b&) rs=rs*bs%p;
  47. bs=bs*bs%p;
  48. b>>=;
  49. }
  50. return rs;
  51. }
  52.  
  53. LL gcd(LL a,LL b) { return !b?a:gcd(b,a%b); }
  54.  
  55. LL lcm(LL a,LL b) { return a/gcd(a,b)*b; }
  56.  
  57. LL solve() {
  58. if(p==) return ;
  59. if(p==) return ;
  60. if(p==) return ;
  61. LL a;
  62. if(ksm(,(p-)/,p)==) a=p-;
  63. else a=(p+)*;
  64. LL ans=a;
  65. for(LL x=;x*x<=a;x++) if(a%x==) {
  66. LL tp=x;
  67. jzksm(tp);
  68. if(rs.a[][]==&&rs.a[][]==&&rs.a[][]==&&rs.a[][]==) ans=min(ans,tp);
  69. tp=a/x;
  70. jzksm(tp);
  71. if(rs.a[][]==&&rs.a[][]==&&rs.a[][]==&&rs.a[][]==) ans=min(ans,tp);
  72. }
  73. return ans;
  74. }
  75.  
  76. LL work(LL n) {
  77. if(n==) return ;
  78. LL tp=n,rs=;
  79. for(LL x=;x*x<=n;x++) if(tp%x==) {
  80. LL m=;
  81. while(tp%x==) {
  82. tp/=x; m++;
  83. }
  84. p=x;
  85. rs=lcm(rs,solve()*ksm(p,m-,1e18));
  86. }
  87. if(tp!=) {
  88. p=tp;
  89. rs=lcm(rs,solve());
  90. }
  91. return rs;
  92. }
  93.  
  94. #define ANS
  95. int main() {
  96. #ifdef ANS
  97. freopen("shijiazhuang.in","r",stdin);
  98. freopen("shijiazhuang.out","w",stdout);
  99. #endif
  100. read(T);
  101. For(cs,,T) {
  102. read(n);
  103. printf("%lld\n",work(n));
  104. //printf("Case #%d: %lld\n",cs,work(n));
  105. }
  106. Formylove;
  107. }

B 君的第二题

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

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

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

  1. //Achen
  2. #include<bits/stdc++.h>
  3. #define For(i,a,b) for(int i=(a);i<=(b);i++)
  4. #define Rep(i,a,b) for(int i=(a);i>=(b);i--)
  5. #define Formylove return 0
  6. const int N=1e5+;
  7. typedef long long LL;
  8. typedef double db;
  9. using namespace std;
  10. int n,m,ans[N],fl[N];
  11. db p[N];
  12.  
  13. template<typename T> void read(T &x) {
  14. char ch=getchar(); x=; T f=;
  15. while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
  16. if(ch=='-') f=-,ch=getchar();
  17. for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
  18. }
  19.  
  20. int ck(db pt) {
  21. LL t1=,t2=;
  22. For(i,,n) {
  23. int l=,r=m,rs=;
  24. while(l<=r) {
  25. int mid=((l+r)>>);
  26. if(p[i]>=pt*mid) rs=mid,l=mid+;
  27. else r=mid-;
  28. }
  29. fl[i]=ans[i]=;
  30. if(rs) {
  31. if(p[i]==pt*rs) { ans[i]=rs-; fl[i]=; t1+=rs-; t2++; }
  32. else { ans[i]=rs; t1+=rs; }
  33. }
  34. }
  35. if(m>=t1&&m<=t1+t2) {
  36. For(i,,n) if(fl[i]&&t1<m) {
  37. ans[i]++; t1++;
  38. }
  39. return ;
  40. }
  41. if(m<t1) return -;
  42. if(m>t1+t2) return ;
  43. }
  44.  
  45. #define ANS
  46. int main() {
  47. #ifdef ANS
  48. freopen("taiyuan.in","r",stdin);
  49. freopen("taiyuan.out","w",stdout);
  50. #endif
  51. read(n); read(m);
  52. db l=0.0,r=0.0;
  53. For(i,,n) {
  54. read(p[i]);
  55. r=max(r,p[i]);
  56. }
  57. for(;;) {
  58. db mid=(l+r)/2.0;
  59. if(ck(mid)==) break;
  60. if(ck(mid)==-) l=mid;
  61. else r=mid;
  62. }
  63. For(i,,n) printf("%d\n",ans[i]);
  64. Formylove;
  65. }

B 君的第三题

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

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

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

  1. //Achen
  2. #include<bits/stdc++.h>
  3. #define For(i,a,b) for(int i=(a);i<=(b);i++)
  4. #define Rep(i,a,b) for(int i=(a);i>=(b);i--)
  5. #define Formylove return 0
  6. const int N=1e5+;
  7. typedef long long LL;
  8. typedef double db;
  9. using namespace std;
  10. int n,anstot;
  11. LL xx[N],yy[N],ansnum=1e18;
  12.  
  13. template<typename T> void read(T &x) {
  14. char ch=getchar(); x=; T f=;
  15. while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
  16. if(ch=='-') f=-,ch=getchar();
  17. for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
  18. }
  19.  
  20. void calc(LL x,LL y) {
  21. LL rs=;
  22. For(i,,n)
  23. rs+=abs(xx[i]-x)+abs(yy[i]-y);
  24. if(rs<ansnum) ansnum=rs,anstot=;
  25. else if(rs==ansnum) anstot++;
  26. }
  27.  
  28. LL odd(LL l,LL r) {
  29. if((l&)&&(r&)) return (r-l+)/;
  30. else return (r-l+)/;
  31. }
  32.  
  33. LL even(LL l,LL r) {
  34. if(!(l&)&&!(r&)) return (r-l+)/;
  35. else return (r-l+)/;
  36. }
  37.  
  38. void solve(LL xl,LL xr,LL yl,LL yr) {
  39. if(xl==xr&&yl==yr&&(xl+yl)%!=) {
  40. calc(xl-,yl);
  41. calc(xl+,yl);
  42. calc(xl,yl-);
  43. calc(xl,yl+);
  44. }
  45. else {
  46. calc(xl,yl);
  47. anstot=odd(xl,xr)*odd(yl,yr)+even(xl,xr)*even(yl,yr);
  48. }
  49. }
  50.  
  51. #define ANS
  52. int main() {
  53. #ifdef ANS
  54. freopen("zhengzhou.in","r",stdin);
  55. freopen("zhengzhou.out","w",stdout);
  56. #endif
  57. read(n);
  58. For(i,,n) {
  59. LL x,y;
  60. read(x); read(y);
  61. xx[i]=x+y;
  62. yy[i]=x-y;
  63. }
  64. sort(xx+,xx+n+);
  65. sort(yy+,yy+n+);
  66. solve(xx[(n+)/],xx[(n+)/],yy[(n+)/],yy[(n+)/]);
  67. printf("%lld\n%d\n",ansnum/,anstot);
  68. Formylove;
  69. }

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

要是人生重来,不学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. 控制台Cannot read property 'disabled' of null报错的问题

    点击任何东西控制台都会报错: 也没有提示哪儿出了问题,后来我就代码一块一块的注释,终于找到了原因. 我在项目中用了 el-dropdown ,但是没有用他的el-dropdown-menu 所以才会一 ...

  2. PHP 的 new static 和 new self

    下面我们举个例子: class Father { public static function getSelf() { return new self(); } public static funct ...

  3. Express post请求无法解析参数的原因

    router.post('/', function(req, res) { console.log(req.body); console.log(req.body.name); console.log ...

  4. 运行go代码

    go运行go代码 现在,让我们通过创建一个简单的示例,开启我们的go学习旅程,并学习如何编译和执行go程序.打开你最喜欢的文本编辑器,输入以下代码: package main func main() ...

  5. luoguP2148 [SDOI2009]E&D [sg函数][组合游戏]

    题目描述 小E 与小W 进行一项名为“E&D”游戏. 游戏的规则如下: 桌子上有2n 堆石子,编号为1..2n.其中,为了方便起见,我们将第2k-1 堆与第2k 堆 (1 ≤ k ≤ n)视为 ...

  6. Andrdoid中对应用程序的行为拦截实现方式之----从底层C进行拦截

    之前的一篇概要文章中主要说了我这次研究的一些具体情况,这里就不在多说了,但是这里还需要指出的是,感谢一下三位大神愿意分享的知识(在我看来,懂得分享和细致的人才算是大神,不一定是技术牛奥~~) 第一篇: ...

  7. [Catalan数三连]网格&有趣的数列&树屋阶梯

    如何让孩子爱上打表 Catalan数 Catalan数是组合数学中一个常出现在各种计数问题中的数列. 以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名. 先丢个公式(设第n项为$ ...

  8. 【C#技术】一篇文章搞掂:LLBL

    公司代码速查 ParameterBase.CurrentUser.UserId ICustomerDeskDetailManager customerDeskDetailManager = Clien ...

  9. OS: 生产者消费者问题(二) ---- 系统V IPC通信-信号量和共享内存

    在上一篇“OS: 生产者消费者问题(多进程+共享内存+信号量)”中提到的方法二: 如果进程之间并没有父子关系,但是协商好了共享存储的 KEY , 那么在每个进程中,就可以通过 KEY 以及 shmge ...

  10. project的操作说明

    project 1 操作的步骤 设定一个起始时间:7月1号 安排好摘要(任务)的先后顺序 一个一个任务的来:A任务,下面有几个分布实现的部门: 设计部门 3个工作日 程序部门 1个工作日.然后配置相互 ...