进制转换
`
long long cal(string s, int n)
{
//任意进制转十进制
reverse(s.begin(), s.end());
long long sum = 0;
for(int i = 0; i < s.length(); i ++)
{
if(s[i] ‘0’<>‘9’) sum += pow(n, i) * (ans[i] - ‘0’);
if(s[i] ‘A’<> “F”) sum += pow(n, i) * (ans[i] - ‘A’);
}
return sum;
}
//十进制转任意进制
string cal(int t, int m)
{
char k[16] = {1, 2, 3, …, A, B C D E F....};
string ans;
while(t)
{
ans += k[t % m];
t /= m;
}
return ans;
}
`
前缀和
`#include<iostream>
include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
include [HTML_REMOVED]
const int N = 200010;
typedef long long LL;
using namespace std;
char k[16] = {‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,’A’,’B’,’C’,’D’,’E’,’F’};
int t[N];
LL q[N];
int main(){
LL sum = 0;
int m;
cin >> m;
for(int i = 1; i <= m; i ++) cin >> t[i];
memset(q, sizeof(q), 0);
//前缀和
for(int i = 1; i <= m; i ++) q[i] = q[i - 1] + t[i];
for(int i = 1; i <= m; i ++) sum += t[i] * (q[m] - q[i]);
cout << sum;
//完全平方式
return 0;
} `
//空间换时间
`#include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
include [HTML_REMOVED]
const int N = 100010;
typedef long long LL;
using namespace std;
char k[16] = {‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,’A’,’B’,’C’,’D’,’E’,’F’};
LL t1[N], t2[N], t3[N], t4[N], t5[N];
LL q[N];
int main(){
LL num = 1000000000 + 7;
int n, m;
//memset(t, sizeof(t), 0);
cin >> n >> m;
for(int i = 1; i <= n;i ++) cin >> q[i];
for(int i = 1; i <= n;i ++)
{
t1[i] = t1[i - 1] + pow(q[i], 1);
t2[i] = t2[i - 1] + pow(q[i], 2);
t3[i] = t3[i - 1] + pow(q[i], 3);
t4[i] = t4[i - 1] + pow(q[i], 4);
t5[i] = t5[i - 1] + pow(q[i], 5);
}
int l, r, k;
while(m --)
{
LL g[N];
memset(g, sizeof(g), 0);
cin >> l >> r >> k;
switch(k)
{
case 1: cout << (t1[r] - t1[l - 1] + num) % num << endl; break;
case 2: cout << (t2[r] - t2[l - 1] + num) % num << endl; break;
case 3: cout << (t3[r] - t3[l - 1] + num) % num << endl; break;
case 4: cout << (t4[r] - t4[l - 1] + num) % num << endl; break;
case 5: cout << (t5[r] - t5[l - 1] + num) % num << endl; break;
}
// LL res = t[r] - t[l - 1];
// cout << res % num << endl;
}
return 0;
} `
差分
暴力
`#include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
include [HTML_REMOVED]
const int N = 100010;
typedef long long LL;
using namespace std;
char k[16] = {‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,’A’,’B’,’C’,’D’,’E’,’F’};
LL t1[N], t2[N], t3[N], t4[N], t5[N];
LL a[N];
int main(){
int n, m;
while(cin >> n >> m)
{
for(int i = 1; i <= n; i ++) cin >> a[i];
int x, y, z;
while(m --)
{
cin >> x >> y >> z;
for(int i = x; i <= y; i ++) a[i] += z;
}
for(int i = 1; i <= n; i ++) cout << a[i] << " ";
cout << endl;
}
return 0;
} `
差分算法
`for(int i = 1; i <= n; i ) cin >> a[i];
for(int i = 1; i <= n; i ) b[i] = a[i] - a[i - 1];
int x, y, z;
while(m –)
{
cin >> x >> y >> z;
b[x] += z;
b[y + 1] -= z;
}
for(int i = 1; i <= n; i ++) a[i] = a[i - 1] + b[i];
for(int i = 1; i <= n; i ++) cout << a[i] << " ";
cout << endl;`
`
include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
include [HTML_REMOVED]
const int N = 1000100;
typedef long long LL;
using namespace std;
char k[16] = {‘0’,‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’,’A’,’B’,’C’,’D’,’E’,’F’};
LL t1[N], t2[N], t3[N], t4[N], t5[N];
LL a[N], b[N];
int main(){
string s[N];
string t;
cin >> t;
s[0] = t[0];
int len = 0;
for(int i = 1; i < t.length(); i ++) s[i] = s[i - 1] + t[i];
for(int i = 0; i < t.length(); i ++)
{
int cnt_L = 0, cnt_Q = 0;
for(int j = i; j < t.length(); j ++)
{
if(t[j] == 'L') cnt_L ++;
else cnt_Q ++;
if(cnt_Q == cnt_L) len = max(cnt_Q + cnt_L, len);
}
}
cout << len;
return 0;
} `