A:签到

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
ll read()
{ll x=0,f=1;char c=getchar();while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;
}
ll n,k;
int main()
{n=read(),k=read();cout<<(k-1)/n+1;return 0;
}

  B:大讨论。想清楚的话可以写的更优美一点。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{int x=0,f=1;char c=getchar();while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;
}
int n;
int main()
{n=read();for (int i=1;i<=n;i++){long long x,y,k,ans=-1;cin>>x>>y>>k;if (x>y) swap(x,y);if (k>=x){if (x==y) ans=((k&1)==(x&1))?k:k-2;else{ans=x;k-=x;y-=x;if (k<y) ans=-1;else{if (y%2==0){if (k&1) ans+=k-2;else ans+=k;}else ans+=k-1;}}}cout<<ans<<endl;}return 0;
}

  C:大力数位dp。还可以把所有合法数都找出来然后二分找答案。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{int x=0,f=1;char c=getchar();while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;
}
int n,a[20];
long long C(int n,int m)
{if (m<0) return 0;if (m==0) return 1;if (m==1) return n;if (m==2) return n*(n-1)/2;if (m==3) return n*(n-1)*(n-2)/6;
}
long long calc(long long x)
{int n=0,cnt=0;long long ans=0;memset(a,0,sizeof(a));while (x) a[++n]=x%10,x/=10;for (int i=n;i;i--)if (a[i]){if (cnt<=3) ans++;if (cnt<=2) ans+=9*C(i-1,1);if (cnt<=1) ans+=9*9*C(i-1,2);if (cnt<=0) ans+=9*9*9*C(i-1,3);cnt++;if (cnt<=3) ans+=a[i]-1;if (cnt<=2) ans+=(a[i]-1)*9*C(i-1,1);if (cnt<=1) ans+=(a[i]-1)*9*9*C(i-1,2);}if (cnt<=3) ans++;return ans;
}
int main()
{n=read();for (int i=1;i<=n;i++){long long x,y;cin>>x>>y;cout<<calc(y)-calc(x-1)<<endl;}return 0;
}

  D:B题难度。双指针移动,若匹配上则ans++。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{int x=0,f=1;char c=getchar();while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;
}
#define N 300010
int n,m,ans=0;
long long a[N],b[N];
int main()
{n=read();for (int i=1;i<=n;i++) a[i]=read()+a[i-1];m=read();for (int i=1;i<=m;i++) b[i]=read()+b[i-1];int x=0;for (int i=1;i<=n;i++){while (x<=m&&a[i]>b[x]) x++;if (x>m) {ans=-1;break;}if (a[i]==b[x]) ans++;}if (a[n]!=b[m]) ans=-1;if (x<m) ans=-1;cout<<ans;return 0;
}

  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=0,f=1;char c=getchar();while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}while (c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();return x*f;
}
#define N 110
int T,prime[N],mobius[N],cnt=0;
bool flag[N];
ll calc(ll n,int k)
{ll a=pow(n,(long double)1/k);ll s=1;for (int i=1;i<=k;i++){if (s>n/(a+1)) break;s=s*(a+1);if (i==k&&s<=n) return a+1;}return a;
}
int main()
{flag[1]=1;mobius[1]=1;for (int i=2;i<=100;i++){if (!flag[i]) prime[++cnt]=i,mobius[i]=-1;for (int j=1;prime[j]*i<=100&&j<=cnt;j++){flag[prime[j]*i]=1;if (i%prime[j]==0) break;mobius[prime[j]*i]=-mobius[i];}}T=read();while (T--){ll n=read(),ans=0;for (int i=1;i<=60;i++)if (mobius[i]) ans+=mobius[i]*(calc(n,i)-1);printf("%I64d\n",ans);}return 0;
}

  G:如果图是强连通的,那么图中每个点都在某些源到汇的路径上。于是只要源和汇之间相互可达就可以了。用这个性质直接随机的话据说错误率只有1e-8。

  当然考虑靠谱的做法。注意到源汇的个数很少,考虑枚举源子集,验证其是否可能与剩下部分不在同一SCC内(当然枚举的子集不包括全集)。

  源子集对应了一个汇子集。那么显然若汇子集大小不大于源子集,则可以将汇的出边全部连向该源子集,剩下部分无法与其强连通。

  上述检验没有考虑子集内部是否可以连接至强连通。不过在枚举该子集的子集时这种情况已经被检验。

