Submission #1359197
Source Code Expand
#include<iostream> #include<vector> #include<algorithm> #include<cstring> #include<cstdio> #include<cmath> #include<cstdlib> #include<ctime> #include<queue> #include<set> using namespace std; typedef long long LL; int gi() { int w=0;bool q=1;char c=getchar(); while ((c<'0'||c>'9') && c!='-') c=getchar(); if (c=='-') q=0,c=getchar(); while (c>='0'&&c <= '9') w=w*10+c-'0',c=getchar(); return q? w:-w; } const int mod=1e9+7; struct M{ int a[3][3]; }; inline M operator * (const M &a,const M &b) { M ans={}; for (int i=0;i<3;i++) for (int j=0;j<3;j++) for (int k=0;k<3;k++) ans.a[i][j]=(ans.a[i][j]+1LL*a.a[i][k]*b.a[k][j])%mod; return ans; } const M trans=(M){ { {1,2,1},//0->0 不放 0->1 两个球挑一个放 0->2 两个一起放 {0,1,1},//1->0 不合法 1->1 不放 1->2 放剩下的一个 {1,2,2}//2->0 新建 2->1 新建并选一个放 2->2 不放或新建并放两个 } }; const M O=(M){ { {1,2,1}, {0,1,1}, {0,0,1} } }; int main() { int n=gi(),m=gi(),i,x=-1,last,y; M a={},b;a.a[0][0]=1; for (i=1;i<=m;i++) { last=x;x=gi(); y=x-last-1;b=trans; while (y) { if (y&1) a=a*b; b=b*b;y>>=1; } if (x!=n) a=a*O; } if (x!=n) { y=n-x-1;b=trans; while (y) { if (y&1) a=a*b; b=b*b;y>>=1; } } printf("%d\n",a.a[0][2]); return 0; }
Submission Info
Submission Time | |
---|---|
Task | E - Placing Squares |
User | laofu |
Language | C++14 (GCC 5.4.1) |
Score | 1600 |
Code Size | 1361 Byte |
Status | AC |
Exec Time | 158 ms |
Memory | 256 KB |
Judge Result
Set Name | Sample | All | ||||
---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 1600 / 1600 | ||||
Status |
|
|
Set Name | Test Cases |
---|---|
Sample | sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt |
All | sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, subtask_1_01.txt, subtask_1_02.txt, subtask_1_03.txt, subtask_1_04.txt, subtask_1_05.txt, subtask_1_06.txt, subtask_1_07.txt, subtask_1_08.txt, subtask_1_09.txt, subtask_1_10.txt, subtask_1_11.txt, subtask_1_12.txt, subtask_1_13.txt, subtask_1_14.txt, subtask_1_15.txt, subtask_1_16.txt, subtask_1_17.txt, subtask_1_18.txt, subtask_1_19.txt, subtask_1_20.txt, subtask_1_21.txt, subtask_1_22.txt, subtask_1_23.txt, subtask_1_24.txt, subtask_1_25.txt, subtask_1_26.txt, subtask_1_27.txt, subtask_1_28.txt, subtask_1_29.txt, subtask_1_30.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
sample_01.txt | AC | 1 ms | 256 KB |
sample_02.txt | AC | 1 ms | 256 KB |
sample_03.txt | AC | 1 ms | 256 KB |
sample_04.txt | AC | 1 ms | 256 KB |
subtask_1_01.txt | AC | 51 ms | 256 KB |
subtask_1_02.txt | AC | 14 ms | 256 KB |
subtask_1_03.txt | AC | 5 ms | 256 KB |
subtask_1_04.txt | AC | 10 ms | 256 KB |
subtask_1_05.txt | AC | 158 ms | 256 KB |
subtask_1_06.txt | AC | 158 ms | 256 KB |
subtask_1_07.txt | AC | 16 ms | 256 KB |
subtask_1_08.txt | AC | 16 ms | 256 KB |
subtask_1_09.txt | AC | 3 ms | 256 KB |
subtask_1_10.txt | AC | 2 ms | 256 KB |
subtask_1_11.txt | AC | 1 ms | 256 KB |
subtask_1_12.txt | AC | 1 ms | 256 KB |
subtask_1_13.txt | AC | 2 ms | 256 KB |
subtask_1_14.txt | AC | 2 ms | 256 KB |
subtask_1_15.txt | AC | 1 ms | 256 KB |
subtask_1_16.txt | AC | 1 ms | 256 KB |
subtask_1_17.txt | AC | 5 ms | 256 KB |
subtask_1_18.txt | AC | 11 ms | 256 KB |
subtask_1_19.txt | AC | 1 ms | 256 KB |
subtask_1_20.txt | AC | 13 ms | 256 KB |
subtask_1_21.txt | AC | 1 ms | 256 KB |
subtask_1_22.txt | AC | 1 ms | 256 KB |
subtask_1_23.txt | AC | 1 ms | 256 KB |
subtask_1_24.txt | AC | 1 ms | 256 KB |
subtask_1_25.txt | AC | 1 ms | 256 KB |
subtask_1_26.txt | AC | 1 ms | 256 KB |
subtask_1_27.txt | AC | 1 ms | 256 KB |
subtask_1_28.txt | AC | 1 ms | 256 KB |
subtask_1_29.txt | AC | 1 ms | 256 KB |
subtask_1_30.txt | AC | 1 ms | 256 KB |