cf1189div2解题报告

codeforces

A

答案要不是一串要不就是去掉最后一个字母的两串

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=107;
int a[N<<2],n;
int main() {
scanf("%d",&n);
int js=0;
for(int i=1;i<=n;++i) {
scanf("%1d",&a[i]);
js+=a[i];
}
if(n!=1&&js==n-js) {
printf("2\n");
for(int i=1;i<n;++i) printf("%d",a[i]);
printf(" ");
printf("%d",a[n]);
} else {
printf("1\n");
for(int i=1;i<=n;++i) printf("%d",a[i]);
}
return 0;
}

B

cf好喜欢构造呀。

\(1-3-5-7-9-10-8-6-4-2\)

这样构造应该是最优解。

然后check输出

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=2e5+7;
int n,a[N],b[N];
int main() {
scanf("%d",&n);
for(int i=1;i<=n;++i) {
scanf("%d",&a[i]);
}
sort(a+1,a+1+n);
int js=0;
for(int i=1;i<=n;i+=2) b[++js]=a[i];
for(int i=(n&1)?n-1:n;i>=1;i-=2) b[++js]=a[i];
b[0]=b[n],b[n+1]=a[1];
for(int i=1;i<=n;++i)
if(b[i]>=b[i-1]+b[i+1]) return puts("NO"),0;
puts("YES");
for(int i=1;i<=n;++i)
printf("%d ",b[i]);
return 0;
}

C

虽然有很短的代码,但我还是写了线段树,好傻逼啊

#include <bits/stdc++.h>
#define ls rt<<1
#define rs rt<<1|1
using namespace std;
const int N=2e5+7;
int n,m,ans,tot[N<<2],sum[N<<2];
void build(int l,int r,int rt) {
if(l==r) {
scanf("%d",&tot[rt]);
return;
}
int mid=(l+r)>>1;
build(l,mid,ls);
build(mid+1,r,rs);
tot[rt]=(tot[ls]+tot[rs])%10;
sum[rt]=sum[ls]+sum[rs]+((tot[ls]+tot[rs])>=10);
// printf("sum[%d]=%d tot=%d\n",rt,sum[rt],tot[rt]);
}
int query(int l,int r,int L,int R,int rt) {
if(L<=l&&r<=R) {
ans+=sum[rt];
return tot[rt];
}
int mid=(l+r)>>1;
if(L<=mid&&R>mid) {
int a=query(l,mid,L,R,ls);
int b=query(mid+1,r,L,R,rs);
if(a+b>=10) ans++;
return (a+b)%10;
} else if(L<=mid) return query(l,mid,L,R,ls);
else return query(mid+1,r,L,R,rs);
}
int main() {
scanf("%d",&n);
build(1,n,1);
scanf("%d",&m);
for(int i=1,l,r;i<=m;++i) {
scanf("%d%d",&l,&r);
ans=0;
int tmp=query(1,n,l,r,1);
printf("%d\n",ans);
}
return 0;
}

D1

使得一颗树上边的权值任意,只要不出现度数为2的点就行。

#include <bits/stdc++.h>
using namespace std;
const int N=2e5+7;
int n,ru[N];
int main() {
scanf("%d",&n);
for(int i=1;i<n;++i) {
int l,r;
scanf("%d%d",&l,&r);
ru[l]++,ru[r]++;
}
for(int i=1;i<=n;++i)
if(ru[i]==2) return puts("NO"),0;
puts("YES");
return 0;
}

E

\[(a_i + a_j)(a_i^2 + a_j^2) \equiv k \bmod p
\]

\[a_i^3 + a_i^2a_j+a_ia_j^2 + a_j^3 \equiv k \bmod p
\]

左右乘\((a_i-a_j)\)

\[a_i^4 - a_j^4 \equiv ka_i-ka_j \bmod p
\]

\[a_i^4 - ka_i \equiv a_j^4-ka_j \bmod p
\]

map统计答案就行了

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int N=3e5+7;
int n,k,p,a[N];
unordered_map<int,int> Hash;
int pow4(int a) {return 1LL*a*a%p*a%p*a%p;}
int main() {
scanf("%d%d%d",&n,&p,&k);
for(int i=1;i<=n;++i) scanf("%d",&a[i]);
ll ans=0;
for(int i=1;i<=n;++i) {
int tmp=((pow4(a[i])-1LL*k*a[i]%p)%p+p)%p;
ans+=Hash[tmp];
Hash[tmp]++;
}
cout<<ans<<"\n";
return 0;
}

