2025年11月02日训练赛
B4080 [语言月赛 202412] 聪明猪猪大赛
签到
P10114 [LMXOI Round 1] Size
诈骗qaq,值域个数是sqrt(n)级别的,暴力
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define yes cout << "Yes" << endl
#define no cout << "No" << endl
#define pii pair<int,int>
#define ll long long
#define pb push_back
#define ft first
#define se second
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
#define int long long
const int maxn = 5e7 + 10;
int cnt[maxn];
void solve(){
int n;
cin >> n;
vector<int> vec;
for(int i = 1; i <= n; i ++){
int x; cin >> x;
cnt[x] ++;
vec.pb(x);
}
sort(vec.begin(), vec.end());
vec.erase(unique(vec.begin(), vec.end()), vec.end());
int m = vec.size();
ll ans = 0;
for(int i = 0; i < m; i ++){
for(int j = 0; j < m; j ++){
ans += 1ll * cnt[vec[i]] * cnt[vec[j]] * (__builtin_popcount(vec[i] + vec[j]));
ans += 1ll * cnt[vec[i]] * cnt[vec[j]] * (__builtin_popcount(max(vec[i], vec[j]) - min(vec[i], vec[j])));
}
}
cout << ans << endl;
}
signed main(){
std::ios::sync_with_stdio(false);
int T=1;//cin>>T;
while(T--){
solve();
}
}
P11874 [威海市赛2024] 不是一道简单的构造题
签到,直接yes
P9816 少项式复合幂
套f多少层,而且p 1e5 可以做
倍增,O(qlogy)
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define yes cout << "Yes" << endl
#define no cout << "No" << endl
#define pii pair<int,int>
#define ll long long
#define pb push_back
#define ft first
#define se second
#define inf 0x3f3f3f3f
#define INF 0x3f3f3f3f3f3f3f3f
#define int long long
int m, q, p;
int a[30], b[30];
int qp(int a, int b){
int res = 1;
while(b){
if(b&1) res = res * a % p; a = a * a % p; b >>= 1;
}return res;
}
int cal(int x){
int px = x;
int res = 0;
for(int i = 1; i <= m; i ++){
res = (res + a[i] * qp(x, b[i]) % p) % p;
}
return res;
}
int to[100010][40];
void solve(){
cin >> m >> q >> p;
for(int i = 1; i <= m; i ++){
cin >> a[i] >> b[i];
}
for(int i = 0; i < p; i ++){
to[i][0] = cal(i);
}
for(int j = 1; j <= 30; j ++){
for(int i = 0; i < p; i ++){
to[i][j] = to[to[i][j - 1]][j - 1];
}
}
while(q --){
int x, y; cin >> x >> y;
x %= p;
int res = x;
for(int i = 0; i <= 30; i ++){
if(y & (1<<i)) res = to[res][i] %p;
}
cout << res << '\n';
}
}
signed main(){
std::ios::sync_with_stdio(false);
int T = 1; //cin >> T;
while(T--){
solve();
}
}

浙公网安备 33010602011771号