Triangle
题意:木棒长度从1开始为1,2,3…的序列,问在一个序列中最少拿出多少木棒才能使剩下的木棒不能构成三角形。
题解:根据序列的特点以及若构成三角形则必须两边之和大于第三边想到斐波那契数列(从第三项开始以后的数字等于前两个数字的和)若剩下的木棒的长度为斐波那契数列则必定无法构成三角形。由于只有20项,所以把1到20的斐波那契数字记录下来就可以。

#include<iostream>
#include<cstdio>
using namespace std;
int a[20]={1,2,3,0,5,0,0,8,0,0,0,0,13,0,0,0,0,0,0,0};
int main( )
{int t;scanf("%d",&t);int count=1;while(t--){int m;int sum=0;scanf("%d",&m);for(int i=1;i<=m;i++){if(a[i-1]==0) sum++;else continue;}printf("Case #%d: %d\n",count,sum);count++;}return 0;
}

Birthday Paradox
题意:给出每年的天数,问在这么多天数的情况下,至少邀请多少人使得有两人同一天生日的概率至少为0.5
题解:代码:

#include<iostream>
#include<cstdio>
using namespace std;
int main( )
{int t;scanf("%d",&t);int count=1;while(t--){int n;scanf("%d",&n);int ans=0;double sum=1;for(int i=n-1;i>=0;i--){sum*=i*1.0/n;ans++;if(sum<=0.5) break;}printf("Case %d: %d\n",count,ans);count++;}return 0;}

Reverse a Substring
题意:在一个字符中找到一个子串使得将子串翻转后字典序排列降低
题解:只需要找到一个子串即可,那么就可以两两比较,若后边的字母的字典序比前边的字母小,就表示找到。

#include<iostream>
#include<string>
#include<cmath>
#include<algorithm>
using namespace std;
int main( )
{int n;string s;cin>>n;cin>>s;int left=0;int right=0;for(int i=0;i<n-1;i++){if(s[i+1]<s[i]){left=i+1;right=i+2;break;}}if(left!=0||right!=0)cout<<"YES"<<endl<<left<<" "<<right<<endl;elsecout<<"NO"<<endl;return 0;
}

Game with Telephone Numbers
题意:给出一个数字串且长度大于等于13,一个电话号码长度为11并且开头必须是8 ,两个人轮流去掉一个数字,当数字串长度变成11时停止,若剩下的数字串为一个电话号码时输出YES否则输出NO
题解:相当与两个人玩游戏,一个人想办法去掉8另一个人想办法保留8并且使8位于第一个。那么固定后面10个数字,比较前边数字8与不是8的个数大小

#include<iostream>
#include<string>
using namespace std;
string s;
int main( )
{int n;cin>>n;cin>>s;int sum=0,sum2=0;for(int i=0;i<n-10;i++){if(s[i]=='8') sum++;else sum2++;}if(sum-sum2+11>=11) cout<<"YES"<<endl;else cout<<"NO"<<endl;return 0;
}

