F-小富的idea(2023河南萌新联赛第(四)场:河南大学)

这篇具有很好参考价值的文章主要介绍了F-小富的idea(2023河南萌新联赛第(四)场:河南大学)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

卷王小富最近又在内卷,并且学了一门新的技能:书法,但是不幸的是在国庆节的书法大赛上,小富不小心打翻了墨水瓶,导致很多墨滴溅在了他的书法纸上,看着墨水不断扩散,浸透了他的书法纸,小富突然萌生了一个想法:我能不能知道某时刻纸上一共有多少墨块? 

我们假设墨滴是同时溅在纸上的,并且它们起始大小都为 0,由于墨滴大小不同,因此它们的扩散速度也不同,姑且假设墨滴都是按圆形扩散,如果两个或以上墨滴在扩散过程中相遇,那么就称它们为一个墨块(单独一个墨滴也是墨块),并且假设墨滴相遇不影响它的扩散,对于任意时刻 tt,小富想知道纸上有多少墨块 

由于小富是ccpc金牌,这个问题对他来说简直是小菜一碟,并且小富还要继续他的书法大赛,于是他决定把这个问题交给你来解决,希望你不要辜负他的期望哦 

输入描述:

 

第一行一个整数 nn,表示一共 nn 个墨滴(1≤n≤10^3)

接下来 n 行,每行三个整数 x,y,v,分别表示墨滴的位置 (x,y),以及墨滴扩散的速度 v(0≤x,y,v≤103)

接下来一行一个整数 q,表示 q 次查询(0≤q,t≤10^3)

之后是 q 行,每行一个整数 t ,表示查询 t 时刻纸上一共多少个墨块

输出描述:

 

q 行,每行一个整数,表示 t 时刻纸上一共多少个墨块

示例1

输入

3
0 2 1
0 0 1
7 7 2
3
0
1
5

输出

3
2
1

说明

0时刻墨滴面积均为0,故答案为3

1时刻墨滴1,2相切,也记为相遇,故答案为2

5时刻三个墨滴都相遇,答案为1

思路:

        题目让求的是每次询问的时候,t时刻桌面上有多少墨水。那么一开始所有墨水没有扩散,此时是不是就是有n个墨水。那么再想想,俩块墨水什么时候会变成一块墨水,而题中墨水一开始大小都是0,那么是不是可以抽象为,俩个墨点之间要多久才能从这个墨点到达另一个墨点。

那么此时不就能得到多少时间会有墨点相融合,而融合事后的墨点就用并查集,将他们连起来。

(数据不超过1e3,所以预处理墨点合成时间是不会超时的)。当询问的时候采用离线处理的方法。还有一个小技巧就是,询问和预处理的放在一起,但是由于t时刻可能有刚好融合的,那么我们把t+1e-7这样询问就会在t时刻之后,从而解决t时刻有融合的问题文章来源地址https://www.toymoban.com/news/detail-638115.html

#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<stack>
#include<string>
#include<algorithm>
#include<unordered_map>
#include<map>
#include<bitset>
#include<cstring>
#include <unordered_set>
//#include<priority_queue>
#include<queue>
#include<deque>
#include<set>
#include<stdlib.h>
#define dbug cout<<"hear!"<<endl;
#define rep(a,b,c) for(ll a=b;a<=c;a++)
#define per(a,b,c) for(ll a=b;a>=c;a--)
#define no cout<<"NO"<<endl;
#define yes cout<<"YES"<<endl;
#define endl "\n"
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
//priority_queue<int,vector<int>,greater<int> >q;
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll> PII;
typedef pair<long double,long double> PDD;
 ll  INF = 0x3f3f3f3f;
//const ll LINF=LLONG_MAX;
// int get_len(int x1,int y1,int x2,int y2)
// {
//   return (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1);
// }
const ll N = 1e6+ 10;
const ll mod1 =998244353;
const ll mod2 =1e9+7;
const ll hash_num = 3e9+9;
ll n,m,ca, k,ans;
ll arr[N],brr[N],crr[N];
 ll h[N],ne[N],e[N],w[N],book[N],idx;
ll par[N];
struct node
{
    ll x,y,v;
}noda[N];

struct query
{
    double time;
    ll l,r;
}q[N];

bool cmp(query a,query b)
{
    return a.time<b.time;
}

double get_len(double x1,double y1,double x2,double y2)
{
    return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}

ll findd(ll x)
{
    if(par[x]!=x)par[x]=findd(par[x]);
    return par[x];
}

void init()
{
    rep(i,1,n){
        par[i]=i;
    }
}

