XOR Equal

入门题目

#include<bits/stdc++.h>
#define N 2000005using namespace std;int T,n,X,a[N];
map<int,int>mpp;
map<int,pair<int,int> >mp;int main(){scanf("%d",&T);while (T--){int mx1=0,mx2=0;scanf("%d%d",&n,&X);for (int i=1;i<=n;i++) scanf("%d",&a[i]);mpp.clear();mp.clear();if (!X){for (int i=1;i<=n;i++) mpp[a[i]]++;for (int i=1;i<=n;i++) mx1=max(mx1,mpp[a[i]]);printf("%d %d\n",mx1,mx2);continue;}for (int i=1;i<=n;i++){mp[a[i]].first++;mp[a[i]^X].first++;mp[a[i]^X].second++;}for (int i=1;i<=n;i++){if (mp[a[i]].first>mx1){mx1=mp[a[i]].first;mx2=mp[a[i]].second;}else if (mp[a[i]].first==mx1){mx2=min(mx2,mp[a[i]].second);}}printf("%d %d\n",mx1,mx2);}return 0;
}

Shuffling Parities

入门题

#include<bits/stdc++.h>using namespace std;int T,n,x;int main(){scanf("%d",&T);while (T--){scanf("%d",&n);int cnt1=0;for (int i=1;i<=n;i++){scanf("%d",&x);cnt1+=(x&1);}int cnt2=n-cnt1;int tmp2=n/2;int tmp1=n-tmp2;if (cnt1<tmp2) n-=(tmp2-cnt1);else n-=(tmp1-cnt2);printf("%d\n",n);}return 0;
}

2-D Point Meeting

枚举两个点,再枚举它们六个方向的目标终点,暴力算即可

#include<bits/stdc++.h>
#define N 500005using namespace std;int T,n,a[N],b[N];inline int calc(int x,int y){int cnt=0;for (int i=1;i<=n;i++){if (x==a[i]&&y==b[i]) continue;if (x==a[i]) cnt++;else if (y==b[i]) cnt++;else if (x+y==a[i]+b[i]) cnt++;else if (x-y==a[i]-b[i]) cnt++;else cnt+=2;}return cnt;
}int main(){scanf("%d",&T);while (T--){scanf("%d",&n);int ans=1e9;for (int i=1;i<=n;i++) scanf("%d",&a[i]);for (int i=1;i<=n;i++) scanf("%d",&b[i]);for (int i=1;i<=n;i++) a[i]*=2,b[i]*=2;for (int i=1;i<=n;i++)for (int j=1;j<=n;j++){ans=min(ans,calc(a[i],b[j]));ans=min(ans,calc((a[i]+b[i]+a[j]-b[j])/2,(a[i]+b[i]-a[j]+b[j])/2));ans=min(ans,calc(a[i],b[j]-a[j]+a[i]));ans=min(ans,calc(a[j]-b[j]+b[i],b[i]));ans=min(ans,calc(a[j]+b[j]-b[i],b[i]));ans=min(ans,calc(a[i],a[j]+b[j]-a[i]));}printf("%d\n",ans);}return 0 ;
}

Minimize Digit Sum

考虑B>sqrt(n)和B<=sqrt(n)

对于B<=sqrt(n)直接暴力枚举即可解决

对于B>sqrt(n)部分,我们发现n=x*B+y,我们需要是x+y最小

因为B>sqrt(n),所以x的取值为1,2...sqrt(n),对于每个x的取值我们需要让y最小,也就是B最大

所以对于每一个x最优的B是唯一的,这个部分通过枚举x可以根号n时间内解决

复杂度为Qsqrt(n)

