********
************
####....#.
#..###.....##....
###.......###### ### ###
........... #...# #...#
##*####### #.#.# #.#.#
####*******###### #.#.# #.#.#
...#***.****.*###.... #...# #...#
....**********##..... ### ###
....**** *****....
#### ####
###### ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
########################################## #----------#
#.....#......##.....#......##.....#......# #----------#
########################################## #----------#
#.#..#....#..##.#..#....#..##.#..#....#..# #----------#
########################################## ############
https://ac.nowcoder.com/acm/contest/19483/F
csdn
https://blog.csdn.net/laysan/article/details/122588791
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
int f[N][10],t[10];//t中存放顺序
int n,m,l,r;
int main(){
cin>>n>>m;
for(int i=0;i<10;i++) f[0][i]=i; //初始状态
for(int i=1;i<=n;i++){
cin>>l>>r;
for(int j=0;j<10;j++)
f[i][j]=f[i-1][j];//本轮初始化为上一轮
swap(f[i][l],f[i][r]);//新一轮的改变
}
while(m--){
cin>>l>>r;
for(int i=0;i<10;i++)//l的上一轮状态
t[f[l-1][i]]=i;//将第l-1次的序列对号至1~n
for(int i=0;i<10;i++){//变换位置
if(i) cout<<" "<<t[f[r][i]];
else cout<<t[f[r][i]];
}
cout<<endl;
}
return 0;
}
https://ac.nowcoder.com/acm/contest/19483/I
https://ac.nowcoder.com/acm/contest/19483/J
#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ull;
int a[100010];
int main()
{
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
int ans = 0;
for (int i = n; i >= 1; i--)
{
a[i] = a[i] - a[i - 1];
if(a[i]>0) ans+=a[i];//前缀和差分约束思想
//另一个样例,可以反着理解,,
//从 n变成0
//变成 从0变成n理解
}
printf("%d\n", ans);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
//typedef __int128 LL;//2的128
typedef long long ll; //2的64
#define int long long
// 1e9,, 1e19,,1e38
int a[100010],b[100010],c[100010];
const int N=1e9+7;
void add(int n, int s[])
{
for(int i=1;i<=n;i++)
s[i]=(s[i]+s[i-1])%N;
}
void solve()
{
int n,m;cin>>n>>m;
for(int i=1;i<=n;i++)
{
a[i]=0;b[i]=0;c[i]=0;
}
while(m--)
{
int s,pos;
cin>>s>>pos;
if(s==1) a[pos]++;
else if(s==2) b[pos]++;
else if(s==3)
{c[pos]++;c[pos+1]++;
}
}
add(n,a);
add(n,b),add(n,b);
add(n,c),add(n,c),add(n,c);
for(int i=1;i<=n;i++)
{
cout<<((a[i])+(b[i])+c[i])%N<<" ";
}
cout<<endl;
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int t; cin>>t;
while(t--)
{
solve();
}
return 0;
}