Professional Documents
Culture Documents
struct matrix
{
ll row, col;
ll a[101][101];
matrix (int row, int col) : row(row), col(col)
{
memset (a, 0, sizeof(a));
}
};
- Nhân ma trận:
matrix nhan (matrix A, matrix B)
{
matrix C(A.row, B.col);
for (int i = 0; i < A.row; i++)
{
for (int j = 0; j < B.col; j++)
{
for (int k = 0; k <= A.col; k++)
{
C.a[i][j] += A.a[i][k]*B.a[k][j];
C.a[i][j] %= mod;
}
}
}
return C;
}
- Mũ ma trận:
matrix power (matrix A,ll n)
{
matrix res(A.row, A.col);
for (int i = 0; i < A.row; i++)
res.a[i][i]=1;
while (n > 0)
{
if (n & 1)
res=nhan(res,A);
A = nhan(A,A);
n /= 2;
}
return res;
}
ll n, a[100001], m, x;
ll chiadoan (ll k)
{
ll s = 0;
for (int i = 1; i <= n; i++)
if (a[i] > k)
s = s + a[i] - k;
return s;
}
ll tknp (ll h)
{
ll dau = 1, cuoi = 1e18, giua, ans = 0;
while (dau <= cuoi)
{
ll giua = (dau + cuoi)/2;
if (chiadoan(giua)>=h)
{
ans = giua;
dau = giua + 1;
}
else
cuoi = giua - 1;
}
return ans;
}
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const ll N = 1e5 + 5;
ll a[N], b[N], x, n, d = 0;
int main()
{
cin>>n;
fill(b, b + n + 1, N);
for (int i = 0; i < n; ++i)
cin>>a[i];
for (int i = 0; i < n; ++i)
{
ll id = 0, L = 1, R = d;
while (L <= R)
{
ll mid = (L + R) / 2;
if (b[mid] < a[i])
{
id = mid;
L = mid + 1;
}
else
R = mid - 1;
}
if (id == d)
d++;
b[id+1] = a[i];
}
cout<<d<<"\n";
return 0;
}
- Sàng ước:
void sanguoc()
{
for (int i = 1; i <= 1000005; i++)
for (int j = i; j <= 1000005; j+=i)
f[j]++ ;
}
- Tổng trên ma trận:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll m, n, t, a[205][205], r1, r2, l1, l2, s[205][205];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin>>m>>n;
cin>>t;
for (int i = 1; i <= m; i++)
for (int j = 1; j <= n; j++)
cin>>a[i][j];
s[0][0] = 0;
for (int i = 1; i <= m; i++)
for (int j = 1; j <= n; j++)
s[i][j] = s[i-1][j] + s[i][j-1] - s[i-1][j-1] + a[i][j];
while (t--)
{
cin>>l1>>l2>>r1>>r2;
cout<<s[r1][r2] - s[r1][l2-1] - s[l1-1][r2] + s[l1-1][l2-1]<<"\n";
}
}
- SOLUONGDOANCONCOTONGBANG0:
#include<bits/stdc++.h>
#define nmax 10000007
#define nmax2 1000006
#define nmax3 100005
#define mod 1000000007
#define fi first
#define se second
#define ma -1e18
#define mi 1e18
#define ll long long
using namespace std;
ll a[nmax2],dp[nmax2+1];
map<ll,ll>d;
ll n,s=0;
int main(){
cin >>n;
for (int i =1;i<=n;i++)
cin >>a[i];
for (int i =1;i<=n;i++){
dp[i]=dp[i-1]+a[i];
d[dp[i]]++;
}
for (int i =1;i<=n;i++){
d[dp[i]]--;
if(dp[i]==0) s++;
s+=d[dp[i]];
}
cout <<s;
}
- Đệ quy mũ:
ll mu (ll a, ll n)
{
ll res = 1;
if (n == 1)
return a%mod;
if (n & 1)
res = (res * a)%mod;
a = (a*a)%mod;
return (res*mu(a, n/2))%mod;
}