#include<bits/stdc++.h>using namespace std;inline int calc(int x,int y){int sum=0;while (x){sum+=x%y;x/=y;}return sum;
}int main(){int T,n,l,r;scanf("%d",&T);while (T--){scanf("%d%d%d",&n,&l,&r);if (n>=l&&n<=r){printf("%d\n",n);continue;}if (n<l){printf("%d\n",l);continue;}else r=min(r,n);int bk=sqrt(n),ans=2e9,anss=0,mx;if (r<=bk){for (int i=l;i<=r;i++)if (ans>calc(n,i)) anss=i,ans=calc(n,i);}else if (l>bk){for (int i=l;i<=r;i=mx+1){int now=n/i;mx=min(r,n/now);int tmp=n%mx;tmp+=n/mx;if (mx&&n/mx<mx&&tmp<ans) ans=tmp,anss=mx;}}else {for (int i=l;i<=bk;i++) if (ans>calc(n,i)) anss=i,ans=calc(n,i);for (int i=bk+1;i<=r;i=mx+1){int now=n/i;mx=min(r,n/now);int tmp=n%mx;tmp+=n/mx;if (mx&&n/mx<mx&&tmp<ans) ans=tmp,anss=mx;}}printf("%d\n",anss);}return 0;
}

Treasure Hunt

数学题

#include<bits/stdc++.h>
#define N 10000005using namespace std;const int Mod=998244353;
int T,n,m,bin[N];int main(){scanf("%d",&T);bin[0]=1;for(int i=1;i<N;i++)bin[i]=1ll*bin[i-1]*31ll%Mod;while (T--){scanf("%d%d",&n,&m);int ans1=0,ans2=0;for (int i=1;i<n;i++) ans1=(ans1+1ll*i*bin[n-i-1]%Mod)%Mod;for (int i=1;i<m;i++) ans2=(ans2+1ll*i*bin[m-i-1]%Mod)%Mod;int ans=1ll*ans1*ans2%Mod*62ll%Mod;ans=(ans+1ll*m*ans1%Mod+1ll*n*ans2%Mod)%Mod;printf("%d\n",ans);}return 0;
}

Minimum Digit Sum 2

注意到l变成了2,这也就意味着答案不超过logn

那么考虑bk=power(n,1/3)分界

对于<=bk部分暴力即可

对于>=bk部分我们考虑式子a*B*B+b*B+c=n

因为有答案不超过logn的性质

所以我们用logn*logn*logn的时间枚举a,b,c然后计算出对应B即可

#include<bits/stdc++.h>
#define int long longusing namespace std;int n,r,ans,anss;inline void calc(int a,int b,int c){int sum=a+b+c;c-=n;if (!a){if (!b){c+=n;if (c==n&&c+1>r) return;if (c==n&&c<ans) ans=c,anss=c+1;return;}if (abs(c)%b) return;int B=(-c)/b;if (B>r||B<=1) return;if (sum<ans&&a<B&b<B&&c<B) ans=sum,anss=B;return;}int tmp=b*b-4ll*a*c;if (tmp<0) return;int t1=sqrt(tmp);if (t1*t1==tmp){int B=-b+t1;a*=2ll;if (B%a) return;B/=a;if (B>r||B<=1) return;if (sum<ans&&a<B&b<B&&c<B) ans=sum,anss=B;}
}inline void solve(int x){int sum=0,t=n;while (t){sum+=t%x;t/=x;}if(sum<ans)ans=sum,anss=x;
}signed main(){int T;scanf("%lld",&T);while (T--){scanf("%lld%lld",&n,&r);int t=n,cnt=0;while (t){cnt+=(t&1ll);t/=2ll;}ans=1e18;anss=0;for (int i=0;i<=cnt;i++)for (int j=0;j<=cnt;j++)for (int k=0;k<=cnt;k++) calc(i,j,k);int k=pow(n,1.0/3);k++;for (int i=2;i<=min(k,r);i++) solve(i);printf("%lld\n",anss);}return 0;
}

完结啦

