A. Deadline

题目链接

题目大意

给你\(n,d\)两个数,问是否存在\(x\)使得\(x+\frac{d}{x+1}\leq n\),其中\(\frac{d}{x+1}\)向上取整。

解题思路

  • 方案一:利用均值不等式公式推导

    \(x+\frac{d}{x+1}=x+1+\frac{d}{x+1}-1\geq2\sqrt{d}-1\)

    所以 \(\min(x+\frac{x}{d+1})=2\sqrt{d}-1\)

    因此去判断\(2\sqrt{d}-1\leq n\)是否成,即\(4\times n^2\leq (n+1)^2\)是否成立即可。

  • 方案二:暴力判断

    很明显的一点就是\(x\)的值不会超过\(\sqrt{d}\),所以遍历判断一下即可。

AC代码1

#include<bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--){
long long n,d;
cin>>n>>d;
if(4*d<=(n+1)*(n+1)){
cout<<"YES"<<endl;
}else{
cout<<"NO"<<endl;
}
}
return 0;
}

AC代码2

#include<bits/stdc++.h>
const int maxn=1e3+100;
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
int main()
{
// freopen("data.txt","r",stdin);
int t;
cin>>t;
while(t--){
int n,d;
cin>>n>>d;
bool flag=false;
for(int i=0;i*i<=d;i++){
if((i+d/(i+1)+(d%(i+1)==0?0:1))<=n){
flag=true;
}
}
if(flag)cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}

总结

最开始拿到这道题的时候居然有点懵,其实应该理所应当的想到\(x\)的值不会超过\(\sqrt{d}\)

B. Yet Another Meme Problem

题目链接

题目大意

给你两个数\(A,B\),求满足\(1\leq a \leq A\),\(1\leq b \leq B\)并且 \(a\times b+ a+b = a\times 10^{b的位数}+b\)的个数。

解题思路

在做这道题的时候其实出题人已经给了提示,所以很轻松的想到了结论,即找到满足\(\leq b\)并且每一位都是\(9\)的数字个数\(\times a\)即为答案。

结论推导:

\(a\times b+a+b=a\times 10^{b的位数}+b\)

\(a\times b+a = a\times 10^{b的位数}\)

\(a\times (b+1) = a\times 10^{b的位数}\)

\(b+1 = 10^{b的位数}\)

所以只有所有位都是\(9\)的数字才能满足,即\(9,99,999,\cdots\)

AC代码

#include<bits/stdc++.h>
const int maxn=1e3+100;
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
int main()
{
// freopen("data.txt","r",stdin);
int t;
cin>>t;
while(t--){
ll a,b;
cin>>a>>b;
string str = to_string(b);
int len = str.size()-1;
bool flag = true;
for(int i=0;i<str.size();i++){
if(str[i]!='9'){
flag=false;
break;
}
}
if(flag)len++;
cout<<a*len<<endl;
}
return 0;
}

总结

这道题自己在求数字个数的时候用的是字符串求法,其实如果不是大数的话,个人认为用整数运算即可,还方便点。丢个代码出来。

int cnt=0;
int number=9;
while(number<=b){
number = number*10+9;
cnt++;
}

C. Two Arrays

题目链接

题目大意

给你两个数字\(n,m\),求用\(1\cdots n\)这\(n\)个数(数字可以重复)构造出两个长度为\(m\)的数组\(a,b\)满足一下要求的数组数量。

  • 对于数组\(a,b\)中所有元素都满足\(a_i\leq b_i\)
  • 数组\(a\)是非递减的
  • 数组\(b\)是非递增的

解题思路

啊啊啊,这道题自己在做的时候没有想到把两个数组给合起来,思维太线性了,没有转过弯。数组\(a\)是非递减的,数组\(b\)是非递增的,如果将数组\(b\)反转连接在数组\(a\)的后面就是一个非递减数组,那么题目要求就转化为求用\(1\cdots n\)这\(n\)个数构造一个长度为\(2\times m\)的非递减数组的个数。

  • 复杂度为\(O(n^2m)\)的转移方程

    \(dp[i][j]\)表示第\(i\)个位置放数字\(j\)的方案数,那么\(dp[i][j]=\sum_{k=1} ^j dp[i-1][k]\)

  • 复杂度为\(O(nm)的转移方程\)

    \(dp[i][j]\)表示第\(i\)个位置放数字\(j\)的方案数,那么\(dp[i][j]=dp[i-1][j]+dp[i][j-1]\),这里利用了前缀和的思想。

    推导如下:

    \(dp[i][j]=\sum_{k=1} ^j dp[i-1][k]=\sum_{k=1}^{j-1}dp[i-1][k]+dp[i-1][j]\)

    因为\(dp[i][j-1]=\sum_{k=1} ^{j-1} dp[i-1][k]\)

    所以 \(dp[i][j]=dp[i-1][j]+dp[i][j-1]\)

    又或者在不知道如何推导的情况下可以从思维上这样想

    在第\(i\)个位置上可以放\(j-1\),那么在第\(i\)个位置上肯定也可以放\(j\),所以放\(j\)的个数肯定会包含放\(j-1\)的个数,但这样得到的所有方案在\(i-1\)这个位置上最大的是\(j-1\),其实在\(i-1\)这个位置可以放\(j\),所以再加上第\(i-1\)位置上放\(j\)的方案数。

AC代码

#include<bits/stdc++.h>
const int mod=1e9+7;
const int maxn=2e1+10;
const int maxm=1e3+20;
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
int dp[maxn][maxm];
int main()
{
// freopen("data.txt","r",stdin);
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)dp[1][i]=1; for(int i=2;i<=2*m;i++){
for(int j=1;j<=n;j++){
dp[i][j]=(dp[i][j-1]+dp[i-1][j])%mod;
}
}
ll ans=0;
for(int i=1;i<=n;i++){
ans+=dp[2*m][i];
ans%=mod;
}
cout<<ans<<endl;
return 0;
}

