VP时间
A.xor
a^a=0;
0^a=a;
直接全部
然后都变成s
然后再全部
全部都0
1.wa
2.wa
如果是奇数
要变成偶数次xor
3.ac
B.贪心
1.a,b都是主要城市就0
2.a,b一个为主要城市
a可以去最近的主要城市
3.a,b都不是主要城市
min(st-主要-ed,st-ed)
1.ac
C.
mex
没思路
题解
A.
// Problem: A. Make It Zero
// Contest: Codeforces - Codeforces Round 896 (Div. 2)
// URL: https://codeforces.com/contest/1869/problem/A
// Memory Limit: 256 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)
//へ /|
// /\7 ∠_/
// / │ / /
// │ Z _,< / /`ヽ
// │ ヽ / 〉
// Y ` / /
// イ● 、 ● ??〈 /
// () へ | \〈
// >ー 、_ ィ │ //
// / へ / ノ<| \\
// ヽ_ノ (_/ │//
// 7 |/
// >―r ̄ ̄`ー―_
#include <iostream>
#include <cstring>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#include <queue>
#include <deque>
#define eps 1e-5
#define INF 1e9
using namespace std;
typedef long long ll;
namespace Lan {
inline string sread() {
string s="";char e=getchar();
while(e==' '||e=='\n')e=getchar();
while(e!=' '&&e!='\n')s+=e,e=getchar();
return s;
}
inline void swrite(string s){
for(char e:s)putchar(e);
printf("\n");
}
inline ll read() {
ll x=0,y=1;char c=getchar();
while(!isdigit(c)){if(c=='-')y=-1;c=getchar();}
while(isdigit(c)){x=(x<<3)+(x<<1)+(c^48);c=getchar();}
return x*=y;
}
inline void write(ll x) {
if(x<0)x=-x,putchar('-');ll sta[35],top=0;
do sta[top++]=x%10,x/=10;while(x);
while(top)putchar(sta[--top]+'0');
}
}using namespace Lan;
const int N = 2e6 + 9;
int a[N];
struct node{
};
struct Lanthanmum{
void start(){
int n;
n=read();
for(int i=1;i<=n;i++){
a[i]=read();
}
if(!(n&1)){
cout<<2<<'\n';
cout<<1<<" "<<n<<'\n';
cout<<1<<" "<<n<<'\n';
}else{
cout<<4<<'\n';
cout<<2<<" "<<n<<'\n';
cout<<2<<" "<<n<<'\n';
cout<<1<<" "<<2<<'\n';
cout<<1<<" "<<2<<'\n';
}
}
}Genshin;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int q;
q=read();
while (q--) {
Genshin.start();
}
return 0;
}
B.
// Problem: B. 2D Traveling
// Contest: Codeforces - Codeforces Round 896 (Div. 2)
// URL: https://codeforces.com/contest/1869/problem/B
// Memory Limit: 256 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)
//へ /|
// /\7 ∠_/
// / │ / /
// │ Z _,< / /`ヽ
// │ ヽ / 〉
// Y ` / /
// イ● 、 ● ??〈 /
// () へ | \〈
// >ー 、_ ィ │ //
// / へ / ノ<| \\
// ヽ_ノ (_/ │//
// 7 |/
// >―r ̄ ̄`ー―_
#include <iostream>
#include <cstring>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <vector>
#include <stack>
#include <map>
#include <set>
#include <bitset>
#include <queue>
#include <deque>
#define eps 1e-5
#define INF 1e10
using namespace std;
typedef long long ll;
namespace Lan {
inline string sread() {
string s="";char e=getchar();
while(e==' '||e=='\n')e=getchar();
while(e!=' '&&e!='\n')s+=e,e=getchar();
return s;
}
inline void swrite(string s){
for(char e:s)putchar(e);
printf("\n");
}
inline ll read() {
ll x=0,y=1;char c=getchar();
while(!isdigit(c)){if(c=='-')y=-1;c=getchar();}
while(isdigit(c)){x=(x<<3)+(x<<1)+(c^48);c=getchar();}
return x*=y;
}
inline void write(ll x) {
if(x<0)x=-x,putchar('-');ll sta[35],top=0;
do sta[top++]=x%10,x/=10;while(x);
while(top)putchar(sta[--top]+'0');
}
}using namespace Lan;
const int N = 2e6 + 9;
int x[N],y[N];
struct node{
};
ll dist(ll x1,ll x2,ll y1,ll y2){
return abs(x1-x2)+abs(y1-y2);
}
struct Lanthanmum{
void start(){
int n,k,a,b;
n=read();
k=read();
a=read();
b=read();
for(int i=1;i<=n;i++){
x[i]=read();
y[i]=read();
}
ll ans=dist(x[a],x[b],y[a],y[b]);
ll sum1=INF,sum2=INF;
if(a<=k && b<=k){
cout<<0<<'\n';
return;
}else{
if(a<=k && b>k){
for(int i=1;i<=k;i++){
ll res=dist(x[i],x[b],y[i],y[b]);
ans=min(ans,res);
}
}else if(a>k && b<=k){
for(int i=1;i<=k;i++){
ll num1=dist(x[i],x[a],y[i],y[a]);
ans=min(ans,num1);
}
}else if(a>k && b>k){
for(int i=1;i<=k;i++){
ll res1=dist(x[i],x[a],y[i],y[a]);
ll res2=dist(x[i],x[b],y[i],y[b]);
sum1=min(sum1,res1);
sum2=min(sum2,res2);
}
ans=min(ans,sum1+sum2);
}
}
cout<<ans<<'\n';
}
}Genshin;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int q;
q=read();
while (q--) {
Genshin.start();
}
return 0;
}
C.
这个构造说法很大,下次一定理解
// Problem: C. Fill in the Matrix
// Contest: Codeforces - Codeforces Round 896 (Div. 2)
// URL: https://codeforces.com/contest/1869/problem/C
// Memory Limit: 256 MB
// Time Limit: 2000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include <iostream>
#define eps 1e-5
#define INF 1e9
using namespace std;
typedef long long ll;
const int N = 2e6 + 9;
int a[N];
void Lan(){
int n,m;
cin>>n>>m;
if(m==1)cout<<0<<'\n';
else if(n>m-1)cout<<m<<'\n';
else cout<<n+1<<'\n';
for(int i=0;i<min(m-1,n);i++){
for(int j=0;j<m;j++){
cout<<(j+i)%m<<' ';
}
cout<<'\n';
}
if (n>m-1){
for(int i=m-1;i<n;i++) {
for(int j=0;j<m;j++) {
cout<<j<<' ';
}
cout<<'\n';
}
}
return;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int q;
cin>>q;
while (q--) {
Lan();
}
return 0;
}