void solve()
{
   cin >> n;
   idx=0;
   rep(i,1,n)
   {
    cin >> noda[i].x >> noda[i].y >> noda[i].v;
   }
   
   rep(i,1,n)
   {
    rep(j,i+1,n)
    {
        double t=get_len(noda[i].x,noda[i].y,noda[j].x,noda[j].y)/(noda[i].v+noda[j].v);
        q[idx].time = t;
        q[idx].l = i;
        q[idx++].r = j;
    }
   }

   cin >> m;
   rep(i,1,m)
   {
    cin >> q[idx].time;
    q[idx].time+=1e-7;
    q[idx].l=-1;
    q[idx++].r=i;
   }

   sort(q,q+idx,cmp);
   ll now=n;
   init();
    rep(i,0,idx-1)
   {
    if(q[i].l==-1)
    {
        arr[q[i].r]=max(now,ll(0));
    }else{
        ll fa=findd(q[i].l),fb=findd(q[i].r);
        if(fa!=fb)
        {
            par[fa]=fb;
            now--;
        }
    }
    }
     rep(i,1,m)
    {
        cout << arr[i]<<endl;
   }
}


int main()
{
   IOS;
   ll _;
    _=1;
    //get_eulers();
    //scanf("%lld",&_);
    //cin>>_;
    ca=1;
    while(_--)
    {
      solve(); 
      ca++;
    }    
    return 0;
}

到了这里,关于F-小富的idea(2023河南萌新联赛第(四)场:河南大学)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023河南萌新联赛第(二)场:河南工业大学 F - 最短距离

    时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 给定一棵包含 n n n 个顶点的树 T T T ,以及 m m m 个查询请求。每个查询包含三个参数 : x 、 y :x、y : x 、 y 和 k k k 。其中 x x x 和 y y y 是树中的两个顶点, k k k 是一个整数。对于

    2024年02月15日
    浏览(30)
  • L---泰拉瑞亚---2023河南萌新联赛第(三)场:郑州大学

    链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网   示例1 只有一把回旋镖,你可以先打两次伤害为3的,再打一次倾尽全力的,造成的伤害为5。总伤害为3+3+5=11,即可获得胜利。 示例2 你可以先把第一把倾尽全力打出去,造成30伤害。接下来用第二把连续攻击50次,

    2024年02月15日
    浏览(50)
  • K-01BFS(2023河南萌新联赛第(五)场:郑州轻工业大学)

    链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网   思路: 直接枚举这个图中的拐点 这个拐点是经过左右平移到上下平移或者上下平移到左右平移 假设这个点事左到右后然后再从下到上 左到右就相当于走了个最长上升子序列,然后再从下到上 从下到上的过程你可

    2024年02月13日
    浏览(40)
  • 2023 年第五届河南省 CCPC 大学生程序设计竞赛

    Problem A. 小水獭游河南 ∣ a ∣ ≤ ∣ Σ ∣ = 26 ,暴力枚举 a 判断 b 是否为是回文串即可,时间复杂度 O ( ∣ Σ ∣ ∣ s ∣ ) 。 |a| ≤ |Σ| = 26,暴力枚举 a 判断 b 是否为是回文串即可,时间复杂度 O(|Σ||s|)。 ∣ a ∣ ≤ ∣Σ∣ = 26 ,暴力枚举 a 判断 b 是否为是回文串即可,时间复

    2024年02月03日
    浏览(70)
  • 体验百度文心一言AI大模型生产生成河南大学、太原理工大学、哈尔滨工程大学和青岛大学简介

    河南大学(Henan University),简称“河大”,坐落于中国河南省,是河南省人民政府与中华人民共和国教育部共建高校,国家“双一流”建设高校,入选国家“111计划”、中西部高校基础能力建设工程、卓越医生教育培养计划、卓越法律人才教育培养计划、卓越教师培养计划、

    2024年02月11日
    浏览(40)
  • 基于微信河南郑州某大学评选投票小程序系统设计与实现 研究背景和意义、国内外现状

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年01月23日
    浏览(34)
  • 基于微信河南郑州某大学在线考试小程序系统设计与实现 研究背景和意义、国内外现状

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年01月23日
    浏览(49)
  • “卓见杯”郑州轻工业大学第十五届程序设计大赛暨河南省高校邀请赛题解

    C 最大的数 — 贪心 首先n个点有n条边必然有环,因此可以无限制的加数,又因为题目要求最大不超过1e9,所以答案一定是9位数 如果把形成的环缩点的话就会变成拓扑序列,首先要找到数字最大的那几个点,把他们入队,然后遍历他们的下一个点,找到下一个点里的最大值,

    2023年04月13日
    浏览(54)
  • 基于微信河南郑州某大学球馆预约预约小程序系统设计与实现 研究背景和意义、国内外现状

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年01月20日
    浏览(38)
  • 基于微信河南郑州某大学教室座位预约小程序系统设计与实现 研究背景和意义、国内外现状

     博主介绍 :黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程,免费 项目配有对应开发文档、开题报告、任务书、

    2024年01月19日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包