Codeforces ECR50 div2题解
A:签到
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
ll read()
{
ll x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
ll n,k;
int main()
{
n=read(),k=read();
cout<<(k-)/n+;
return ;
}
B:大讨论。想清楚的话可以写的更优美一点。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
int n;
int main()
{
n=read();
for (int i=;i<=n;i++)
{
long long x,y,k,ans=-;
cin>>x>>y>>k;
if (x>y) swap(x,y);
if (k>=x)
{
if (x==y) ans=((k&)==(x&))?k:k-;
else
{
ans=x;k-=x;y-=x;
if (k<y) ans=-;
else
{
if (y%==)
{
if (k&) ans+=k-;
else ans+=k;
}
else ans+=k-;
}
}
}
cout<<ans<<endl;
}
return ;
}
C:大力数位dp。还可以把所有合法数都找出来然后二分找答案。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
int n,a[];
long long C(int n,int m)
{
if (m<) return ;
if (m==) return ;
if (m==) return n;
if (m==) return n*(n-)/;
if (m==) return n*(n-)*(n-)/;
}
long long calc(long long x)
{
int n=,cnt=;
long long ans=;
memset(a,,sizeof(a));
while (x) a[++n]=x%,x/=;
for (int i=n;i;i--)
if (a[i])
{
if (cnt<=) ans++;
if (cnt<=) ans+=*C(i-,);
if (cnt<=) ans+=**C(i-,);
if (cnt<=) ans+=***C(i-,);
cnt++;
if (cnt<=) ans+=a[i]-;
if (cnt<=) ans+=(a[i]-)**C(i-,);
if (cnt<=) ans+=(a[i]-)***C(i-,);
}
if (cnt<=) ans++;
return ans;
}
int main()
{
n=read();
for (int i=;i<=n;i++)
{
long long x,y;
cin>>x>>y;
cout<<calc(y)-calc(x-)<<endl;
}
return ;
}
D:B题难度。双指针移动,若匹配上则ans++。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 300010
int n,m,ans=;
long long a[N],b[N];
int main()
{
n=read();
for (int i=;i<=n;i++) a[i]=read()+a[i-];
m=read();
for (int i=;i<=m;i++) b[i]=read()+b[i-];
int x=;
for (int i=;i<=n;i++)
{
while (x<=m&&a[i]>b[x]) x++;
if (x>m) {ans=-;break;}
if (a[i]==b[x]) ans++;
}
if (a[n]!=b[m]) ans=-;
if (x<m) ans=-;
cout<<ans;
return ;
}
E:gcd一下求出线段上整点数量再暴力算交点去重即可。没有写,据说很卡精度。
F:可以发现所求的就是存在k>1,k∈N*使开k次方为整数的数。可以算出有多少个能开k次方的数,然后用莫比乌斯函数容斥。开方直接用pow再微调一下。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
ll read()
{
ll x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 110
int T,prime[N],mobius[N],cnt=;
bool flag[N];
ll calc(ll n,int k)
{
ll a=pow(n,(long double)/k);
ll s=;
for (int i=;i<=k;i++)
{
if (s>n/(a+)) break;
s=s*(a+);
if (i==k&&s<=n) return a+;
}
return a;
}
int main()
{
flag[]=;mobius[]=;
for (int i=;i<=;i++)
{
if (!flag[i]) prime[++cnt]=i,mobius[i]=-;
for (int j=;prime[j]*i<=&&j<=cnt;j++)
{
flag[prime[j]*i]=;
if (i%prime[j]==) break;
mobius[prime[j]*i]=-mobius[i];
}
}
T=read();
while (T--)
{
ll n=read(),ans=;
for (int i=;i<=;i++)
if (mobius[i]) ans+=mobius[i]*(calc(n,i)-);
printf("%I64d\n",ans);
}
return ;
}
G:如果图是强连通的,那么图中每个点都在某些源到汇的路径上。于是只要源和汇之间相互可达就可以了。用这个性质直接随机的话据说错误率只有1e-8。
当然考虑靠谱的做法。注意到源汇的个数很少,考虑枚举源子集,验证其是否可能与剩下部分不在同一SCC内(当然枚举的子集不包括全集)。
源子集对应了一个汇子集。那么显然若汇子集大小不大于源子集,则可以将汇的出边全部连向该源子集,剩下部分无法与其强连通。
上述检验没有考虑子集内部是否可以连接至强连通。不过在枚举该子集的子集时这种情况已经被检验。
Codeforces ECR50 div2题解的更多相关文章
- codeforces #275 div2题解
A题大意: 给你l,r,问你在l~r之间,是否存在 a和b互质 , b和c互质 ,但是 a,c不互质 的情况:其中l<=a<b<c<=r;如果存在,就输出a,b,c;不存在就输 ...
- Codeforces 1323 div2题解ABC
A. Even Subset Sum Problem 签到题 #include <bits/stdc++.h> using namespace std; template <type ...
- Codeforces Round #707 Editorial Div2 题解
CF1501 Div2 题解 CF1501A 这道题其实是一道英语阅读题,然后样例解释又不清晰,所以我看了好久,首先它告诉了你每个站点的预期到达时间 \(a_i\) ,以及每个站点的预期出发时间 \( ...
- Codeforces #541 (Div2) - E. String Multiplication(动态规划)
Problem Codeforces #541 (Div2) - E. String Multiplication Time Limit: 2000 mSec Problem Descriptio ...
- Codeforces #541 (Div2) - F. Asya And Kittens(并查集+链表)
Problem Codeforces #541 (Div2) - F. Asya And Kittens Time Limit: 2000 mSec Problem Description Inp ...
- Codeforces #541 (Div2) - D. Gourmet choice(拓扑排序+并查集)
Problem Codeforces #541 (Div2) - D. Gourmet choice Time Limit: 2000 mSec Problem Description Input ...
- Codeforces #548 (Div2) - D.Steps to One(概率dp+数论)
Problem Codeforces #548 (Div2) - D.Steps to One Time Limit: 2000 mSec Problem Description Input Th ...
- Codeforces #180 div2 C Parity Game
// Codeforces #180 div2 C Parity Game // // 这个问题的意思被摄物体没有解释 // // 这个主题是如此的狠一点(对我来说,),不多说了这 // // 解决问 ...
- Codeforces Round #556 题解
Codeforces Round #556 题解 Div.2 A Stock Arbitraging 傻逼题 Div.2 B Tiling Challenge 傻逼题 Div.1 A Prefix S ...
随机推荐
- easyui的datagrid
datagrid数据的绑定方式: 1)data 后跟数据行的json串 2)url 后跟{"total":,"rows":,"foot":} ...
- excel的宏与VBA入门(三)——流程控制
一.条件控制IF if 逻辑表达式 then 语句块 end if 带else的if语句: If 逻辑表达式1 Then 语句块1 ElseIf 逻辑表达式2 Then 语句块2 ElseIf 逻辑表 ...
- 20155301 Exp9 Web安全基础
20155301 Exp9 Web安全基础 1.实验后回答问题 (1)SQL注入攻击原理,如何防御 答 :原理: 利用现有应用程序,将恶意的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web ...
- 汇编 sub减法指令 比较指令CMP JZ条件跳转指令
二.SUB指令 减法指令SUB (SUBtract) 格式: SUB A,B //A=A-B; 功能: 两个操作数的相减,即从A中减去B,其结果放在A中. 二.CMP 和JZ 指令 比较指令CMP 格 ...
- Hadoop日记Day14---MapReduce源代码回顾总结
一.回顾单词统计源码 package counter; import java.net.URI; import org.apache.hadoop.conf.Configuration; import ...
- TMS320VC5509驱动74HC595芯片
1. 5509A有3个MCBSP模块,其中模块MCBSP可以配置成SPI模式,不过实际使用的时候需要把CLKX1和CLKR1接在一起,暂时没搞明白原因 MCBSP有6个引脚,DR0 RX0 作为数据的 ...
- Js_cookie保存登录名
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...
- Linux shell (6)
1.linux shell函数: 将一组命令集或语句形成一个可用的块,这些语句块成为函数. 2.shell 函数的组成: 函数名:函数的名字,注意一个脚本中函数名要唯一,否则会引起调用函数紊乱 函 ...
- 接口自动化测试框架-AIM
最近在做公司项目的自动化接口测试,在现有几个小框架的基础上,反复研究和实践,搭建了新的测试框架.利用业余时间,把框架总结了下来. AIM框架介绍 AIM,是Automatic Interface Mo ...
- 基于Shader实现的UGUI描边解决方案
基于Shader实现的UGUI描边解决方案 前言 大扎好,我系狗猥.当大家都以为我鸽了的时候,我又出现了,这也是一种鸽.创业两年失败后归来,今天想给大家分享一个我最近研究出来的好康的,比游戏还刺激,还 ...