#include<bits/stdc++.h>#define int long long#define mk make_pair#define gcd __gcdusingnamespace std;constdouble eps =1e-10;constint mod =1e9+7;constint N =3e5+7;int n,m,k,t =1,cas =1;int a[N],b[N];signedmain(){
cin>>t;while(t--){int x,y;
cin>>n>>m>>x>>y;int res =max(abs(n-x)+abs(m-y),abs(1-x)+abs(1-y));
res =max(res,abs(1-x)+abs(m-y));
res =max(res,abs(n-x)+abs(1-y));
cout<<res<<endl;}return0;}
#include<bits/stdc++.h>#define int long long#define mk make_pair#define gcd __gcdusingnamespace std;constdouble eps =1e-10;constint mod =1e9+7;constint N =3e5+7;int n,m,k,t =1,cas =1;int a[N],b[N];
vector<int> v1;
map<int,int> mp;intcal(int x){int res =0;for(int i =0; i < n ; i ++){if(a[i]!= x ){
res ++;
i += m-1;}}return res;}signedmain(){
cin>>t;while(t--){
cin>>n>>m;
v1.clear();
mp.clear();int maxx =0;int maxi =0;for(int i =0; i < n ; i ++){
cin>>a[i];
mp[a[i]]++;if(mp[a[i]]==1) v1.push_back(a[i]);}int res =1e18;for(int i =0; i < v1.size(); i ++){
res =min(res,cal(v1[i]));}
cout<<res<<endl;}return0;}
C. Bouncing Ball
题意:n个格子,有的格子为空。第一次会跳到 p 格子,然后会跳到 p+k, p+2k, p+3k … 。两种操作。要么填补一个空格子,代价x。要么删掉最前面的一个格子。剩下的格子往前移。代价y。问最少花费多少代价。可以使得球从开始一直弹,弹到结束。
#include<bits/stdc++.h>#define int long long#define mk make_pair#define gcd __gcdusingnamespace std;constdouble eps =1e-10;constint mod =1e9+7;constint N =3e5+7;int n,m,k,t =1,cas =1;int a[N],b[N];
map<int,int> mp;signedmain(){
cin>>t;while(t--){int p;
cin>>n>>p>>k;
string s;
cin>>s;int x,y;
cin>>x>>y;
mp.clear();for(int i =0; i < s.size(); i ++){if(s[i]=='1'){if(i+1> p)
mp[(i+1-p)%k]++;}}int now =0;int need =(n-p)/k;int have = mp[now];int tmp =(need-have+(s[p-1]=='0'))*x;int res = tmp;//cout<<tmp<<endl;for(int i =0; i < n ; i ++){
now =(now+1)%k;if(p+i >= n)break;if(s[i+p]=='1'){
mp[(i+p+1-p)%k]--;}
need =(n-p-i-1)/k;
have = mp[now];//cout<<need<<" "<<have<<endl;
tmp =(need-have+(s[p+i]=='0'))*x + y*(i+1);
res =min(res,tmp);//cout<<tmp<<endl;}
cout<<res<<endl;}return0;}
#include<bits/stdc++.h>#define int long long#define mk make_pair#define gcd __gcdusingnamespace std;constdouble eps =1e-10;constint mod =1e9+7;constint N =3e5+7;int n,m,k,t =1,cas =1;int a[N],b[N];
map<int,int> mp;signedmain(){//cin>>t;while(t--){
cin>>n;for(int i =1; i <= n ; i ++) cin>>a[i];for(int i =1; i <= n ; i ++){
b[i]= a[i]^b[i-1];}int res =1e18;for(int i =1; i <= n ; i ++){for(int j = i ; j-i <=32&& j <= n ; j ++){for(int k = j+1; k-j <=32&& k <= n; k ++){if((b[j]^b[i-1])>(b[k]^b[j])){//cout<< (b[j]^b[i-1])<<" "<<(b[k]^b[j])<<endl;//cout<< ((b[j]^b[i-1]) > (b[k]^b[j])) <<endl;
res =min(res,k-j-1+ j-i);}}}}if(res >1e9) cout<<-1<<endl;else
cout<<res<<endl;}return0;}