题意:给出N个灯,“1”表示开,“0”表示关,并且灯连成环,比如“0101”第一个“0”灯左侧是最后一个“1”,一次操作:灯i左侧若是“1”,则灯i改变状态,否则不改变,问经过k(1<=k<=10^8)次操作,每个灯的状态。

思路:矩阵相乘,推出递推矩阵即可。比如 1 0 1,操作一次是0 1 1,可以推出矩阵

1 1 0

0 1 1

1 0 1,即单位矩阵基础上每上一位是1,因为是环,左下角是1。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2276

View Code

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cmath>
 4 #include <string>
 5 #include <algorithm>
 6 #include <iostream>
 7 using namespace std;
 8 const int N=110;
 9
10 typedef struct Matrix{
11     int m[N][N];
12 }Matrix;
13 Matrix init,F,unit;
14 string str;
15 int k,n;
16
17 void Init(){
18     int cnt=0,i,j;
19     for(i=0;i<n;i++) F.m[1][i+1]=str[i]-'0';
20     for(i=1;i<=n;i++)
21         for(j=1;j<=n;j++){
22             if(i==j||j-i==1) init.m[i][j]=1;
23             else init.m[i][j]=0;
24             unit.m[i][j]=(i==j);
25         }
26     init.m[n][1]=1;
27 }
28
29 Matrix Mul(Matrix a,Matrix b){
30     Matrix c;
31     for(int i=1;i<=n;i++)
32         for(int j=1;j<=n;j++){
33             c.m[i][j]=0;
34             for(int k=1;k<=n;k++)
35                 c.m[i][j]+=a.m[i][k]*b.m[k][j];
36             c.m[i][j]%=2;    //写在for循环里面就超时了......
37         }
38     return c;
39 }
40
41 Matrix Pow(Matrix a,Matrix b){
42     while(k){
43         if(k&1) b=Mul(a,b);
44         a=Mul(a,a);
45         k>>=1;
46     }
47     return b;
48 }
49
50 int main(){
51
52 //    freopen("data.in","r",stdin);
53 //    freopen("data.out","w",stdout);
54
55     while(scanf("%d",&k)!=EOF){
56         cin>>str;
57         n=str.length();
58         Init();
59         Matrix x=Pow(init,unit);
60         x=Mul(F,x);
61         for(int i=1;i<=n;i++) printf("%d",x.m[1][i]);
62         puts("");
63     }
64     return 0;
65 }

转载于:https://www.cnblogs.com/Hug-Sea/articles/2506748.html

HDU 2276 Kiki Little Kiki 2相关推荐

  1. HDU 2276 Kiki Little Kiki 2 (位运算+矩阵快速幂)

    HDU 2276 Kiki & Little Kiki 2 (位运算+矩阵快速幂) ACM 题目地址:HDU 2276 Kiki & Little Kiki 2 题意:  一排灯,开关 ...

  2. NYOJ 300 hdu 2276 Kiki Little Kiki 2 (矩阵快速幂)

    Kiki & Little Kiki 2 时间限制:5000 ms  |  内存限制:65535 KB 难度:4 描述 There are n lights in a circle numbe ...

  3. hdu 2276【Kiki Little Kiki 2】

    看到有人0ms爽过,我781ms过,心里有点不是滋味儿...... 还是说说自己的思路吧: 1.根据题目的意思我们就应该知道是将原来的数据右移(譬如第二位移到第一位),当然了最高位应该被最低位的数补充 ...

  4. 【hdu 3579】Hello Kiki

    点击题目链接 Hello Kiki Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) P ...

  5. hdu 2275 Kiki Little Kiki 1

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2275  题意:n个操作  Push 入容器  Pop弹出一个 满足<=该数的最大的数(若没有输出 ...

  6. hdu 2275 Kiki Little Kiki 1 水题

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2275 这个题比较简单,所以就没有测试样例提供给大家,基本把题目的样例过了就可以了 题目大意 给你一串操作, ...

  7. mysql 矩阵运算_HDU 2276 Kiki amp; Little Kiki 2 (位运算+矩阵快速幂)

    HDU 2276 Kiki Little Kiki 2 (位运算矩阵快速幂) ACM 题目地址:HDU 2276 Kiki Little Kiki 2 题意 : 一排灯,开关状态已知,每过一秒:第i个 ...

  8. 杭电ACM-LCY算法进阶培训班-专题训练(矩阵快速幂)

    杭电ACM-LCY算法进阶培训班-专题训练(矩阵快速幂)[模板] 传送门 杭电ACM-LCY算法进阶培训班-专题训练(矩阵快速幂)[模板] 矩阵快速幂模板 Count Problem Descript ...

  9. 4-Points Congruent Sets for Robust Pairwise Surface Registration——4PCS阅读笔记

    4-Points Congruent Sets for Robust Pairwise Surface Registration--4PCS阅读笔记 2018年03月08日 10:18:14 Voda ...

最新文章

  1. java数组交集_Java 实例 – 数组交集
  2. rails 添加外键_如何在Rails后端中添加功能强大的搜索引擎
  3. 教你3招,彻底搞定OCR数学公式识别难题!
  4. android简单分享----文字加图片
  5. php判断一个数是否是回文数,每周一道算法题001:回文数
  6. 浏览器更改实现webstrom等前端编辑器的同步更新
  7. [深度学习] 分布式Pytorch介绍(三)
  8. 大学生信息安全_给大学生的信息
  9. isset php 二维数组_php 数组去重,一维数组去重,二维数组去重
  10. webpack打包样式资源_使用loader去打包css文件_打包less文件---webpack工作笔记004
  11. nlp中bpe_缓冲池扩展(BPE)–内存中OLTP:内存挑战
  12. 进程、轻量级进程(LWP)、线程
  13. (5) 学习笔记_numpy
  14. java中的时间戳sssss,Java日期时间API系列35-----Jdk8中java.time包中的新的日期时间API类应用,微秒和纳秒等更精确的时间格式化和解析。...
  15. 机器学习(2): K-means (k均值) 聚类算法 小结
  16. win8计算机无法安装打印机驱动程序,win8系统安装打印机驱动失败怎么办|win8系统安装打印机驱动失败的解决方法...
  17. 青龙跑趣闲赚(稳定)
  18. 设计模式(0):UML类图(Class Diagram)
  19. 数据库 string (varchar) 类型 按数值 进行排序
  20. Windows安装和使用

热门文章

  1. Apache Camel学习笔记
  2. Amazon EC2云计算体验
  3. 网页加载,只显示文字,不显示图片。(原因解决方法)
  4. USB接口PCB设计
  5. sql server 计算坐标点距离函数
  6. r7 5700u核显相当于什么显卡 R75700u相当于什么水平
  7. EF 计算时期/时间差
  8. 灰色关联度矩阵——MATLAB在数学建模中的应用
  9. java 图书馆管理系统(超低配版)
  10. C#(Winform)程序无法使用Windows Media Player 组件播放视频文件