20220303模拟赛题解and总结
总结

初一第一
一般,最后一题没打好
不难发现,教练出水了,可能是信心赛
A.不幸的7


暴力,没有逻辑可言
#include<bits/stdc++.h>
using namespace std;
int n,ans,t,k;
bool pd(int x)
{
while(x)
{
if(x%10==7)return false;
x/=10;
}
return true;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
k=i,t=0;
while(k)
{
t*=10;
t+=k%8;
k/=8;
}
if(pd(i)&&pd(t))ans++;
}
cout<<ans;
}
一些没用的感想
不难发现可以优化,完全不需要存下八进制
本题考察进制转换,不AC就该反思
B.选举


简单的贪心,思路很水,五分钟想出来
先固定A,问题变成让B追上A
A和B的初始的距离是什么?
\]
如果B什么都不做,A可以获得所有A支持者的选票
那一个城市能缩小多少距离呢
\]
首先,去一个城市,B的支持者和A的支持者都支持B,就是\(b_i+a_i\),
A少了\(a_i\)个支持者,也加上去,就这样
#include<bits/stdc++.h>
using namespace std;
struct node
{
long long a,b;
}a[1000005];
long long n,suma,k;
bool cmp(node x,node y)
{
return x.a*2+x.b>y.a*2+y.b;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
scanf("%lld%lld",&a[i].a,&a[i].b);
suma+=a[i].a;
}
sort(a+1,a+n+1,cmp);
while(suma>=0)
{
k++;
suma-=a[k].a*2+a[k].b;
}
cout<<k;
}
关于真实的题目
其实没什么
真的
开long long!,scanf!
C. 差的绝对值之和


这道题水炸了,好好想,很有意思,不要直接看题解!
题解
先排序,按绝对值的性质,从大边累加边算,看看代码吧
#include <bits/stdc++.h>
using namespace std;
long long n, a[1000005], sum, ans;
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
sort(a + 1, a + n + 1);
sum = a[n];
for (int i = n - 1; i >= 1; i--) {
ans += sum - a[i] * (n - i);
sum += a[i];
}
cout << ans;
}
有一个易错点,ans += sum - a[i] * (n - i);不要打成ans += sum - a[i] ;,
这个数要和前面所有数计算
D. 路径通过



