Codeforces Round #182 (Div. 1)题解

A题:Yaroslav and Sequence1

题意:

给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其中n个元素改变符号,你的目的是使得最后所有数的和尽量大,问你答案是多少

题解:

感觉上就是构造题,手动玩一玩就知道,当n为奇数的时候,你可以通过三次操作,使得只会改变一个负数的符号。同理n为偶数的时候,每次要改变两个负数的符号。
所以答案如下:
当n为奇数的时候,答案为所有数的绝对值和
当n为偶数的时候,负数个数为偶数的时候,答案为所有数的绝对值和,否则就让绝对值最小的那个数取负数就好了。

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 105;
int a[maxn],n,sum,tmp=1001,fu;
int main()
{scanf("%d",&n);for(int i=0;i<2*n-1;i++){scanf("%d",&a[i]);sum+=abs(a[i]);if(a[i]<0)fu++;tmp=min(tmp,abs(a[i]));}if(n%2==1){cout<<sum<<endl;}else{if(fu%2==1){cout<<sum-2*tmp<<endl;}else{cout<<sum<<endl;}}
}

B题:Yaroslav and Time1

题意:

给你一个二维平面,你要从1走到n去,两点之间的距离等于abs(x[i]-x[j])+abs(y[i]-y[j]),然后你到达j点的时候,可以让时间提前a[i],问你最快到达n点是什么时候。

题解:

明显的傻逼题嘛,floyd一下就好了

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 106;
int n,d,a[maxn],mp[maxn][maxn],x[maxn],y[maxn];
int main()
{scanf("%d%d",&n,&d);for(int i=2;i<=n-1;i++)scanf("%d",&a[i]);for(int i=1;i<=n;i++){scanf("%d%d",&x[i],&y[i]);}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i==j)continue;mp[i][j]=(abs(x[i]-x[j])+abs(y[i]-y[j]))*d-a[j];}}for(int k=1;k<=n;k++){for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){mp[i][j]=min(mp[i][j],mp[i][k]+mp[k][j]);}}}cout<<mp[1][n]<<endl;
}

C题:Yaroslav and Algorithm

题意:

让你写一个程序,只能包含数字和问号,以及一个>>符号,或者<>符号。使得数通过这个算法之后,增加1.
具体语法如下:
1.首先读入一个字符串s
2.你的程序包括若干行代码,形式为si>>wi,或者si<>wi,si和wi只能由数字或者问号组成
3.在程序中找到最小的i,使得si是s的子串,然后将第一个出现的si替换成为wi,如果符号为>>的话,重新执行这一步,如果为<>的话,终止程序
4.如果找不到i,那么终止程序。

题解:

加一,其实只用考虑最后一位是什么就好了。
所以先找到最后一位是什么,这个是最关键的。
我们先把问号扔到前面,然后再把问号不断往后传就好了。

代码

#include<stdio.h>int main()
{int i;for (i=0; i<9; i++) printf("%d\?\?<>%d\n",i,i+1);puts("9\?\?>>\?\?0\n\?\?0<>10");for (i=0; i<=9; i++) printf("\?%d>>%d\?\n",i,i);puts("\?>>\?\?\n>>\?");
}

D题:Yaroslav and Divisors

题意:

给你n个数的1-n的排列,Q次询问,每次询问一个区间里面有多少对数满足a[i]%a[j]=0(l<=i,j<=r)

题解:

离线处理,按照L坐标大的排前面排序,预处理E[i][j]表示 a[j] mod a[i] == 0,L倒着枚举,然后
然后不断更新这个值,update(j,1),然后每次答案就是ask(r)。因为r一定是小于等于r的数更新过来的,且现在只更新到L,所以ask(r)就等与[L,r]的值

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e5+7;
vector<int>E[maxn];
struct node{int l,r,id;
}Q[maxn];
bool cmp(node A,node B){return A.l>B.l;
}
int n,m,ans[maxn],pos[maxn],d[maxn],a[maxn];
int lowbit(int x){return x&(-x);
}
void add(int x){for(int i=x;i<maxn;i+=lowbit(i))d[i]++;
}
int ask(int x){int res = 0;for(int i=x;i;i-=lowbit(i))res+=d[i];return res;
}
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%d",&a[i]),pos[a[i]]=i;for(int i=1;i<=m;i++){scanf("%d%d",&Q[i].l,&Q[i].r);Q[i].id=i;}sort(Q+1,Q+1+m,cmp);for(int i=1;i<=n;i++){for(int j=i;j<=n;j+=i){E[min(pos[i],pos[j])].push_back(max(pos[i],pos[j]));}}int L=n;for(int i=1;i<=m;i++){while(L>=Q[i].l){for(int j=0;j<E[L].size();j++)add(E[L][j]);L--;}ans[Q[i].id]=ask(Q[i].r);;}for(int i=1;i<=m;i++)cout<<ans[i]<<endl;
}

