总结

初一第一

一般,最后一题没打好

不难发现,教练出水了,可能是信心赛

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的初始的距离是什么?

\[sumA=\sum_{i=1}^{n}a_i
\]

如果B什么都不做,A可以获得所有A支持者的选票

那一个城市能缩小多少距离呢

\[w_i=b_i+2a_i
\]

首先,去一个城市,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,我打出来真是万幸,就是找正整数解那段忘了,自己的又臭又长

\[ s+1+xk \equiv 1(mod\ n)
\]

x为题目所求

化简得

\[xk-yn=-s
\]

求即可


#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总结的更多相关文章

  1. NOIP第7场模拟赛题解

    NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...

  2. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  3. DYOJ 【20220303模拟赛】最少分组 题解

    最少分组 题意 \(n\) 个点 \(m\) 条边的无向图,可以删掉 0 条或多条边,求满足条件的最小连通块数量: 对每个顶点对 \((a,b)\) ,若 \(a\) 和 \(b\) 同属于一个连通块 ...

  4. 【洛谷】xht模拟赛 题解

    前言 大家期待已久并没有的题解终于来啦~ 这次的T1和HAOI2016撞题了...深表歉意...表示自己真的不知情... 天下的水题总是水得相似,神题各有各的神法.--<安娜·卡列妮娜> ...

  5. PKUSC 模拟赛 题解_UPD

    之前挖了两个大坑 一个是day1下午的第二题 另一个是day2上午的第五题 先说day1下午的第二题吧 我们显然不能O(n^2)的dp,所以我们只能算贡献 首先对于任意一个边界点而言,他对答案的贡献路 ...

  6. 10.6-10.7 牛客网NOIP模拟赛题解

    留个坑... upd:估计这个坑补不了了 如果还补不了就删了吧

  7. 2019 蓝桥杯国赛 B 组模拟赛 题解

    标签 ok #include<bits/stdc++.h> using namespace std; /* 求阶乘 去除尾部0 每次求阶乘时:结果去除尾0,并对 1e6取余 */ type ...

  8. 『7.5 NOIP模拟赛题解』

    T1 Gift Description ​ 人生赢家老王在网上认识了一个妹纸,然后妹纸的生日到了,为了表示自己的心 意,他决定送她礼物.可是她喜爱的东西特别多,然而他的钱数有限,因此他想 知道当他花一 ...

  9. 『7.3 NOIP模拟赛题解』

    T1 gift Description ​ 夏川的生日就要到了.作为夏川形式上的男朋友,季堂打算给夏川买一些生日礼物. ​ 商店里一共有种礼物.夏川每得到一种礼物,就会获得相应喜悦值Wi(每种礼物的喜 ...

随机推荐

  1. We're sorry but demo3 doesn't work properly without JavaScript enabled. Please enable it to continue.

    今天遇到一个问题为 vue请求得到的响应为 We're sorry but demo3 doesn't work properly without JavaScript enabled. Please ...

  2. css文本溢出解决方案

    1.普通单行截断省略 overflow:hidden; 文字长度超出限定宽度,则隐藏超出的内容) text-overflow:ellipsis;(设置文字在一行显示,不能换行) white-space ...

  3. SpringDataJpa 实体类过滤伪删除

    当需要过滤实体类的数据时,根据伪删除字段进行过滤,需要使用Hibernate提供的@Where注解 使用方式: @Entity(name = "Account") @Where( ...

  4. css布局基础总结

    前端css布局知识繁杂,实现方式多种多样.想写出高效.合理的布局,必须以深厚的css基础为前提.为了方便记忆和复习,将css布局要点记录如下.内容较多,应用方面说的不太详细,但都是很实用的点. 所谓布 ...

  5. Android bluetoothAdapter.startDiscovery()无法搜索设备问题解决办法

    Android6.0以上要定位权限,要手动把手机软件的定位权限打开,又被坑了好长时间

  6. Blazor组件自做九: 用20行代码实现文件上传,浏览目录功能 (3)

    接上篇 Blazor组件自做九: 用20行代码实现文件上传,浏览目录功能 (2) 7. 使用配置文件指定监听地址 打开 appsettings.json 文件,加入一行 "UseUrls&q ...

  7. Java基础之浅谈异常与了解断言

    一.产生错误原因 用户输入错误 设备错误 物理限制 代码错误 二.解决错误---异常 在Java中异常对象都是派生于Throwable类的一个实例. 我们一般将异常分为两种:①Error和②Excep ...

  8. Ubuntu更换apt镜像源

    1. 手动更改 备份镜像源 cd /etc/apt cp sources.list sources.list.bak 修改镜像源 sudo vim sources.list # 复制粘贴下面镜像源,保 ...

  9. spring-注入集合对象

    1.创建Stu类 package com.spring.collections; import java.util.Arrays; import java.util.List; import java ...

  10. MySQL 8 数据源配置

    参考文档 官方文档 https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-overview.html 官方文档(PDF版)下载地址:http ...