题目描述:
输入描述:
输出描述:
示例1:
输入:
4
10 1
1 1
10 1
2 2
10 1
3 3
10 3
1 1
2 2
3 3
输出:
1 1 1 1 1 1 1 1 1 1
0 1 2 3 4 5 6 7 8 9
0 0 1 4 9 16 25 36 49 64
1 2 4 8 14 22 32 44 58 74
题解:
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5,mod=1e9+7;
int dp[N][4];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m;
memset(dp,0,sizeof dp);
scanf("%d %d",&n,&m);
while(m--)
{
int f,pos;
scanf("%d %d",&f,&pos);
dp[pos][f]++;
if(f==3)dp[pos+1][f]++;
}
for(int i=1;i<=n;i++)dp[i][1]=(dp[i][1]+dp[i-1][1])%mod;
for(int i=1;i<=n;i++)dp[i][2]=(dp[i][2]+dp[i-1][2])%mod;
for(int i=1;i<=n;i++)dp[i][2]=(dp[i][2]+dp[i-1][2])%mod;
for(int i=1;i<=n;i++)dp[i][3]=(dp[i][3]+dp[i-1][3])%mod;
for(int i=1;i<=n;i++)dp[i][3]=(dp[i][3]+dp[i-1][3])%mod;
for(int i=1;i<=n;i++)dp[i][3]=(dp[i][3]+dp[i-1][3])%mod;
for(int i=1;i<=n;i++)
{
printf("%d ",(dp[i][1]+dp[i][2]+dp[i][3])%mod);
}
printf("\n");
}
}
哎,原来都会的再做一遍就忘掉了,果然还是得多练手推啊