Codeforces gym 102062 简要题解
文章目录
传送门
挂一个题面的pdfpdfpdf下载链接
和huangyihuangyihuangyi神佬和g21glfg21glfg21glf神佬一起打了一次比赛被轻松带飞
10道题由于最后一道毒瘤大模拟大家都不想写因此咕掉了,谁知道A掉9道题我们队也能rank1rank1rank1,233333233333233333。
貌似高手都睡觉去了。
A. Bob and BoB
直接模拟即可。
代码:
#include<bits/stdc++.h>
#define ri register int
using namespace std;
typedef long long ll;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
const int mod=1e9+7,N=1e5+5;
inline int add(const int&a,const int&b){return a+b>=mod?a+b-mod:a+b;}
inline int dec(const int&a,const int&b){return a>=b?a-b:a-b+mod;}
inline int mul(const int&a,const int&b){return (ll)a*b%mod;}
inline int ksm(int a,int p){int ret=1;for(;p;p>>=1,a=mul(a,a))if(p&1)ret=mul(ret,a);return ret;}
int n,a,b,c,d;
int main(){
for(ri tt=read();tt;--tt){
n=read(),a=read(),b=read(),c=read(),d=read();
if((a+b+c+d)*2<(n+1))puts("No");
else puts("Yes");
}
return 0;
}
B. Vibranium Gift
我猜了一个结论:用球形包表面积最小然后一不小心过了样例。
于是直接模拟即可。
代码:
#include<bits/stdc++.h>
#define ri register int
using namespace std;
typedef long long ll;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
const int mod=1e9+7,N=1e5+5;
inline int add(const int&a,const int&b){return a+b>=mod?a+b-mod:a+b;}
inline int dec(const int&a,const int&b){return a>=b?a-b:a-b+mod;}
inline int mul(const int&a,const int&b){return (ll)a*b%mod;}
inline int ksm(int a,int p){int ret=1;for(;p;p>>=1,a=mul(a,a))if(p&1)ret=mul(ret,a);return ret;}
const double pi=acos(-1.0);
int main(){
for(ri tt=1,up=read();tt<=up;++tt){
double M,D,V,R,S;
M=read(),D=read();
V=M/D;
R=pow(3.0*V/4.0/pi,1.0/3);
S=4.0*pi*R*R;
cout<<"Case "<<tt<<": ";
printf("%.4lf\n",S);
}
return 0;
}
C. The Blood Moon
直接小学奥数算一下答案是r24\frac{r^2}44r2
By ldxoi, contest: 2018 Battle of Brains, problem: (C) The Blood Moon, Accepted, #
#include<bits/stdc++.h>
#define ri register int
using namespace std;
typedef long long ll;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
const int mod=1e9+7,N=1e5+5;
inline int add(const int&a,const int&b){return a+b>=mod?a+b-mod:a+b;}
inline int dec(const int&a,const int&b){return a>=b?a-b:a-b+mod;}
inline int mul(const int&a,const int&b){return (ll)a*b%mod;}
int main(){
for(ri tt=1,up=read();tt<=up;++tt){
double r;
scanf("%lf",&r);
printf("Case %d: %.4lf\n",tt,r*r/4.0);
}
return 0;
}
close
D. Palindrome and Chocolate
GLFGLFGLF为了装弱在我过了GGG题之后让我写。
然后我想了一个打表+搜索的方法写挂了。
感觉要玩。
仔细思考了一波发现这题非常普及组。
特判掉一位数的情况之后第nnn大的长度为奇数的回文串的第111~n+12\frac{n+1}22n+1个位置表示的数就是nnn,于是直接处理一下输出就完了。
代码:
#include<bits/stdc++.h>
#define ri register int
using namespace std;
typedef long long ll;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
const int mod=1e9+7,N=1e5+5;
inline int add(const int&a,const int&b){return a+b>=mod?a+b-mod:a+b;}
inline int dec(const int&a,const int&b){return a>=b?a-b:a-b+mod;}
inline int mul(const int&a,const int&b){return (ll)a*b%mod;}
inline int ksm(int a,int p){int ret=1;for(;p;p>>=1,a=mul(a,a))if(p&1)ret=mul(ret,a);return ret;}
int top=0,num[30];
inline void solve(int n){
int pos;
if(n<10){cout<<n<<'\n';return;}
top=0;
while(n)num[++top]=n%10,n/=10;
reverse(num+1,num+top+1);
for(ri i=top-1;i;--i)num[++top]=num[i];
for(ri i=1;i<=top;++i)cout<<num[i];
puts("");
}
int main(){
for(ri tt=1,n,up=read();tt<=up;++tt){
n=read();
cout<<"Case "<<tt<<": ";
solve(n);
}
return 0;
}
E. Jumpy Robot
想的时候卡了一下。
我们先减掉所有往左走的贡献,然后转化成每次可以不走或者走原来走的距离*2(相当于抵消掉左边的贡献再向右走),然后枚举走几步分别checkcheckcheck一下即可。
代码:
#include<bits/stdc++.h>
#define ri register int
using namespace std;
typedef long long ll;
inline ll read(){
ll ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
const int mod=1e9+7,N=1e5+5;
inline int add(const int&a,const int&b){return a+b>=mod?a+b-mod:a+b;}
inline int dec(const int&a,const int&b){return a>=b?a-b:a-b+mod;}
inline int mul(const int&a,const int&b){return (ll)a*b%mod;}
inline int ksm(int a,int p){int ret=1;for(;p;p>>=1,a=mul(a,a))if(p&1)ret=mul(ret,a);return ret;}
inline int solve(ll d,ll x,int t){
int cnt=0;
for(ri i=d;i>=t;--i){
if(x>=(1ll<<(i+1)))x-=1ll<<(i+1),++cnt;
}
return x?-1:cnt;
}
inline int check(ll d,ll x){
if(!x)return 0;
for(ri i=d;~i;--i){
x+=1ll<<i;
int tmp=solve(d,x,i);
if(~tmp)return d-i+1;
}
return -1;
}
int main(){
for(ri tt=1,up=read();tt<=up;++tt){
ll d,x;
d=read(),x=read();
int f=check(d,x);
if(~f)printf("Case %d: YES %d\n",tt,f);
else printf("Case %d: NO\n",tt);
}
return 0;
}
F. Special Birthday Card
可以发现选出来的数最后如果构成的是一棵树需要满足其因子数≤4\le4≤4,我们埃氏筛即可。
代码:
#include<bits/stdc++.h>
#define ri register int
using namespace std;
typedef long long ll;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
const int mod=1e9+7,N=1e6+5;
inline int add(const int&a,const int&b){return a+b>=mod?a+b-mod:a+b;}
inline int dec(const int&a,const int&b){return a>=b?a-b:a-b+mod;}
inline int mul(const int&a,const int&b){return (ll)a*b%mod;}
int sum[N],cnt[N];
inline void init(){
for(ri i=2;i<=1000000;++i){
if(cnt[i]<=2)sum[i]=1;
if(!cnt[i])for(ri j=i+i;j<=1000000;j+=i){
int tmp=j;
while(tmp==tmp/i*i)tmp/=i,++cnt[j];
}
}
sum[1]=1;
for(ri i=2;i<=1000000;++i)sum[i]+=sum[i-1];
}
int main(){
init();
for(ri tt=1,up=read(),a,b,g;tt<=up;++tt){
a=sum[(b=read())],g=__gcd(a,b),a/=g,b/=g;
printf("Case %d: %d/%d\n",tt,a,b);
}
return 0;
}
G. Ainum’s Delusion
拆开考虑每个位置的贡献即可。
代码:
#include<bits/stdc++.h>
#define ri register int
using namespace std;
typedef long long ll;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
const int mod=1e9+7,N=1e5+5;
inline int add(const int&a,const int&b){return a+b>=mod?a+b-mod:a+b;}
inline int dec(const int&a,const int&b){return a>=b?a-b:a-b+mod;}
inline int mul(const int&a,const int&b){return (ll)a*b%mod;}
inline int ksm(int a,int p){int ret=1;for(;p;p>>=1,a=mul(a,a))if(p&1)ret=mul(ret,a);return ret;}
char s[N];
inline int calc(int x){return (ll)x*(x+1)/2%mod;}
int main(){
for(ri sum,tt=1,n,up=read();tt<=up;++tt){
sum=0;
n=read();
scanf("%s",s+1);
for(ri i=1,x;i<=n;++i){
x=(int)s[i];
sum=add(sum,mul(x,mul(calc(i),n-i+1)));
sum=add(sum,mul(x,mul(i,calc(n-i+1))));
sum=dec(sum,mul(x,mul(i,n-i+1)));
}
cout<<"Case "<<tt<<": "<<sum<<'\n';
}
return 0;
}
H. String Game
O(∣S∣2)O(|S|^2)O(∣S∣2)暴力预处理出每段区间的sumsumsum,每次询问二分答案即可。
代码:
#include<bits/stdc++.h>
#define ri register int
using namespace std;
typedef long long ll;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
char a[6005];
int ans[6005][6005],n;
inline void init(){
for(ri i=1;i<n;++i){
int sum=0;
for(ri l=i,r=i+1;l&&r<=n;--l,++r){
sum+=abs(a[l]-a[r]);
ans[l][r]=sum;
}
}
for(ri i=1;i<=n;++i){
int sum=0;
for(ri l=i-1,r=i+1;l&&r<=n;--l,++r){
sum+=abs(a[l]-a[r]);
ans[l][r]=sum;
}
}
}
int main(){
for(ri q,tt=read();tt;--tt){
scanf("%s",a+1),n=strlen(a+1);
init();
q=read();
while(q--){
int l=read(),r=read(),lim=read(),ll=0,rr=r-l,res=r-l;
while(ll<=rr){
int mid=ll+rr>>1;
if(ans[l+mid][r-mid]<=lim)rr=mid-1,res=mid;
else ll=mid+1;
}
cout<<r-l+1-res*2<<'\n';
}
}
return 0;
}
I. Freddie’s Time Dimension(s)
卡了好久去想怎么统计nnn维立方体的各种量,最后30min30min30min准备打表强行过的时候发现自己完全想偏了,过了样例之后因为__int128CE\_\_int128CE__int128CE了两次心态爆炸,结果最后longlonglong longlonglong能过?摔。
直接利用期望的线性性,考虑拆开算每一天的期望值加起来就是答案,然后我们把它们归类。
把天看成格子,用组合数学统计出有i(0≤i≤d)i(0\le i\le d)i(0≤i≤d)维是并没有相邻格子的方案数,然后分别加起来即可。
代码:
#include<bits/stdc++.h>
#define ri register int
using namespace std;
typedef long long ll;
inline int read(){
int ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
const int mod=1e9+7,N=1e5+5;
inline int add(const int&a,const int&b){return a+b>=mod?a+b-mod:a+b;}
inline int dec(const int&a,const int&b){return a>=b?a-b:a-b+mod;}
inline int mul(const int&a,const int&b){return (ll)a*b%mod;}
inline ll ksm(ll a,int p){ll ret=1;for(;p;p>>=1,a=a*a)if(p&1)ret=ret*a;return ret;}
inline void hj(ll&a,ll&b){ll g=__gcd(a,b);a/=g,b/=g;}
ll C[8][8];
inline void update(ll&a,ll&b,ll c,ll d){
ll sum1=a*d+b*c,sum2=b*d;
hj(sum1,sum2);
a=sum1,b=sum2;
}
int main(){
for(ri i=1;i<=7;++i)C[i][0]=1,C[i][1]=i;
for(ri i=2;i<=7;++i)for(ri j=2;j<=i;++j)C[i][j]=C[i-1][j]+C[i-1][j-1];
for(ri a,b,c,tt=1,up=read();tt<=up;++tt){
ll d=read(),n=read();
ll ans1=0,ans2=1;
for(ri i=1;i<=d;++i){
ll a,b;
a=C[d][i]*(1<<i)*ksm(n-2,d-i),b=2*d-i+1;
hj(a,b);
update(ans1,ans2,a,b);
}
update(ans1,ans2,ksm(n-2,d),2*d+1);
cout<<"Case "<<tt<<": "<<((long long)ans1)<<"/"<<((long long)ans2)<<'\n';
}
return 0;
}
J. Judges Always Win
这是一个博主由于太菜并不想也不能让自己填的一个坑,希望zxyoi能切掉
Codeforces gym 102062 简要题解的更多相关文章
- Codeforces Global Round1 简要题解
Codeforces Global Round 1 A 模拟即可 # include <bits/stdc++.h> using namespace std; typedef long l ...
- [Codeforces Round #431]简要题解
来自FallDream的博客,未经允许, 请勿转载,谢谢. 好久没写cf题解了zzz 代码比较丑不贴了,cf上都可以看 Div2A. 给你一个长度为n(n<=100)的序列 判断是否可以分成奇数 ...
- Codeforces Hello2020 A-E简要题解
contest链接:https://codeforces.com/contest/1284 A. New Year and Naming 思路:签到,字符串存一下,取余拼接. #include< ...
- Codeforces Round#433 简要题解
来自FallDream的博客,未经允许,请勿转载,谢谢. 我的号自从几个月前姿势水平过低疯狂掉分之后就没动过了 突然想上点分 就打了一场Div1 没想到打到了rank5 一发上橙了,可还行. ...
- Codeforces Round#432 简要题解
来自FallDream的博客,未经允许,请勿转载,谢谢. Div2A 小判断题 Div2B 小判断题,合法的条件是|AB|=|BC|且三点不共线 Div1A 类比二维.三维空间,可以猜测n太大的时候没 ...
- Codeforces Round #557 (Div. 1) 简要题解
Codeforces Round #557 (Div. 1) 简要题解 codeforces A. Hide and Seek 枚举起始位置\(a\),如果\(a\)未在序列中出现,则对答案有\(2\ ...
- Codeforces GYM 100876 J - Buying roads 题解
Codeforces GYM 100876 J - Buying roads 题解 才不是因为有了图床来测试一下呢,哼( 题意 给你\(N\)个点,\(M\)条带权边的无向图,选出\(K\)条边,使得 ...
- Codeforces 863 简要题解
文章目录 A题 B题 C题 D题 E题 F题 G题 传送门 简要题解?因为最后一题太毒不想写了所以其实是部分题解... A题 传送门 题意简述:给你一个数,问你能不能通过加前导000使其成为一个回文数 ...
- Codeforces Round #498 (Div. 3) 简要题解
[比赛链接] https://codeforces.com/contest/1006 [题解] Problem A. Adjacent Replacements [算法] 将序列中的所有 ...
随机推荐
- numpy学习之矩阵之旅
一:特殊的矩阵 1.全0全1的矩阵 2.单位矩阵 单位矩阵:整个矩阵是n*n的,并且斜对角全是1 矩阵的加减法 1.矩阵相加,相减必须要有相同的行和列 二:数组的乘法(点成) 数组的乘法 list_1 ...
- 贪吃蛇Global Java实现(二)
package cn.tcc.snake.util; public class Global {public static final int CELL_SIZE=20;public static f ...
- SSRF攻击-运用gopher协议构造POST包--emmmm(http://10.112.68.215:10004/index.php?action=login)
还是天枢的一道CTF题,启程! 分析题目,自己注册账户并登陆后,提示输入一个url,网站会自己运行查找网页信息. emmmmm,很挑衅,网站就当作服务器,我们在url框中输 ...
- 【转自牛客网】C++类职位校招
作者:./a.out链接:https://www.nowcoder.com/discuss/14022来源:牛客网 话说在牛客网上混迹了半年,也没啥拿的出手的贡献.现在基本上自己的校招生涯要告一段落, ...
- unittest 单元测试
unittest 单元测试: 1,单元测试是指对软件中最小可测试单元进行检查和验证.对于单元测试中单元的含义,一般来讲,要根据实际情况去判定其具体含义. 2,unitest=TestCase + Te ...
- export命令
http://blog.csdn.net/wl_fln/article/details/7258294 http://man.linuxde.net/export export命令 功能说明:设置或显 ...
- Await Async和Thread.waitAll想法?未完待续
[管理员]四九-李冰-修行者(2216529884) 2017/7/3 17:15:12 看着就可以了,这种东西是有使用场景的.并不是你用了就一定有提升的 [管理员]上海-xx科技(lovepoint ...
- ES6 WeakMap和WeakSet的使用场景
JavaScript垃圾回收是一种内存管理技术.在这种技术中,不再被引用的对象会被自动删除,而与其相关的资源也会被一同回收. Map和Set中对象的引用都是强类型化的,并不会允许垃圾回收.这样一来,如 ...
- 解决loadrunner录制页面的乱码问题
以下亲自验证了的:好用. 三步解决loadrunner录制页面的乱码问题 第一步:去lr 的vugen的Tools -> Recoding Options -> Advanced ...
- 卸载服务器GitLab
sudo gitlab-ctl uninstall sudo rpm -e gitlab-ce find / -name gitlab|xargs rm -rf