Codechef September Challenge 2021 Division 1
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相关推荐
- 语音合成论文优选:M2voc大赛总结The M2voc Challenge 2021
声明:语音合成论文优选系列主要分享论文,分享论文不做直接翻译,所写的内容主要是我对论文内容的概括和个人看法.如有转载,请标注来源. 欢迎关注微信公众号:低调奋进 The Multi-speaker M ...
- LVIS Challenge 2021长尾分布实例分割冠军解决方案
本文介绍我们在ICCV 2021 LVIS Challenge Workshop上的冠军解决方案. 1. LVIS 2021竞赛简介 1.1 数据集 Large Vocabulary Instance ...
- 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] 表示第 ...
- codechef October Challenge 2017解题报告
第二次打challenge..果然还是拿不到钱(艹不过大佬)啊. A Balanced Contest 模拟就好. #include <bits/stdc++.h> #define gc ...
- [题解]CodeChef APRIL Challenge 17
Similar Dishes 题意简述 给你两个大小为 4 4的字符串集合,问你并集是不是空集. 数据范围 1≤T≤2001 \leq T \leq 200 2≤len≤10 2 \leq len \ ...
- Codechef July Challenge 2018 : Subway Ride
传送门 首先(想了很久之后)注意到一个性质:同一条边有多种颜色的话保留3种就可以了,这是因为假如最优解要求当前位置与相邻两条边都不相同,那么只要有3条边,就肯定可以满足这一点. 完事就做一个nlogn ...
- 【线段树 泰勒展开】Codechef April Challenge 2018 Chef at the Food Fair
第一次写泰勒展开:本地和CC差距好大 题目大意 大厨住的城市里办了一场美食节.一条街上开设了$N$个摊位,编号为$1∼N$.这天开始时,第$i$个摊位的食物会导致食物中毒的概率是$P_i$.在这一天中 ...
- Codechef January Challenge 2018 - Killjee and k-th letter
题意: 给出一个的串 s,将 s 所有子串按照字典序排列好相接起来形成一个新串q次询问,每一次询问问新串中的第 k 个字符是什么,强制在线. $|s|,q \le 2*10^{5} $ 跟所有子串有关 ...
- Codechef August Challenge 2018 : Coordinate Compression
传送门 外边二分,里面拿线段树维护贪心就行了. #include<cstdio> #include<vector> #include<cstring> #inclu ...
最新文章
- python基础:python扩展包的安装方式
- 计算机考研我该如何准备,计算机考研该如何准备呢-考研初试
- Build 2016: 发布明天的云创新来服务今天的开发者
- devtools安装_R语言如何批量安装软件包
- C++算法四:顺序查找
- iOS越狱开发theOS搭建
- 公司新来了个00后测试卷王,老油条表示是真干不过,已被……
- 【C】C99 restrict 关键字
- lua jit android,某LuaJit游戏解密教程~~
- Himawari-8葵花数据的python读取和matlab读取
- 小米随身WiFi,Linux下AP热点驱动(开源)
- 2018仲恺农业计算机大类录取,仲恺农业工程学院2019录取分数线预测
- 华为交换机导入配置_华为交换机配置文件备份与还原
- 面试时我们应该问面试官什么问题?
- 特征工程中的数据标准化
- 极限中0除以常数_第六讲 极限的运算法则
- 四、SQL函数②(字符串函数)
- 参加项目管理培训的一些体会
- 用vscode开发autojs,输出窗口不显示任何输出结果
- 5.8 使用轮廓化描边命令制作心形艺术图标 [Illustrator CC教程]
热门文章
- 云原生学习——理解pod和容器设计模式
- 用css3实现一个会飞的小火箭案例
- vue组件获取props_vue中子组件的methods中获取到props中的值方法
- 蓝光CsPbBrxCl3-x钙钛矿纳米片/TiO2/ZnTiO3复合粉体/PbTiO_3纳米片的单晶复合材料
- 天池全球城市计算AI挑战赛-地铁客流量预测 22/2319
- docker删除php,docker的卸载及重新安装方法
- 华信国际短信接口文档
- 使用foxpsd设计器,实现DIY定制网站设计器、DIY定制小程序、DIY设计APP
- ng之ChangeDetectorRef
- 安科第一面+中兴软创第一面 总结