Pinely Round 4 (Div. 1 + Div. 2) A - E
A. Maximize the Last Element
答案是奇数位的最大值
点击查看代码
#include <bits/stdc++.h>
#define FOR(i,j,k) for(int i = (j);i <= (k);i ++)
#define ROF(i,j,k) for(int i = (j);i >= (k);i --)
#define PII pair<int,int>
#define int long long
#define ULL unsigned long long
#define db double
#define x first
#define y second
#define sp(x) fixed << setprecision(x)
#define all(g) g.begin(), g.end()
#define M(x) x %= mod, x += mod, x %= mod
#define YES cout << "YES\n"
#define NO cout << "NO\n"
#define Yes cout << "Yes\n"
#define No cout << "No\n"
#define ANS cout << ans << '\n'
#define de(p) cout << #p << ' ' << p << '\n'
#define END(i, n) (i == n ? '\n' : ' ')
using namespace std;
const int N = 2e5 + 10,INF = 1e9,mod = 26;
int n,m,k;
void solve()
{
int ans = 0;
cin >> n;
FOR(i,1,n)
{
int x;cin >> x;
if (i & 1) ans= max(ans,x);
}
ANS;
}
signed main()
{
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int T = 1;
cin >> T;
while(T --)
{
solve();
}
return 0;
}
B. AND Reconstruction
因为对于每个
然后再检验一边
点击查看代码
#include <bits/stdc++.h>
#define FOR(i,j,k) for(int i = (j);i <= (k);i ++)
#define ROF(i,j,k) for(int i = (j);i >= (k);i --)
#define PII pair<int,int>
#define int long long
#define ULL unsigned long long
#define db double
#define x first
#define y second
#define sp(x) fixed << setprecision(x)
#define all(g) g.begin(), g.end()
#define M(x) x %= mod, x += mod, x %= mod
#define YES cout << "YES\n"
#define NO cout << "NO\n"
#define Yes cout << "Yes\n"
#define No cout << "No\n"
#define ANS cout << ans << '\n'
#define de(p) cout << #p << ' ' << p << '\n'
#define END(i, n) (i == n ? '\n' : ' ')
using namespace std;
const int N = 2e5 + 10,INF = 1e9,mod = 26;
int n,m,k;
int b[N];
int a[N];
void solve()
{
cin >> n;
FOR(i,1,n - 1) cin >> b[i];
FOR(i,1,n) a[i] = 0;
FOR(i,1,n - 1)
{
FOR(j,0,29)
{
if (b[i] >> j & 1)
{
a[i] |= (1 << j);
a[i + 1] |= (1 << j);
}
}
}
FOR(i,1,n - 1)
{
if ((a[i] & a[i + 1]) != b[i])
{
cout << -1 << '\n';
return;
}
}
FOR(i,1,n) cout << a[i] << END(i,n);
}
signed main()
{
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int T = 1;
cin >> T;
while(T --)
{
solve();
}
return 0;
}
C. Absolute Zero
由于最多不超过40次操作,所以我们可以直接暴力模拟每一次操作
每个操作是将每个
由于我们最后需要把全部的
然后直接暴力模拟
点击查看代码
#include <bits/stdc++.h>
#define FOR(i,j,k) for(int i = (j);i <= (k);i ++)
#define ROF(i,j,k) for(int i = (j);i >= (k);i --)
#define PII pair<int,int>
#define int long long
#define ULL unsigned long long
#define db double
#define x first
#define y second
#define sp(x) fixed << setprecision(x)
#define all(g) g.begin(), g.end()
#define M(x) x %= mod, x += mod, x %= mod
#define YES cout << "YES\n"
#define NO cout << "NO\n"
#define Yes cout << "Yes\n"
#define No cout << "No\n"
#define ANS cout << ans << '\n'
#define de(p) cout << #p << ' ' << p << '\n'
#define END(i, n) (i == n ? '\n' : ' ')
using namespace std;
const int N = 2e5 + 10,INF = 1e9,mod = 26;
int n,m,k;
int a[N];
void solve()
{
cin >> n;
FOR(i,1,n) cin >> a[i];
vector<int> ans;
FOR(j,1,40)
{
int mi = a[1],ma = a[1];
FOR(i,1,n)
{
mi = min(mi,a[i]);
ma = max(ma,a[i]);
}
int t = mi + ma >> 1;
ans.push_back(t);
FOR(i,1,n)
{
a[i] = abs(a[i] - t);
}
// sort(a + 1,a + 1 + n);
}
int flag = 0;
FOR(i,1,n)
if (a[i] != 0)
flag = 1;
if (flag) cout << -1 << '\n';
else
{
cout << 40 << '\n';
for(auto i : ans) cout << i << ' ';
cout << '\n';
}
}
signed main()
{
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int T = 1;
cin >> T;
while(T --)
{
solve();
}
return 0;
}
D. Prime XOR Coloring
小于等于
大于6个点的时候,由于
的所有质数都是奇数的,即二进制中的第
再考虑质数
所以只需要
点击查看代码
#include <bits/stdc++.h>
#define FOR(i,j,k) for(int i = (j);i <= (k);i ++)
#define ROF(i,j,k) for(int i = (j);i >= (k);i --)
#define PII pair<int,int>
#define int long long
#define ULL unsigned long long
#define db double
#define x first
#define y second
#define sp(x) fixed << setprecision(x)
#define all(g) g.begin(), g.end()
#define M(x) x %= mod, x += mod, x %= mod
#define YES cout << "YES\n"
#define NO cout << "NO\n"
#define Yes cout << "Yes\n"
#define No cout << "No\n"
#define ANS cout << ans << '\n'
#define de(p) cout << #p << ' ' << p << '\n'
#define END(i, n) (i == n ? '\n' : ' ')
using namespace std;
const int N = 2e5 + 10,INF = 1e9,mod = 26;
int n,m,k;
int a[] = {0,1,2,2,3,3,4};
void solve()
{
cin >> n;
if (n > 6)
{
cout << 4 << '\n';
FOR(i,1,n)
{
cout << (i - 1) % 4 + 1 << END(i,n);
}
}
else
{
cout << a[n] << '\n';
FOR(i,1,n) cout << a[i] << END(i,n);
}
}
signed main()
{
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int T = 1;
cin >> T;
while(T --)
{
solve();
}
return 0;
}
E. Coloring Game
先对整张图做一遍二分图染色。
如果这个图不是二分图的话,只需选
如果这个图是二分图的话,我们需要选
染色的策略就是颜色
点击查看代码
#include <bits/stdc++.h>
#define FOR(i,j,k) for(int i = (j);i <= (k);i ++)
#define ROF(i,j,k) for(int i = (j);i >= (k);i --)
#define PII pair<int,int>
#define int long long
#define ULL unsigned long long
#define db double
#define x first
#define y second
#define sp(x) fixed << setprecision(x)
#define all(g) g.begin(), g.end()
#define M(x) x %= mod, x += mod, x %= mod
#define YES cout << "YES\n"
#define NO cout << "NO\n"
#define Yes cout << "Yes\n"
#define No cout << "No\n"
#define ANS cout << ans << '\n'
#define de(p) cout << #p << ' ' << p << '\n'
#define END(i, n) (i == n ? '\n' : ' ')
using namespace std;
const int N = 2e5 + 10,INF = 1e9,mod = 26;
int n,m,k;
vector<int> G[N];
int color[N];
void init()
{
}
bool dfs(int u,int now)
{
color[u] = now;
for(auto i : G[u])
{
if (color[i])
{
if (color[i] == color[u]) return 0;
}
else
{
color[i] = 3 - color[u];
if (!dfs(i,3 - now))
{
return 0;
}
}
}
return 1;
}
void solve()
{
cin >> n >> m;
FOR(i,1,n) G[i].clear(),color[i] = 0;
FOR(i,1,m)
{
int u,v;cin >> u >> v;
G[u].emplace_back(v);
G[v].emplace_back(u);
}
int f = 1;
FOR(i,1,n)
{
if (!color[i])
{
if (!dfs(i,1)) f = 0;
}
}
if (!f)
{
cout << "Alice" << endl;
FOR(i,1,n)
{
cout << 1 << ' ' << 2 << endl;
int a,b;cin >> a >> b;
}
}
else
{
cout << "Bob" << endl;
queue<int> q1,q2;
FOR(i,1,n)
{
if (color[i] == 1) q1.push(i);
else q2.push(i);
}
FOR(i,1,n)
{
int a,b;cin >> a >> b;
if (a == 1 || b == 1)
{
if (q1.size())
{
cout << q1.front() << ' ' << 1 << endl;
q1.pop();
}
else
{
cout << q2.front() << ' ' << max(a,b) << endl;
q2.pop();
}
}
else
{
if (q2.size())
{
cout << q2.front() << ' ' << 3 << endl;
q2.pop();
}
else
{
cout << q1.front() << ' ' << 2 << endl;
q1.pop();
}
}
}
}
}
signed main()
{
ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
int T = 1;
cin >> T;
init();
while(T --)
{
solve();
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步