整体操作,先明确父子关系,然后对于每个操作,理解为对整个树和子树的操作,
最后的dfs统计即可
#include<bits/stdc++.h>
using namespace std;
struct node
{
int t,next;
}a[500005];
long long n,m,x,y,z,tot,h[500005],fa[500005],s[500005],t[500005],w[500005],ans[500005];
void add(int x,int y)
{
tot++;
a[tot].t=y;
a[tot].next=h[x];
h[x]=tot;
}
void dfa(int x,int f)
{
for(int i=h[x];i;i=a[i].next)
{
if(a[i].t!=f)
{
fa[a[i].t]=x;
dfa(a[i].t,x);
}
}
}
void dfs(int x,int f)
{
ans[x]=ans[f]+w[x];
for(int i=h[x];i;i=a[i].next)
{
if(a[i].t!=f)
{
dfs(a[i].t,x);
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n-1;i++)
{
cin>>x>>y;
add(x,y);
add(y,x);
s[i]=x;
t[i]=y;
}
dfa(1,0);
cin>>m;
for(int i=1;i<=m;i++)
{
cin>>x>>y>>z;
if(x==1)
{
if(fa[t[y]]==s[y])
{
w[1]+=z;
w[t[y]]-=z;
}
else
{
w[s[y]]+=z;
}
}
else
{
if(fa[t[y]]==s[y])
{
w[t[y]]+=z;
}
else
{
w[1]+=z;
w[s[y]]-=z;
}
}
}
dfs(1,0);
for(int i=1;i<=n;i++)
{
cout<<ans[i]<<endl;
}
}
另一种做法
按dfs序,变成一个数组,然后树状数组整体操作
#E. 龙椅
这就是个Exgcd,我打出来真是万幸,就是找正整数解那段忘了,自己的又臭又长
\]
x为题目所求
化简得
\]
求即可
#include<bits/stdc++.h>
using namespace std;
long long t,a,b,c,x,y,gcd;
void exgcd(long long a,long long b,long long &x,long long &y)
{
if(!b)
{
// cout<<a<<' '<<b<<endl;
gcd=a;
x=1;
y=0;
return;
}
exgcd(b,a%b,y,x);
//cout<<a<<' '<<b<<' '<<x<<' '<<y<<endl;
y-=((a/b)*x);
}
int main()
{
cin>>t;
for(int i=1;i<=t;i++)
{
cin>>b>>c>>a;
x=0,y=0;
exgcd(a,-b,x,y);
if((-c)%gcd!=0)
{
cout<<-1<<endl;
continue;
}
x*=-c/gcd;
y*=-c/gcd;
if((a*-b)/gcd>0)
{
y-=(a*-b)/gcd/b*(x/(a*-b)/gcd/a);
x%=(a*-b)/gcd/a;
while(x<0)
{
x+=(a*-b)/gcd/a;
y-=(a*-b)/gcd/b;
}
y+=(a*-b)/gcd/b*(x/(a*-b)/gcd/a);
x%=(a*-b)/gcd/a;
while(x-((a*-b)/gcd)/a>=0)
{
x-=(a*-b)/gcd/a;
y+=(a*-b)/gcd/b;
}
}
else
{
y+=(a*-b)/gcd/b*(x/(a*-b)/gcd/a);
x%=(a*-b)/gcd/a;
while(x<0)
{
x-=(a*-b)/gcd/a;
y+=(a*-b)/gcd/b;
}
y-=(a*-b)/gcd/b*(x/(a*-b)/gcd/a);
x%=(a*-b)/gcd/a;
while(x+((a*-b)/gcd)/a>=0)
{
x+=(a*-b)/gcd/a;
y-=(a*-b)/gcd/b;
}
}
cout<<x<<endl;
}
}
第六题待做
20220303模拟赛题解and总结的更多相关文章
- NOIP第7场模拟赛题解
NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- DYOJ 【20220303模拟赛】最少分组 题解
最少分组 题意 \(n\) 个点 \(m\) 条边的无向图,可以删掉 0 条或多条边,求满足条件的最小连通块数量: 对每个顶点对 \((a,b)\) ,若 \(a\) 和 \(b\) 同属于一个连通块 ...
- 【洛谷】xht模拟赛 题解
前言 大家期待已久并没有的题解终于来啦~ 这次的T1和HAOI2016撞题了...深表歉意...表示自己真的不知情... 天下的水题总是水得相似,神题各有各的神法.--<安娜·卡列妮娜> ...
- PKUSC 模拟赛 题解_UPD
之前挖了两个大坑 一个是day1下午的第二题 另一个是day2上午的第五题 先说day1下午的第二题吧 我们显然不能O(n^2)的dp,所以我们只能算贡献 首先对于任意一个边界点而言,他对答案的贡献路 ...
- 10.6-10.7 牛客网NOIP模拟赛题解
留个坑... upd:估计这个坑补不了了 如果还补不了就删了吧
- 2019 蓝桥杯国赛 B 组模拟赛 题解
标签 ok #include<bits/stdc++.h> using namespace std; /* 求阶乘 去除尾部0 每次求阶乘时:结果去除尾0,并对 1e6取余 */ type ...
- 『7.5 NOIP模拟赛题解』
T1 Gift Description 人生赢家老王在网上认识了一个妹纸,然后妹纸的生日到了,为了表示自己的心 意,他决定送她礼物.可是她喜爱的东西特别多,然而他的钱数有限,因此他想 知道当他花一 ...
- 『7.3 NOIP模拟赛题解』
T1 gift Description 夏川的生日就要到了.作为夏川形式上的男朋友,季堂打算给夏川买一些生日礼物. 商店里一共有种礼物.夏川每得到一种礼物,就会获得相应喜悦值Wi(每种礼物的喜 ...
随机推荐
- 一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 id 是几?如何获取当前数据库版本?
一张自增表里面总共有 7 条数据,删除了最后 2 条数据,重启 MySQL 数据库,又插入了一条数据,此时 id 是几? 一般情况下,我们创建的表的类型是InnoDB,如果新增一条记录(不重启mysq ...
- Spring工作原理:初识SpringMVC
1.SpringMVC简介 SpringMVC是Spring框架的一个模块.SpringMVC和Spring无需通过中间层进行整合.是一个轻量级的,基于请求响应的MVC框架. 2.1.什么是MVC? ...
- 设计一个简单的devops系统
前言 公司设计的RDMS挺好用的,我也照猫画虎简单的设计一个DevOps系统,与大家分享,不足之处欢迎拍砖,以免误人子弟 前置条件 gitlab gitlab-runner k8s 1. gitlab ...
- 最新漏洞:Spring Framework远程代码执行漏洞
Spring Framework远程代码执行漏洞 发布时间 2022-03-31 漏洞等级 High CVE编号 CVE-2022-22965 影响范围:同时满足以下三个条件可确定受此漏洞影响: JD ...
- 理解feof与EOF
feof(feof msdn) feof用于判断文件结尾.头文件<cstdio>.使用方法是feof(fp),fp为指向需要判断的文件的指针.如果不到文件结尾,返回0值:如果是文件结尾,返 ...
- ubuntu root密码问题
安装完Ubuntu后忽然意识到没有设置root密码,不知道密码自然就无法进入根用户下.到网上搜了一下,原来是这麽回事.Ubuntu的默认root密码是随机的,即每次开机都有一个新的root密码.我们可 ...
- 《头号玩家》AI电影调研报告(一)
观<头号玩家>AI电影调研报告 一. 前言 有一部电影,上映开始就能让世界各不同年龄段.身处不同文化的人在一瞬间达到心意相通:其中的一些镜头,让影迷.游戏迷.ACG爱好者等拥有截然不同兴趣 ...
- HDMS(Headend Device Management System)软件下载
进入官网http://www.pbi-china.com/CHS/index.aspx点击右下角的下载通道.
- Shiro+springboot+mybatis+EhCache(md5+salt+散列)认证与授权-03
从上文:Shiro+springboot+mybatis(md5+salt+散列)认证与授权-02 当每次进行刷新时,都会从数据库重新查询数据进行授权操作,这样无疑给数据库造成很大的压力,所以需要引入 ...
- paramterType和resultType的区别
resultType是sql语句查询结果集的封装类型,也就是说把sql查询的结果封装在bean里返回回去,是存数据用的. paramType是从传过来的Bean中取数据放进例如insert语句的val ...