A - Bitwise Exclusive Or
水的过分了..
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#define ll long long
#define ull unsigned long long
#define rep(i,a,n) for (int i=a;i<=n;i++)
#define per(i,a,n) for (int i=n;i>=a;i--)
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
inline ll read()
{
ll x=0,w=1; char ch=0;ch=getchar();
while(ch>'9'||ch<'0'){if(ch=='-')w=-1;ch=getchar();}
while(ch<='9'&&ch>='0'){x=(x<<3)+(x<<1)+(ch-48);ch=getchar();}
return x*w;
}
inline void print(ll x)
{
if(x<0){x=-x;putchar('-');}
if(x>9)print(x/10);
putchar(x%10+48);
}
int n,m;
int main()
{
ios
cin>>n>>m;
cout<<(n^m)<<endl;
return 0;
}
https://atcoder.jp/contests/abc213/tasks/abc213_b
大水漫灌
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#define ll long long
#define ull unsigned long long
#define rep(i,a,n) for (int i=a;i<=n;i++)
#define per(i,a,n) for (int i=n;i>=a;i--)
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
inline ll read()
{
ll x=0,w=1; char ch=0;ch=getchar();
while(ch>'9'||ch<'0'){if(ch=='-')w=-1;ch=getchar();}
while(ch<='9'&&ch>='0'){x=(x<<3)+(x<<1)+(ch-48);ch=getchar();}
return x*w;
}
inline void print(ll x)
{
if(x<0){x=-x;putchar('-');}
if(x>9)print(x/10);
putchar(x%10+48);
}
const int maxn=2e5+5;
int n;pair<int,int>num[maxn];
bool cmp(pair<int,int> a, pair<int,int> b)
{
return a.second<b.second;
}
int main()
{
ios
cin>>n;
rep(i,1,n)
{
cin>>num[i].second;
num[i].first=i;
}
sort(num+1,num+1+n,cmp);
cout<<num[n-1].first<<endl;
return 0;
}
https://atcoder.jp/contests/abc213/tasks/abc213_c
给你n,m,t,nm为图的范围,t为点的数量。
接下来输入点的位置。
如果一行全部没有点或者一列全部没有点,这行就可以删掉。
最后输出化简后的点的位置。
把x和y分别离散化,输出即可。
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#define ll long long
#define ull unsigned long long
#define rep(i,a,n) for (int i=a;i<=n;i++)
#define per(i,a,n) for (int i=n;i>=a;i--)
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
inline ll read()
{
ll x=0,w=1; char ch=0;ch=getchar();
while(ch>'9'||ch<'0'){if(ch=='-')w=-1;ch=getchar();}
while(ch<='9'&&ch>='0'){x=(x<<3)+(x<<1)+(ch-48);ch=getchar();}
return x*w;
}
inline void print(ll x)
{
if(x<0){x=-x;putchar('-');}
if(x>9)print(x/10);
putchar(x%10+48);
}
const int maxn=2e5+5;
struct node
{
int x,y,id;
}p[maxn];
int lshx[maxn]={0},lshy[maxn]={0};
int n,m,t;
int main()
{
ios
cin>>n>>m>>t;
rep(i,1,t)
{
cin>>p[i].x>>p[i].y;
lshx[i]=p[i].x;lshy[i]=p[i].y;
p[i].id=i;
}
int reu=0;
sort(lshx+1,lshx+1+t);
reu=unique(lshx+1,lshx+1+t)-lshx-1;
for(int i=1;i<=t;i++)
p[i].x=lower_bound(lshx+1,lshx+1+reu,p[i].x)-lshx;
//cout<<"lshx"<<' ';rep(i,1,t)cout<<lshx[i]<<' ';cout<<endl;
sort(lshy+1,lshy+1+t);
reu=unique(lshy+1,lshy+1+t)-lshy-1;
for(int i=1;i<=t;i++)
p[i].y=lower_bound(lshy+1,lshy+1+reu,p[i].y)-lshy;
//cout<<"lshy"<<' ';rep(i,1,t)cout<<lshy[i]<<' ';cout<<endl;
for(int i=1;i<=t;i++)
cout<<p[i].x<<' '<<p[i].y<<endl;
return 0;
}
离散化教程是参考的这个。
https://blog.youkuaiyun.com/weixin_43061009/article/details/82083983
https://atcoder.jp/contests/abc213/tasks/abc213_d
emmm,dfs序?
欧拉序,建图dfs就行。
以后不能再迷信前向星了。。有些时候对边顺序有要求的时候不能前向星。
还有n个点,n-1条边,排序的时候要对个点排序
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#define ll long long
#define ull unsigned long long
#define rep(i,a,n) for (int i=a;i<=n;i++)
#define per(i,a,n) for (int i=n;i>=a;i--)
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
inline ll read()
{
ll x=0,w=1; char ch=0;ch=getchar();
while(ch>'9'||ch<'0'){if(ch=='-')w=-1;ch=getchar();}
while(ch<='9'&&ch>='0'){x=(x<<3)+(x<<1)+(ch-48);ch=getchar();}
return x*w;
}
inline void print(ll x)
{
if(x<0){x=-x;putchar('-');}
if(x>9)print(x/10);
putchar(x%10+48);
}
int n,a,b;
const int maxn=3e5+5;
int vis[maxn];
vector<int>e[maxn];
void dfs(int u)
{
printf("%d ",u);
vis[u]=1;
int a=e[u].size();
for(int i=0;i<a;i++)
{
int v=e[u][i];
if(vis[v]==1)continue;
dfs(v);
printf("%d ",u);
}
}
int main()
{
ios
cin>>n;
n--;
rep(i,1,n)
{
cin>>a>>b;
e[b].push_back(a);
e[a].push_back(b);
}
for(int i=1;i<=n+1;i++)sort(e[i].begin(),e[i].end());
dfs(1);
return 0;
}