Magic Square
大水题~~~

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
char s[3][4];
void clockwise(char x1)
{if(x1=='1'){int temp=s[0][0];s[0][0]=s[1][0]; s[1][0]=s[1][1]; s[1][1]=s[0][1];s[0][1]=temp;}else if(x1=='2'){int temp=s[0][1];s[0][1]=s[1][1]; s[1][1]=s[1][2]; s[1][2]=s[0][2]; s[0][2]=temp;}else if(x1=='3'){int temp=s[1][0];s[1][0]=s[2][0]; s[2][0]=s[2][1]; s[2][1]=s[1][1]; s[1][1]=temp;}else{int temp=s[1][1];s[1][1]=s[2][1]; s[2][1]=s[2][2]; s[2][2]=s[1][2]; s[1][2]=temp;  }
}
void counterclock(char x2)
{if(x2=='1'){int temp=s[0][0];s[0][0]=s[0][1]; s[0][1]=s[1][1]; s[1][1]=s[1][0]; s[1][0]=temp;}else if(x2=='2'){int temp=s[0][1];s[0][1]=s[0][2]; s[0][2]=s[1][2]; s[1][2]=s[1][1]; s[1][1]=temp;}else if(x2=='3'){int temp=s[1][0];s[1][0]=s[1][1]; s[1][1]=s[2][1]; s[2][1]=s[2][0]; s[2][0]=temp;}else {int temp=s[1][1];s[1][1]=s[1][2]; s[1][2]=s[2][2]; s[2][2]=s[2][1]; s[2][1]=temp;}
}
int main( )
{int t;scanf("%d",&t);while(t--){//      memset(s,'0',sizeof(s));int n;scanf("%d",&n);getchar();for(int i=0;i<3;i++) scanf("%s",s[i]);while(n--){char b[2];scanf("%s",b);if(b[1]=='C')clockwise(b[0]);elsecounterclock(b[0]);} for(int i=0;i<3;i++){ puts(s[i]); }}return 0;
}

这里有一篇转载的博客关于快速幂与矩阵快速幂:
跳转
Reading comprehension
题解:

#include<iostream>
#include<cstdio>
#include<cstring>
typedef long long ll;
using namespace std;
ll n,m;
struct f
{ll s[10][10];f() {memset(s,0,sizeof(s));}
};
f mul(f a,f b,ll mod)
{f c;for(int i=1;i<=3;i++)for(int j=1;j<=3;j++)for(int k=1;k<=3;k++){c.s[i][j]=(c.s[i][j]+a.s[i][k]*b.s[k][j])%mod;}return c;
}
f q(f x,ll n)
{f ans;for(int i=1;i<=3;i++)ans.s[i][i]=1;while(n){if(n&1) ans=mul(ans,x,m);x=mul(x,x,m);n=n>>1;   }return ans;
}int main( )
{f y;   y.s[1][1]=y.s[1][3]=y.s[2][1]=y.s[3][3]=1;y.s[1][2]=2;while(~scanf("%lld%lld",&n,&m)){f ans=q(y,n-1);ll sum=(ans.s[1][1]+ans.s[1][3])%m;printf("%lld\n",sum);       }return 0;
}

SDNU_ACM_ICPC_2020_Winter_Practice_4th [Reproduced](新知识点:矩阵快速幂的应用)相关推荐

  1. 【矩阵快速幂】233 Matrix HDU - 5015

    Think: 1知识点:矩阵快速幂 2题意:定义一个233矩阵,第一行形如233, 23333, 233333, 233-(即a[0][1] = 233, a[0][2] = 2333,a[0][3] ...

  2. Codeforces 621E Wet Shark and Block【dp + 矩阵快速幂】

    题意: 有b个blocks,每个blocks都有n个相同的0~9的数字,如果从第一个block选1,从第二个block选2,那么就构成12,问对于给定的n,b有多少种构成方案使最后模x的余数为k. 分 ...

  3. hdu2604 矩阵快速幂

    题意:       给你n个人,排成一个长度是n的队伍,人只有两类f,m,问可以有多少种排法使度列中不出现fff,fmf这样的子串. 思路:       一开始暴力,结果超时了,其实这个题目要是能找到 ...

  4. 一文彻底搞懂快速幂(原理、实现、矩阵快速幂)

    前言 大家好,我是bigsai,之前有个小老弟问到一个剑指offer一道相关快速幂的题,这里梳理一下讲一下快速幂! 快速幂是什么? 顾名思义,快速幂就是快速算底数的n次幂.你可能疑问,求n次幂算n次叠 ...

  5. NYOJ 1075 (递推 + 矩阵快速幂)

    "红色病毒"问题 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 医学研究者最近发现了一种新病毒,因为其蔓延速度与曾经在Internet上传播的&qu ...

  6. 沉默是金 矩阵快速幂

    沉默是金 时间限制: 1 Sec  内存限制: 128 MB 题目描述 终于活成了自己最讨厌的模样. 小希遇到了一个序列,他现在可以在序列中可以有重复地取k个数组成一个新的序列.该序列有以下几个性质: ...

  7. HDU - 6185 Covering(暴搜+递推+矩阵快速幂/杜教BM)

    题目链接:点击查看 题目大意:规定宽度为4,给定长度为n,求用1*2和2*1的瓷砖,将其完全铺满能有多少种方法. 分析:自从学会了矩阵快速幂之后,看到1e18的数据量都会下意识的往递推上面想,但是以前 ...

  8. [选拔赛1]花园(矩阵快速幂),JM的月亮神树(最短路),保护出题人(斜率优化)

    多年不考试,一夜回到解放前 T1:花园 title solution code T2:月亮神树 title solution code T3:保护出题人 title solution code T1: ...

  9. 算法分类整理+模板①:矩阵快速幂

    一直有一个想法,感觉自己很多基础算法不是很扎实,想要找个机会写一些算法的整理,顺便自己总结一些实用的模板. 最近偶然在训练赛中连续做了2道思维+矩阵快速幂的题目,碰巧有时间,就以矩阵快速幂作为这个系列 ...

最新文章

  1. Deep Learning(深度学习)相关网站
  2. rpm 安装RabbitMQ 3.7.24版本-User can only log in via localhost
  3. 中国在线度假旅游市场专题分析2020
  4. 微软面试题系列(三):求子数组的最大和
  5. linux fdisk,df,mount挂载及查看磁盘信息
  6. Python3 高级用法
  7. 美图秀秀去广告单文件版 v6.4.3.0
  8. PHP_微信小程序(1)
  9. python 读取合并单元格_python 读取合并单元格
  10. NoteFirst的Word插件(WordAddIn)安装过程中遇到的问题和解决方案
  11. 负整数及浮点数的二进制表示
  12. QEMU文档之虚拟NVDIMM
  13. 微软服务器改dns,Win10修改微软DNS的方法!
  14. 经典!沐风老师3DMAX建模实例系列教程上线啦。。。
  15. 网易云信Demo-注册400
  16. 诊所信息管理系统C语言课程设计
  17. caffe特殊层:permute\reshape\flatten\slice\concat
  18. 1997年-2017年各省(直辖市、不包含西藏)能源投入(万吨标准煤)
  19. ansys workbench收敛判断
  20. 翻译:Swarm intelligence群体智慧

热门文章

  1. CPP全面总结(涵盖C++11标准)
  2. Several anatomical structure pics 一些大脑解剖结构图
  3. ICMP目的网络,主机,协议,端口不可达报文的Type值,Code值分别是
  4. 电路板级的EMC设计 (1)概述
  5. FTP上传下载失败或文件为空
  6. Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习
  7. 京准通-全店海投出价方式介绍
  8. 震撼心灵、洗礼灵魂--【经典的大师参禅的禅语】
  9. MOOC《Python语言程序设计》(第15次)Python计算生态概览(第九周)
  10. app被Rejected 的各种原因翻译