Codechef September Challenge 2021 Division 1相关推荐

  1. 语音合成论文优选:M2voc大赛总结The M2voc Challenge 2021

    声明:语音合成论文优选系列主要分享论文,分享论文不做直接翻译,所写的内容主要是我对论文内容的概括和个人看法.如有转载,请标注来源. 欢迎关注微信公众号:低调奋进 The Multi-speaker M ...

  2. LVIS Challenge 2021长尾分布实例分割冠军解决方案

    本文介绍我们在ICCV 2021 LVIS Challenge Workshop上的冠军解决方案. 1. LVIS 2021竞赛简介 1.1 数据集 Large Vocabulary Instance ...

  3. CFCC百套计划2 CodeChef December Challenge 2017 Chef And Easy Xor Queries

    https://www.codechef.com/DEC17/problems/CHEFEXQ 题意: 位置i的数改为k 询问区间[1,i]内有多少个前缀的异或和为k 分块 sum[i][j] 表示第 ...

  4. codechef October Challenge 2017解题报告

    第二次打challenge..果然还是拿不到钱(艹不过大佬)啊. A Balanced Contest 模拟就好. #include <bits/stdc++.h> #define gc ...

  5. [题解]CodeChef APRIL Challenge 17

    Similar Dishes 题意简述 给你两个大小为 4 4的字符串集合,问你并集是不是空集. 数据范围 1≤T≤2001 \leq T \leq 200 2≤len≤10 2 \leq len \ ...

  6. Codechef July Challenge 2018 : Subway Ride

    传送门 首先(想了很久之后)注意到一个性质:同一条边有多种颜色的话保留3种就可以了,这是因为假如最优解要求当前位置与相邻两条边都不相同,那么只要有3条边,就肯定可以满足这一点. 完事就做一个nlogn ...

  7. 【线段树 泰勒展开】Codechef April Challenge 2018 Chef at the Food Fair

    第一次写泰勒展开:本地和CC差距好大 题目大意 大厨住的城市里办了一场美食节.一条街上开设了$N$个摊位,编号为$1∼N$.这天开始时,第$i$个摊位的食物会导致食物中毒的概率是$P_i$.在这一天中 ...

  8. Codechef January Challenge 2018 - Killjee and k-th letter

    题意: 给出一个的串 s,将 s 所有子串按照字典序排列好相接起来形成一个新串q次询问,每一次询问问新串中的第 k 个字符是什么,强制在线. $|s|,q \le 2*10^{5} $ 跟所有子串有关 ...

  9. Codechef August Challenge 2018 : Coordinate Compression

    传送门 外边二分,里面拿线段树维护贪心就行了. #include<cstdio> #include<vector> #include<cstring> #inclu ...

最新文章

  1. python基础:python扩展包的安装方式
  2. 计算机考研我该如何准备,计算机考研该如何准备呢-考研初试
  3. Build 2016: 发布明天的云创新来服务今天的开发者
  4. devtools安装_R语言如何批量安装软件包
  5. C++算法四:顺序查找
  6. iOS越狱开发theOS搭建
  7. 公司新来了个00后测试卷王,老油条表示是真干不过,已被……
  8. 【C】C99 restrict 关键字
  9. lua jit android,某LuaJit游戏解密教程~~
  10. Himawari-8葵花数据的python读取和matlab读取
  11. 小米随身WiFi,Linux下AP热点驱动(开源)
  12. 2018仲恺农业计算机大类录取,仲恺农业工程学院2019录取分数线预测
  13. 华为交换机导入配置_华为交换机配置文件备份与还原
  14. 面试时我们应该问面试官什么问题?
  15. 特征工程中的数据标准化
  16. 极限中0除以常数_第六讲 极限的运算法则
  17. 四、SQL函数②(字符串函数)
  18. 参加项目管理培训的一些体会
  19. 用vscode开发autojs,输出窗口不显示任何输出结果
  20. 5.8 使用轮廓化描边命令制作心形艺术图标 [Illustrator CC教程]

热门文章

  1. 云原生学习——理解pod和容器设计模式
  2. 用css3实现一个会飞的小火箭案例
  3. vue组件获取props_vue中子组件的methods中获取到props中的值方法
  4. 蓝光CsPbBrxCl3-x钙钛矿纳米片/TiO2/ZnTiO3复合粉体/PbTiO_3纳米片的单晶复合材料
  5. 天池全球城市计算AI挑战赛-地铁客流量预测 22/2319
  6. docker删除php,docker的卸载及重新安装方法
  7. 华信国际短信接口文档
  8. 使用foxpsd设计器,实现DIY定制网站设计器、DIY定制小程序、DIY设计APP
  9. ng之ChangeDetectorRef
  10. 安科第一面+中兴软创第一面 总结