学习笔记17:AtCoder Beginner Contest 340

C

C - Divide and Divide (atcoder.jp)

1e17暴力肯定不行

模拟暴力的过程我们发现很多运算是重复的

记忆化一下

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<map>using namespace std;
typedef long long LL;
#define int long long
typedef pair<int,int> PII;
const int N=1000010;
int a[N];
map<int,int>mp;
int dfs(int now){if(mp.count(now)) return mp[now];if(now==1) return 0;mp[now]=dfs(now/2)+dfs((now+1)/2)+now;return mp[now];
}
void solve(){int n;cin>>n;cout<<dfs(n)<<endl;
}
signed main(){int t=1;//cin>>t;while(t--){solve();}
}

D

https://atcoder.jp/contests/abc340/tasks/abc340_d

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<array>
using namespace std;
typedef long long LL;
#define int long long
typedef pair<int,int> PII;
const int N=1000010;
int a[N],b[N],c[N];
int dp[N][2];
std::vector<array<int,2>>v[N];
int dist[N];
bool st[N];
void dij(){priority_queue<array<int,2>,vector<array<int,2>>,greater<array<int,2>>>q;q.push({dist[1],1});while(q.size()){auto t=q.top();q.pop();if(st[t[1]]) continue;st[t[1]]=1;for(auto c:v[t[1]]){if(dist[c[0]]>dist[t[1]]+c[1]){dist[c[0]]=dist[t[1]]+c[1];q.push({dist[c[0]],c[0]});}}}
}
void solve(){int n;cin>>n;for(int i=2;i<=n;i++){dist[i]=1e18;}for(int i=1;i<n;i++){cin>>a[i]>>b[i]>>c[i];v[i].push_back({i+1,a[i]});v[i].push_back({c[i],b[i]});}dij();cout<<dist[n]<<endl;
}
signed main(){int t=1;//cin>>t;while(t--){solve();}
}

E

https://atcoder.jp/contests/abc340/tasks/abc340_e

线段树处理

操作:查询在位置上的值sum,然后修改这个该位置的值为y

        然后给整个数组加上sum/n,特殊情况还有剩余的手玩一下模拟即可

        

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<array>
using namespace std;
typedef long long LL;
#define int long long
typedef pair<int,int> PII;
const int N=1000010;
int a[N],b[N],c[N];
struct Node
{int l, r;int sum,tag;
}tr[N * 4];void pushup(int u)
{tr[u].sum=tr[u<<1].sum+tr[u<<1|1].sum;
}void pushdown(int u)
{if(tr[u].tag){tr[u<<1].tag+=tr[u].tag;tr[u<<1|1].tag+=tr[u].tag;tr[u<<1].sum+=tr[u].tag;tr[u<<1|1].sum+=tr[u].tag;tr[u].tag=0;}
}void build(int u, int l, int r)
{if (l == r) tr[u] = {l, r,a[r],0};else{tr[u] = {l, r,0,0};int mid = l + r >> 1;build(u << 1, l, mid), build(u << 1 | 1, mid + 1, r);pushup(u);}
}void update(int u, int l, int r, int d)
{if (tr[u].l >= l && tr[u].r <= r){tr[u].sum+=d;tr[u].tag+=d;}else{pushdown(u);int mid = tr[u].l + tr[u].r >> 1;if (l <= mid) update(u << 1, l, r, d);if (r > mid) update(u << 1 | 1, l, r, d);pushup(u);}
}int query(int u, int l, int r)
{if (tr[u].l >= l && tr[u].r <= r){return tr[u].sum;  }else{pushdown(u);int mid = tr[u].l + tr[u].r >> 1;int res = 0;if (l <= mid ) res = query(u << 1, l, r);if (r > mid) res += query(u << 1 | 1, l, r);return res;}
}void solve(){int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];}build(1,1,n);for(int i=1;i<=m;i++){cin>>b[i];b[i]++;int sum=query(1,b[i],b[i]);update(1,b[i],b[i],-sum);int tmp=sum/n;update(1,1,n,tmp);tmp=sum-tmp*n;if(tmp){if(tmp<=n-b[i]){if(b[i]+1<=n)update(1,b[i]+1,b[i]+tmp,1);}else{if(b[i]+1<=n)update(1,b[i]+1,n,1);tmp-=n-b[i];update(1,1,tmp,1);}}}for(int i=1;i<=n;i++) cout<<query(1,i,i)<<" ";
}
signed main(){int t=1;while(t--){solve();}
}