转载于:https://www.cnblogs.com/qscqesze/p/6132302.html

Codeforces Round #182 (Div. 1)题解【ABCD】相关推荐

  1. Codeforces Round #514 (Div. 2)题解

    Codeforces Round #514 (Div. 2)题解 A 喵,直接模拟. B 枚举所有盖章时的,合法的,左上角的位置.能盖的话就盖一下.最后check一下图案是否相等即可 C 一轮一轮的扔 ...

  2. 【算法题解】Codeforces Round #817 (Div. 4)题解

    文章目录 Codeforces Round #817 (Div. 4)题解 A. Spell Check B. Colourblindness C. Word Game D. Line E. Coun ...

  3. Codeforces Round #747 (Div. 2)题解

    Codeforces Round #747 (Div. 2)题解 (本博客将持续更新以后每场CF div2的题解,喜欢ACM.OI的小伙伴记得点个关注哟) 昨天夜晚刷网络流刷入迷了,渐渐就忘记了我还要 ...

  4. Codeforces Round #789 (Div. 2)题解

    Codeforces Round #789 (Div. 2)题解 A. Tokitsukaze and All Zero Sequence 原题链接 算法标签 贪心 排序 思路 情况一:数组存在零 → ...

  5. Codeforces Round #748 (Div. 3) 题解 完整A~G

    Codeforces Round #748 (Div. 3) 题解 A. Elections 题意 已知竞选中三个候选人的当前得票数 a , b , c a,b,c a,b,c,现在可以增加任何一个人 ...

  6. Codeforces Round #533 (Div. 2)题解

    link orz olinr AK Codeforces Round #533 (Div. 2) 中文水平和英文水平都太渣..翻译不准确见谅 T1.给定n<=1000个整数,你需要钦定一个值t, ...

  7. Codeforces Round #734 (Div. 3) 题解

    Hello大家好,今天给大家带来的是 Codeforces Round #734 (Div. 3) 的全题目讲解. 本文链接:https://www.lanqiao.cn/questions/2040 ...

  8. Codeforces Round #462 (Div. 2)题解

    Codeforces Round #462 (Div. 2) B题--我固执的认为1e18是18位数,导致被hack,花了20分钟才检查出这个错误,很僵硬 Codeforces 934C 题意 给定一 ...

  9. Codeforces Round #441 Div. 2题解

    A.直接判断相邻的边是不是最短边 是就来回走 不然就走一条第二的然后再来回走 #include<cstdio> #include<cstring> #include<al ...

最新文章

  1. Missing artifact com.microsoft.sqlserver:sqljdbc4:jar:4.0
  2. 移动数据网络类型是nr_便携式移动网络的快速搭建方法
  3. 纯CSS实现的3D简洁按钮设计
  4. 浪漫桃心的Android表白程序
  5. 在手机上共享屏幕,更专业的远程协助软件
  6. php最小二乘法,Python中实现最小二乘法思路及实现代码
  7. 功夫熊猫里乌龟大师的一句名言
  8. 什么是UTF-8编码
  9. VUE不同路由地址跳转相同页面,页面数据根据不同参数刷新
  10. 微信小程序的wx.chooseImage如何把图片传给后端
  11. 短链接服务商Bitly推出名为RealTime的“互联网热点发掘引擎”
  12. 分词器——ik——分词算法
  13. jacob xls与xlsx格式互转
  14. ArrayMap的源码分析
  15. 电池pack结构_锂电池包PACK结构设计的要求有哪些
  16. Mathematica做微积分
  17. JavaScript设计模式与开发实践(网课学习)
  18. 【医学图像智能计算】DL在医学影像中的应用综述—图像重建
  19. “Command CodeSign failed with a nonzero exit code”解决方案
  20. 利用html编写网站中的新闻快报模块

热门文章

  1. LocalDB 和Compact
  2. [ASP]没有权限: 'CreateObject'
  3. 2020顶会指南:征稿截止时间、举办地、举办时间一览
  4. CVPR 2019 | 步步为营!通过迭代式模糊核预测提高超分辨质量
  5. 今日新出!旷视提出One-Shot模型搜索框架的新变体
  6. 没有基础的想转行学习Python怎么学
  7. 车速与档位匹配关系_档位与速度匹配法则 每个档位的速度范围
  8. 顺丰科技2021届春季招聘正式启动!
  9. 这就是数据分析之算法认知
  10. 存储Tensorflow训练网络的参数