转载于:https://www.cnblogs.com/Gloid/p/9615435.html

Codeforces ECR50 div2题解相关推荐

  1. Codeforces 1323 div2题解ABC

    A. Even Subset Sum Problem 签到题 #include <bits/stdc++.h> using namespace std; template <type ...

  2. codeforces 706 div2题解

    A Split it! 思路: 翻转后看前k个连续是否相等,并且满足k∗2+1<=nk*2+1 <= nk∗2+1<=n 代码: #include<bits/stdc++.h& ...

  3. codeforces 628.div2

    # Codeforces 628.div2 A. EhAb AnD gCd B. CopyCopyCopyCopyCopy C. Ehab and Path-etic MEXs D. Ehab the ...

  4. codeforces#320(div2) D Or Game 贪心

    codeforces#320(div2) D  "Or" Game  贪心 D. "Or" Game time limit per test 2 seconds ...

  5. c语言1106回文数,Codeforces 1106 简要题解

    A题 传送门 读错题还能过样例我给自己点个赞. 题意简述:给一个010101网格SSS,问满足Si,j=Si+1,j+1=Si+1,j−1=Si−1,j−1=Si−1,j+1S_{i,j}=S_{i+ ...

  6. Educational Codeforces Round 95题解

    Educational Codeforces Round 95题解 题目链接 代码链接 A. Buying Torches 题目大意: 你手上现在有一个木棍.有以下两种交换方式: 1.用一个木棍交换x ...

  7. codeforces#324(div2) E. Anton and Ira 贪心

    codeforces#324(div2) E. Anton and Ira  贪心 E. Anton and Ira time limit per test 1 second memory limit ...

  8. codeforces 712 div2 ABC

    codeforces 712 div2 ABC A. Déjà Vu A palindrome is a string that reads the same backward as forward. ...

  9. codeforces #236 div2 简洁题解

    A:A. Nuts time limit per test 1 second memory limit per test 256 megabytes input standard input outp ...

最新文章

  1. 利用RMAN检测数据库坏块的脚本
  2. linux mate桌面主题下载_MATE-Desktop 1.11 发布下载,Linux 桌面
  3. sdut 3341数据结构实验之二叉树二:遍历二叉树
  4. java负数右移_Java中负数的右移
  5. java和python哪个学习编程_初学编程,选Java还是Python?
  6. 《Cracking the Coding Interview》——第11章:排序和搜索——题目7
  7. 我的世界1.14java原版命令_我的世界:老一辈mc是怎么生存的?鱼骨式挖矿,这些套路你知道吗...
  8. 微软补丁地址以及查找方式
  9. R语言-基于集波士顿住房
  10. LEWITT莱维特STREAM4x5、DGT260声卡安装调试教程
  11. linux ubuntu extmail,利用Ubuntu ExtMail 30分钟配置好一个功能强大的邮件
  12. XUI 一个简洁而优雅的Android原生UI框架,解放你的双手!
  13. 精通Groovy_B 循环, 范围, 集合, 映射, 闭包, 类, UT
  14. js随机飘动的广告图片代码demo效果示例(整理)
  15. 文本相似度 Text Similarity
  16. 简单有趣的互动小游戏介绍:好玩的密室脱逃H5互动小游戏
  17. 第四章第十三题(判断元音还是辅音)(Vowel or consonant?)
  18. RAID重组——利用VMware和取证大师来重组
  19. 第五章:广度优先搜索
  20. ubuntu更换源报 E: Failed to fetch。。。。错误的解决办法

热门文章

  1. 成长轨迹44 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2799、2976、2975、2742】...
  2. asp.net断点续传技术
  3. C++const关键字作用
  4. gis中的加权求和工具在哪里_ArcGIS教程:加权总和的工作原理
  5. usaco Ski Course Design
  6. hbase shell 查看列名_Hbase的简单命令使用
  7. 如何定义带有可选参数的函数python_Python如何定义有可选参数的元类
  8. 用spss做多组两两相关性分析_两独立样本T检验及如何利用SPSS实现其操作
  9. python开发视频播放器_python视频播放器
  10. Linux网络编程--TCP中的三次握手和四次挥手