F

根据叉积求面积公式

S=\frac{1}{2}abs\left ( \left (x2-x1 \right ) \cdot \left (y3-y1 \right )-\left (y2-y1 \right ) \cdot \left (x3-x1 \right )\right )

这道题中x1=0,y1=0,S=1

转化成

2=x2 \cdot y3 - y2 \cdot x3

现在x2和y2我们已经知道

通过扩展欧几里得我们可以算出

gcd(a,b)=a \cdot x - b \cdot y

这个公式的x,y的一组解(无解的情况:2%gcd(a,b)!=0)

这时候将x*gcd(a,b),y*gcd(a,b)即可得到答案

#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<unordered_set>
using namespace std;
typedef long long LL;
#define int long long
typedef pair<int,int> PII;
const int N=1000010;
int a[N];
int exgcd(int a,int b,int &x,int &y){if(!b){x=1,y=0;return a;}int d=exgcd(b,a%b,y,x);y-=a/b*x;return d;
}
void solve(){int x,y,a,b;cin>>x>>y;//S=1/2*((x2-x1)*(y3-y1)-(y2-y1)*(x3-x1))//在本题中x1=0 y1=0,2=(已知)x2*y3-(已知)y2*x3//无解的情况2%gcd(x2,-y2)!=0int g=exgcd(x,-y,a,b);if(2%g){cout<<-1<<endl;}else{a*=2/g;b*=2/g;cout<<b<<" "<<a<<endl;}
}
signed main(){int t=1;//cin>>t;while(t--){solve();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/683817.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于npmlink的问题

深入浅出关于Npm linl的问题 关键词&#xff1a; vue3报错 Uncaught TypeError: Cannot read properties of null (reading ‘isCE‘) at renderSlot npm link 无法实现热更新 我的开发环境是 “vue”: “^3.2.13” 今天在使用 rollup搭建组件库的时候我发现我的组件库不能…

第22讲基于springboot+vue权限系统二次开发环境准备

基于springbootvue权限系统二次开发环境准备 基于这个系统二次开发&#xff0c;不重复造轮子&#xff1b; 基于这个系统二次开发&#xff0c;不重复造轮子&#xff1b; 一&#xff0c;权限系统环境准备 二&#xff0c;数据库表整合投票系统数据库 二&#xff0c;修改标题&a…

贪心算法练习day1

练习1--翻硬币 1&#xff09;题目及要求 2&#xff09;解题思路 输入的是字符串&#xff0c;要想将两组字符串进行一一对比&#xff0c;需要将字符串转换成字符数组&#xff0c;再使用for循环依次遍历字符数组&#xff0c;进行比对。 输入两行字符串&#xff0c;转换成两个字…

干货 | 实战演练基于加密接口测试测试用例设计

如果接口测试仅仅只是掌握一些requests或者其他一些功能强大的库的用法&#xff0c;是远远不够的&#xff0c;还需要具有根据公司的业务以及需求去定制化一个接口自动化测试框架能力。所以在这个部分&#xff0c;会主要介绍接口测试用例分析以及通用的流程封装是如何完成的。 首…

Java实现课程案例资源库系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 管理员需求分析2.2 用户需求分析 三、系统设计3.1 业务流程设计3.1.1 管理员业务流程设计3.1.2 用户业务流程设计3.1.3 首页功能模块及业务流程分析3.1.4 案例资源中心功能模块及业务流程分析3.1.5 用户信息中心功能模块…

html从零开始7:文档流、浮动、清除浮动,定位【搬代码】

文档流 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, init…

树莓派4B(Raspberry Pi 4B)使用docker搭建阿里巴巴sentinel服务

树莓派4B&#xff08;Raspberry Pi 4B&#xff09;使用docker搭建阿里巴巴sentinel服务 由于国内访问不了docker hub&#xff0c;而国内镜像仓库又没有适配树莓派ARM架构的sentinel镜像&#xff0c;所以我们只能退而求其次——自己动手构建镜像。本文基于Ubuntu&#xff0c;Jav…

猫头虎分享已解决Bug || TypeError: Cannot read property ‘match‘ of undefined

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

c语言操作符(下)

目录 ​编辑 逗号表达式 下标访问[] 函数调⽤() sizeof 结构成员访问操作符 结构体 结构体声明 直接访问 .成员名 间接访问 结构体指针->成员名 逗号表达式 exp1, exp2, exp3, …expN 运算规则&#xff1a;从左向右依次执⾏。整个表达式的结果是最后⼀个表达…

第一篇【传奇开心果系列】Python的pyttsx3库技术点案例示例:文本转换语言

传奇开心果短博文系列 系列短博文目录Python的pyttsx3库技术点案例示例系列 短博文目录前言一、pyttsx3主要特点和功能介绍二、pyttsx3文字转语音操作步骤介绍三、多平台支持介绍和示例代码四、多语言支持介绍和示例代码五、自定义语言引擎介绍和示例代码六、调整语速和音量介绍…

姿态传感器MPU6050模块之陀螺仪、加速度计、磁力计

MEMS技术 微机电系统&#xff08;MEMS, Micro-Electro-Mechanical System&#xff09;&#xff0c;也叫做微电子机械系统、微系统、微机械等&#xff0c;指尺寸在几毫米乃至更小的高科技装置。微机电系统其内部结构一般在微米甚至纳米量级&#xff0c;是一个独立的智能系统。 微…

[Vue warn]: Duplicate keys detected: ‘1‘. This may cause an update error.

[Vue warn]: Duplicate keys detected: ‘1‘. This may cause an update error.——> Vue报错&#xff0c;key关键字不唯一&#xff1a; 解决办法&#xff1a;修改一下重复的id值&#xff01;&#xff01;&#xff01;

IMX6ULL移植U-Boot 2022.04

目录 目录 1.编译环境以及uboot版本 2.默认编译测试 3.uboot中新增自己的开发板 3.编译测试 4.烧录测试 5.patch文件 1.编译环境以及uboot版本 宿主机Debian12u-boot版本lf_v2022.04 ; git 连接GitHub - nxp-imx/uboot-imx: i.MX U-Boot交叉编译工具gcc-arm-10.3-2021.0…

Excel导入预览与下载

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Excel导入预览与下载 preview Controller PostMapping("preview")ApiOperation("上传拒付预警预览")public Result<List<ResChargebackWa…

CFS三层靶机

参考博客&#xff1a; CFS三层内网靶场渗透记录【详细指南】 - FreeBuf网络安全行业门户 CFS三层靶机搭建及其内网渗透【附靶场环境】 | TeamsSix CFS三层网络环境靶场实战 - PANDA墨森 - 博客园 (cnblogs.com) CFS三层靶机实战--内网横向渗透 - 知乎 (zhihu.com) CFS靶机…

使用正点原子i.mx6ull加载字符驱动模块chrdevbase

搞了整整两天才整好&#xff01;踩了不少坑&#xff0c;记录一下 0. 操作基础 操作前需要设置好如下配置 1.开发板和ubuntu能够互相ping通 2.开发板的SD卡中安装好uboot&#xff0c;我用的V2.4版本的&#xff0c;其他版本应该也行 3.准备材料 01_chrdevbase文件 linux-im…

HCIA-HarmonyOS设备开发认证V2.0-轻量系统内核内存管理-静态内存

目录 一、内存管理二、静态内存2.1、静态内存运行机制2.2、静态内存开发流程2.3、静态内存接口2.4、实例2.5、代码分析&#xff08;待续...&#xff09;坚持就有收货 一、内存管理 内存管理模块管理系统的内存资源&#xff0c;它是操作系统的核心模块之一&#xff0c;主要包括…

蓝桥杯每日一题------背包问题(三)

前言 之前求的是在特点情况下选择一些物品让其价值最大&#xff0c;这里求的是方案数以及具体的方案。 背包问题求方案数 既然要求方案数&#xff0c;那么就需要一个新的数组来记录方案数。动态规划步骤如下&#xff0c; 定义dp数组 第一步&#xff1a;缩小规模。考虑n个物品…

Spring Boot 笔记 017 创建接口_新增文章

1.1实体类增加校验注释 1.1.1 自定义校验 1.1.1.1 自定义注解 package com.geji.anno;import com.geji.validation.StateValidation; import jakarta.validation.Constraint; import jakarta.validation.Payload; import jakarta.validation.constraints.NotEmpty;import jav…

Qt:自定义信号,信号emit,传参问题,信号槽与moc

一、自定义信号&#xff0c;信号emit 1、自定义信号 在头文件中 加入signals&#xff1a; 就可以编写信号 2、emit emit的作用是通知信号发生 二、跨UI控件传参 每次按Dialog添加按钮主控件数字会增长 // .h private slots:void on_btnAdd_clicked(); signals:void sign…