+00:02 +00:16 +01:08   +02:07

VP 情况  4/8 ABCE ,赛时排名可以到823,什么时候我可以上个青

  • B 本想写个map的二分的,发现自己不会,写了个普普通通的二分
  • C 高精度模拟,一发过了,用个vector将每个数位存起来,从个位开始判断,如果 A_i  的数能加上小于10的正整数大于等于S_j+1  *10  + S_j,(S_j+1 ! = 0),那么就能一次解决两个数位,其余正常匹配,遇到无法进位同时 A_i > S_j 的情况就没有解 ,最后讨论前导0,和S没有匹配完的输出
//  AC one more times

LL a,s;
std::vector<int > d1,d2;
void chuli()
{
LL ta=a;
while(ta)
{
d1.push_back(ta%10);
ta/=10;
}
ta=s;
while(ta)
{
d2.push_back(ta%10);
ta/=10;
}
}
void solve()
{
d1.clear(),d2.clear();
cin>>a>>s;
if(a>s)
{
cout<<-1<<endl; return;
}
chuli();
int len1=d1.size(),len2=d2.size(),j=0, ca=len2-len1;
vector<int> ans;
for(int i=0;i<len1;i++)
{
int t1=d1[i],t2=d2[j],t3=d2[j+1];
if(ca&&t1+9>=t3*10+t2&&j<len2&&j+1<len2&&t3!=0)
{
int add=t3*10+t2;
ans.push_back(add-t1);
j++,j++;
ca--;
}
else if(t1+(t2-t1)<10&&t2>=t1&&j<len2)
{
int add=t2-t1;
ans.push_back(add);
j++;
}
else if(t1>t2)
{
cout<<-1<<endl; return;
}
}
if(j!=len2)
{
for(int i=len2-1;i>=j;i--)
cout<<d2[i];
reverse(ans.begin(),ans.end());
for(auto it : ans)
cout<<it;
cout<<endl;
}
else
{
int sz=ans.size();
while(ans[sz-1]==0&&sz>=1)
sz--;
if(sz==0)
{
cout<<0<<endl; return;
}
for(int i=sz-1;i>=0;i--)
cout<<ans[i];
cout<<endl;
} return;
} int main()
{
std::ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr); int T;cin>>T;for(int i=1;i<=T;i++)
solve(); return 0;
}

E 构造贪心下,

每个最小没出现的整数 d ,答案是:

  1. 更小的数 进行操作,使得 0~d-1 都有数字
  2. 数组内所有=d的数 进行+1

用一个数组标记值为i的数有多少个

如何使得进行操作数最少? 如果到了数 i ,这个地方标记数为0,那么就要比他小的数加1,我们用更小的数进行操作使它达到i,使得 MEX= ii+1 时候成立,这里用一个优先队列来维护可以进行操作的数,使得每次操作数最小。当a[i] >=2  ,就将a[i]-1个 i 加入优先队列。也用一个 chengben来记录补上 0~i-1 的坑(原本a[0~i-1] = 0 处),当MEX=i,答案为chengben + a[i] ,如果前面有坑没补上,后面就全输出-1 了

//  AC one more times
void solve()
{
int a[200010],n;
memset(a,0,sizeof a);
cin>>n;
for(int i=1;i<=n;i++)
{
int x; cin>>x;
a[x]++;
} LL chengben=0;
priority_queue<int,vector<int>,less<int>> q;
for(int i=0;i<=n;i++)
{
if(i==0)
{
cout<<a[i]<<" ";
if(a[0]==0)
{
for(int j=1;j<=n;j++)
cout<<-1<<" ";
cout<<endl;return;
}
if(a[i]>1)
for(int j=2;j<=a[i];j++)
q.push(i);
}
if(i>=1)
{
cout<<chengben+a[i]<<" ";
if(a[i]==0)
{
if(q.empty())
{
for(int j=i+1;j<=n;j++)
cout<<-1<<" ";
cout<<endl;return;
}
else
{
chengben+=i-q.top(); q.pop();
} }
if(a[i]>=1)
for(int j=2;j<=a[i];j++)
q.push(i);
} }
cout<<endl;
return;
} int main()
{
std::ios::sync_with_stdio(false); cin.tie(nullptr), cout.tie(nullptr);
int T;cin>>T;for(int i=1;i<=T;i++)
solve();
return 0;
}

