闲来无事,打场CF,本人蒟蒻,考场A了前三道,第四有解答

正文

T1 Non-zero

是道水题。。。。

给你一个序列a。要求你输出最少的操作次数使这个序列的累和与累乘都不为0;

一次操作指给\(a_i\)+1.

我们的想法是先给每个零的+1,检查此时和是否为0,若为0,+1,否则直接输出答案

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
const int Maxn=101;
int t,n,s,a[Maxn],sum;
int main() {
// freopen("a.in","r",stdin);
t=read();
while(t--){
n=read();s=0;sum=0;
for(int i=1;i<=n;i++){
a[i]=read();
sum+=a[i];
}
for(int i=1;i<=n;i++) if(a[i]==0) s++,sum++,a[i]++;//��֤ a[i]��Ϊ0
if(sum!=0) printf("%d\n",s);
else printf("%d\n",s+1);
}
return 0;
}

我把快读删了。。。有-的

T2 Assigning to Classes

我们注意到,差值事实上是两个数之差,而这两个数都为子数组中的中位数,所以这两个数\(a\),\(b\),不妨设\(a>b\) ,从而,\(a \ge p_{k+1}\),而\(b \le p_{k}\), 这是显然的。

从而,最小值之差即为\(p_{k+1}-p_{k}\),这是可以取到的

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int Maxn=2*1e5+111;
int t,a[Maxn],n;
int main() {
// freopen("a.in","r",stdin);
t=read();
while(t--){
n=read();
for(int i=1;i<=2*n;i++) a[i]=read();
sort(a+1,a+1+2*n);
printf("%d\n",a[n+1]-a[n]);
}
return 0;
}

T3 Anu Has a Function

我们注意到 ,事实上对于\(f(i,j)<i\),从而进一步的讨论,把每一个数分解为二进制,如果这些数而二进制的某位上1的个数超过1,则这一位的答案一定为0,所以我们只需要从最高位开始扫,扫到某一位只有一个一即可

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int Maxn=1e5+111;
int r[50],a[Maxn],n;
bool s[Maxn][50];
int main() {
// freopen("a.in","r",stdin);
n=read();
for(int i=1;i<=n;i++) {
a[i]=read();
int k=a[i];
for(int j=0;k>0;j++){
if(k&1) s[i][j]=1,r[j]++;
k>>=1;
}
}
int u=0;bool flag=1;
for(int j=50;j>=0&&flag;j--)
if(r[j]==1)
for(int i=1;i<=n;i++)
if(s[i][j]){
u=i;
flag=0;
break;
}
if(u!=0) printf("%d",a[u]);
for(int i=1;i<=n;i++) if(i!=u) printf(" %d",a[i]);
return 0;
}

T4 Aerodynamic

我们可以推出再若在\(P(x_0,y_0)\)中有两点\((x_1,y_1)\),和\((0,0)\),则必有\(P(x_0-x_1,y_0-y_1)\) 包含两点\((0,0)\),\((-x_1,-y_)\),从而我们可以得到T一定是中心对称的,只要我们检查P是否具有中心对称性即可

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int Maxn=1e5+111;
double x[Maxn],y[Maxn];
int n;
int main() {
// freopen("a.in","r",stdin);
n=read();
if(n&1){
printf("No");
return 0;
}
for(int i=1;i<=n;i++) scanf("%lf%lf",&x[i],&y[i]);
x[n+1]=(x[1]+x[n/2+1])/2;y[n+1]=(y[1]+y[n/2+1])/2;n/=2;
for(int i=2;i<=n;i++)
if(x[2*n+1]!=((x[i]+x[i+n])/2)||y[2*n+1]!=((y[i]+y[i+n])/2)){
printf("No");
return 0;
}
printf("YES");
return 0;
}

蒟蒻终能变为神犇

最新文章

  1. VB程序架构分析
  2. PHPExcel读取excel文件
  3. springmvc 数据精准绑定
  4. HTTP缓存机制[译文]
  5. wcf简单的创建和运用
  6. 使用Asponse.Cell解决Excel科学计数法问题
  7. C# 通过 oledb 操作Excel
  8. Sampling
  9. ElasticSearch本地调测环境构建
  10. BZOJ_1705_[Usaco2007 Nov]Telephone Wire 架设电话线_DP
  11. bootstrap的tree控件
  12. D. Diverse Garland Codeforces Round #535 (Div. 3) 暴力枚举+贪心
  13. oracle数据库的简单操作
  14. python导入import
  15. 代码规范(RL-TOC)用更合理的方式写 JavaScript
  16. UEditor百度编辑器,工具栏自定义添加一个普通按钮
  17. hihoCoder 1015 KMP算法(kmp)
  18. C++模板学习笔记
  19. Java 性能优化手册 — 提高 Java 代码性能的各种技巧
  20. springmvc小结(上)

热门文章

  1. GetWindowRect与GetClientRect 的区别
  2. 《Android Studio实战 快速、高效地构建Android应用》--四、Git入门
  3. Codeforces_797
  4. Codeforces Gym101234G Dreamoon and NightMarket(优先队列,子集和第k大)
  5. Elasticsearch与中文分词配置
  6. Docker可视化管理工具Portainer
  7. redis基础知识汇总
  8. XAMPP与ISS在80端口冲突问题
  9. HBASE手动触发major_compact
  10. 大数据运维尖刀班 | 集群_监控_CDH_Docker_K8S_两项目_腾讯云服务器