总结

后悔拿到这道题没思考,再仔细思考一下,在理解题目的意思之后应当建立对应的模型,思维不能太线性了。

Educational Codeforces Round 80 (Rated for Div. 2)部分题解的更多相关文章

  1. Educational Codeforces Round 48 (Rated for Div. 2) CD题解

    Educational Codeforces Round 48 (Rated for Div. 2) C. Vasya And The Mushrooms 题目链接:https://codeforce ...

  2. Educational Codeforces Round 59 (Rated for Div. 2) DE题解

    Educational Codeforces Round 59 (Rated for Div. 2) D. Compression 题目链接:https://codeforces.com/contes ...

  3. Educational Codeforces Round 80 (Rated for Div. 2)

    A. Deadline 题目链接:https://codeforces.com/contest/1288/problem/A 题意: 给你一个 N 和 D,问是否存在一个 X , 使得 $x+\lce ...

  4. Educational Codeforces Round 80 (Rated for Div. 2)D E

    D枚举子集 题:https://codeforces.com/contest/1288/problem/D题意:给定n个序列,每个序列m个数,求第i个和第j个序列组成b序列,b序列=max(a[i][ ...

  5. Educational Codeforces Round 80 (Rated for Div. 2) E. Messenger Simulator

    可以推出 min[i]要么是i要么是1,当a序列中存在这个数是1 max[i]的话就比较麻烦了 首先对于i来说,如果还没有被提到第一位的话,他的max可由他后面的这部分序列中 j>=i 的不同数 ...

  6. Educational Codeforces Round 80 (Rated for Div. 2)(A-E)

    C D E 这三道题感觉挺好       决定程序是否能通过优化在要求的时间内完成,程序运行时间为t,你可以选择花X天来优化,优化后程序的运行时间为t/(x+1)取上整,花费的时间为程序运行时间加上优 ...

  7. Educational Codeforces Round 80 (Rated for Div. 2)E(树状数组,模拟,思维)

    #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ],mx[],a[],pos[],sum ...

  8. Educational Codeforces Round 80 (Rated for Div. 2)D(二分答案,状压检验)

    这题1<<M为255,可以logN二分答案后,N*M扫一遍表把N行数据转化为一个小于等于255的数字,再255^2检验答案(比扫一遍表复杂度低),复杂度约为N*M*logN #define ...

  9. Educational Codeforces Round 80 (Rated for Div. 2)C(DP)

    #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ; ][],temp[][]; int ...

随机推荐

  1. 【题解】P5446 [THUPC2018]绿绿和串串(manacher)

    [题解]P5446 [THUPC2018]绿绿和串串(manacher) 考虑对于一个串进行\(f\)操作,就是让他变成一个以最后一个节点为回文中心的回文串. 那么对于某个位置\(p\),假如它是一个 ...

  2. $vjudge-$搜索专题题解

    退役了,刷点儿无脑水题$bushi$放松下$QwQ$ 然后先放个链接,,,$QwQ$ $A$ 虽然是英文但并不难$get$题目大意?就说给定一个数独要求解出来,$over$ 昂显然直接$dfs$加剪枝 ...

  3. Codeforces Round #612 (Div. 2)

    https://codeforces.com/contest/1287/ A - Angry Students 题意:求A后面的P最长连续有几个? 题解:? int n; char s[200005] ...

  4. Snipaste - 可以提高你工作效率的截图软件

    使用Snipaste提高您的工作效率 Snipaste是一个简单但功能强大的剪切工具,还允许您将屏幕截图固定在屏幕上.下载并启动应用程序,按F1开始剪切,然后按F3将其粘贴为浮动窗口.而已! 您还可以 ...

  5. 实现github的自动钩子

    实现github的自动钩子 最近在学习go,也写了一些玩具放到自己的服务器中,但是感觉每次写完在本地交叉编译后上传到服务器略显麻烦,上传代码到服务器中编译也是略显麻烦,把编译文件加入到git管理中会导 ...

  6. Java之IO流用法总结

    Java的IO流概述:1.I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理设备之间的数据传输.如读/写文件,网络通讯等.2.Java程序中,对于数据的输入/输出操作以“流( ...

  7. Spring Cloud 如何动态刷新 Git 仓库配置?

    有时候在配置中心有些参数是需要修改的,这时候如何不重启而达到实时生效的效果呢? 本文基于以下讲解: Spring Cloud Greenwich.SR3 Spring Boot 2.1.7.RELEA ...

  8. 微信小程序--百度地图坐标转换成腾讯地图坐标

    最近开发小程序时出现一个问题,后台程序坐标采用的时百度地图的坐标,因为小程序地图时采用的腾讯地图的坐标系,两种坐标有一定的误差,导致位置信息显示不正确.现在需要一个可以转换两种坐标的方法,经过查询发现 ...

  9. python关系(比较)运算符

    关系运算符 就是 比较运算符 a.对象的值进行比较 数字间的比较运算符连着使用: 数字与True.False的比较True 表示 1 , False 表示 0 数字与字符串的比较(不能比较) 字符串间 ...

  10. Maven 基础(一) | 使用 Maven 的正确姿势

    一.什么是 Maven? Maven 是一个项目管理工具,它的本质是一个项目对象模型(POM),体现在配置中就是我们常见的 pom.xml 文件,而这个 pom 文件就是 Maven 的核心,它管理了 ...