cf1189解题报告的更多相关文章

  1. CH Round #56 - 国庆节欢乐赛解题报告

    最近CH上的比赛很多,在此会全部写出解题报告,与大家交流一下解题方法与技巧. T1 魔幻森林 描述 Cortana来到了一片魔幻森林,这片森林可以被视作一个N*M的矩阵,矩阵中的每个位置上都长着一棵树 ...

  2. 二模13day1解题报告

    二模13day1解题报告 T1.发射站(station) N个发射站,每个发射站有高度hi,发射信号强度vi,每个发射站的信号只会被左和右第一个比他高的收到.现在求收到信号最强的发射站. 我用了时间复 ...

  3. BZOJ 1051 最受欢迎的牛 解题报告

    题目直接摆在这里! 1051: [HAOI2006]受欢迎的牛 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4438  Solved: 2353[S ...

  4. 习题:codevs 2822 爱在心中 解题报告

    这次的解题报告是有关tarjan算法的一道思维量比较大的题目(真的是原创文章,希望管理员不要再把文章移出首页). 这道题蒟蒻以前做过,但是今天由于要复习tarjan算法,于是就看到codevs分类强联 ...

  5. 习题:codevs 1035 火车停留解题报告

    本蒟蒻又来写解题报告了.这次的题目是codevs 1035 火车停留. 题目大意就是给m个火车的到达时间.停留时间和车载货物的价值,车站有n个车道,而火车停留一次车站就会从车载货物价值中获得1%的利润 ...

  6. 习题: codevs 2492 上帝造题的七分钟2 解题报告

    这道题是受到大犇MagHSK的启发我才得以想出来的,蒟蒻觉得自己的代码跟MagHSK大犇的代码完全比不上,所以这里蒟蒻就套用了MagHSK大犇的代码(大家可以关注下我的博客,友情链接就是大犇MagHS ...

  7. 习题:codevs 1519 过路费 解题报告

    今天拿了这道题目练练手,感觉自己代码能力又增强了不少: 我的思路跟别人可能不一样. 首先我们很容易就能看出,我们需要的边就是最小生成树算法kruskal算法求出来的边,其余的边都可以删掉,于是就有了这 ...

  8. NOIP2016提高组解题报告

    NOIP2016提高组解题报告 更正:NOIP day1 T2天天爱跑步 解题思路见代码. NOIP2016代码整合

  9. LeetCode 解题报告索引

    最近在准备找工作的算法题,刷刷LeetCode,以下是我的解题报告索引,每一题几乎都有详细的说明,供各位码农参考.根据我自己做的进度持续更新中......                        ...

随机推荐

  1. sqlserver获得数据库非聚集索引的代码

    创建Index DECLARE @zindex_sql NVARCHAR(max); SET @zindex_sql = N''; SELECT @zindex_sql = @zindex_sql + ...

  2. 探索ASP.NET MVC5系列

    探索ASP.NET MVC5系列之~~~6.Session篇(进程外Session)     探索ASP.NET MVC5系列之~~~5.缓存篇(页面缓存+二级缓存)     探索ASP.NET MV ...

  3. NET MVC 上传文件

    1.HTML @using (Html.BeginForm("UploadFile", "Student", FormMethod.Post, new { en ...

  4. python 面向对象编程、获取对象信息

    面向对象与面向过程 参考链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0 ...

  5. 事件绑定+call apply指向

    JS高级 事件—— 浏览器客户端上客户触发的行为都称为事件 所有事件都是天生自带的,不需要我们去绑定,只需要我们去触发,通过obj.事件名=function(){ } 事件名:onmousemove: ...

  6. English--七种句子成分概述

    English|七种句子成分概述 现代英语的语法是非常严谨的,英语句子的成分与汉语的句子成分有很大的区别.所以在学习语法的开始,需要上文讲到的句型作为骨架支撑,还需要明白句子的成分是什么,以及个各自的 ...

  7. 基础的python数据分析

    1. 单行注释 #print("hello word;") 2. 多行注释 ''' print("hello word;") print("hello ...

  8. 几种线程相关的map介绍

    Java中平时用的最多的Map集合就是HashMap了,它是线程不安全的. 看下面两个场景: 1.当用在方法内的局部变量时,局部变量属于当前线程级别的变量,其他线程访问不了,所以这时也不存在线程安全不 ...

  9. 浅谈Python设计模式 - 建造者模式

    声明:本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 建造者模式 当我们想要创建一个由多个部分构成的对象,而且他们的构建需要一步接一步 ...

  10. Hadoop-HA集群搭建-rehl7.4

    Hadoop-HA集群搭建-rehl7.4 hadoop 无说明需要登录其它机器操作,都是在集群的HD-2-101上执行的命令. 所有安装包地址:百度网盘,提取码:24oy 1. 基础环境配置 1.1 ...