上分准备 VP Codeforces Round #762 (Div. 3) 4题ABCE的更多相关文章

  1. Codeforces Round #612 (Div. 2) 前四题题解

    这场比赛的出题人挺有意思,全部magic成了青色. 还有题目中的图片特别有趣. 晚上没打,开virtual contest打的,就会前三道,我太菜了. 最后看着题解补了第四道. 比赛传送门 A. An ...

  2. Codeforces Round #378 (Div. 2) D题(data structure)解题报告

    题目地址 先简单的总结一下这次CF,前两道题非常的水,可是第一题又是因为自己想的不够周到而被Hack了一次(或许也应该感谢这个hack我的人,使我没有最后在赛后测试中WA).做到C题时看到题目情况非常 ...

  3. Codeforces Round #713 (Div. 3)AB题

    Codeforces Round #713 (Div. 3) Editorial 记录一下自己写的前二题本人比较菜 A. Spy Detected! You are given an array a ...

  4. Codeforces Round #833 (Div. 2)补题

    Codeforces Round #833 (Div. 2) D. ConstructOR 知识点:高位和对低位无影响 一开始以为和广州的M一样,是数位dp,后来发现只要找到一个就行 果然无论什么时候 ...

  5. Codeforces Round #552 (Div. 3) A题

    题目网址:http://codeforces.com/contest/1154/problem/ 题目意思:就是给你四个数,这四个数是a+b,a+c,b+c,a+b+c,次序未知要反求出a,b,c,d ...

  6. Codeforces Round #412 Div. 2 补题 D. Dynamic Problem Scoring

    D. Dynamic Problem Scoring time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  7. Codeforces Round #367 (Div. 2) 套题

    吐槽:只能说是上分好场,可惜没打,唉 A:Beru-taxi (水题,取最小值) #include <cstdio> #include <cstring> #include & ...

  8. Codeforces Round #587 (Div. 3) C题 【判断两个矩形是否完全覆盖一个矩形问题】 {补题 [差点上分系列]}

    C. White Sheet There is a white sheet of paper lying on a rectangle table. The sheet is a rectangle ...

  9. Codeforces Round #762 (Div. 3), CDE

    (C) Wrong Addition Problem - C - Codeforces 题意 定义一种计算方式, 对于a+b=c,  给出a和c, 求b 题解 因为求法是从个位求得, 先求出来的最后输 ...

  10. Codeforces Round #376 (Div. 2) C题 Socks(dsu+graphs+greedy)

    Socks Problem Description: Arseniy is already grown-up and independent. His mother decided to leave ...

随机推荐

  1. python 中的lamda 表达式

      #1. print(list(filter(lambda x: x%2,range(10))))    #[1, 3, 5, 7, 9]# 非lamda表示def odd(x): return x ...

  2. C# const, readonly, static readonly

    转: Const 定义的是静态常在对象初始化的时候赋值.以后不能改变它的值.属于编译时常量.不能用new初始化. Readonly 是只读变量.属于运行时变量.可以在类constructor里改变它的 ...

  3. 修改 Ubuntu 的软件源

    1.将 /etc/apt/ 路径下的 sources.list 的内容修改为如下内容(此内容为 Ubuntu Kylin 里面的内容,直接拿过来用,也可以用其它的国内的源). deb http://m ...

  4. 【Selenium IDE】下载安装Chrome和Firefox插件IDE ide了解就行 不是重点 重点是写脚本

    下载安装Chrome和Firefox插件IDE 1.Chrome的IDE安装(1)由于chrome的限制所以提供了一个小方法:链接: https://www.crx4chrome.com/crx/77 ...

  5. .NetCore自定义模板,发布Nuget

    1.创建模板项目框架 2.创建模板文件 在项目文件夹根目录创建.template.config文件夹,在文件夹下创建新的文件:template.json 内容如下 { "$schema&qu ...

  6. 【Python】变量&数据类型&运算符

    一.Python变量&数据类型&运算符 1.print()函数 1.1 输出数字,字符串,含有运算符的表达式 print(123) print('hello world') print ...

  7. Ubuntu: 升级或安装最新版本的 Nginx

    Ubuntu 默认 apt 源中的 Nginx 版本比较旧,今天介绍下如何在 Ubuntu 中安装最新版本的 Nginx. 要安装较新版本的 Nginx, 可以使用 Nginx 的 APT 源.执行如 ...

  8. No.1.5

    优先级:不同选择器具有不同的优先级,优先级高的选择器样式会覆盖优先级低选择器的样式 优先级公式:!imporant>行内样式>id选择器>类选择器>标签选择器>通配符选择 ...

  9. abc289g题解

    考虑枚举卖出的物品个数\(i\),把\(b_i\)从大到小排序. 题目的某人会买物品的条件转化为\(b_i\geq p_j-c_j\),这说明卖出的物品的集合是排序后\(b\)的一段前缀,且卖出\(i ...

  10. 光纤加速计算 383-高速信号处理板 XCKU060的双路QSFP+光纤PCIe 卡 XCKU060板卡

    基于kintex UltraScale XCKU060的双路QSFP+光纤PCIe 卡 一.板卡概述 本板卡系北京太速科技自主研发,基于Xilinx UltraScale Kintex系列FPGA   ...