2023杭电多校(一)

news2024/12/1 7:58:26

1002 City Upgrading

类似题及其题解

City Upgrading

Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 524288/131072 K (Java/Others)
Total Submission(s): 306    Accepted Submission(s): 78


 

Problem Description
The city where crazyzhk resides is structured as a tree. On a certain day, the city's network needs to be upgraded. To achieve this goal, routers need to be deployed. Each router covers the node it is placed on and its neighboring nodes. There is a cost ai associated with placing a router at each node. The question is: How can the routers be deployed at minimum cost to ensure that every node is covered?
 

Input
The input consists of multiple test cases. The first line contains a single integer t(1≤t≤1000) — the number of test cases. Description of the test cases follows.

The first line of each test case contains two integers n (2≤n≤105) — the number of the vertices in the given tree.

The second line of each case are n integers ai(1≤ai≤105),denoting the cost of setting up a router at each node.

Each of the next n−1 lines contains two integers u and v (1≤u,v≤n, u≠v) meaning that there is an edge between vertices u and v in the tree.

The data guarantees that the sum of n will not exceed 2⋅105
 

Output
For each test case print a single integer ——the minimum cost to ensure that every node is covered
 

Sample Input
 
 
2 7 13 20 1 20 6 9 8 1 2 1 3 2 4 2 5 3 6 5 7 4 1 17 13 4 1 2 1 3 3 4
 

Sample Output
 
 
27 5

AC: 根据测试用例,最后一个测试用例的值爆int,所以用long long

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector> 
#include<map>
#include<string.h>
#include<stdio.h>
#include<cstdio>
using namespace std;

const int N = 1e5 + 5;

vector<int> v[N];

int val[N];
long long dp[N][3];
//dp[i][0] 自己覆盖自己
//dp[i][1] 儿子覆盖自己
//dp[i][2] 父亲覆盖自己

inline int read()
{
    int p = 0, f = 1; char c = getchar();
    while (c < '0' || c>'9') { if (c == '-')f = -1; c = getchar(); }
    while (c >= '0' && c <= '9') { p = p * 10 + c - '0'; c = getchar(); }
    return f * p;
}

void dfs(int u, int f)
{
    dp[u][0] = val[u]; dp[u][2] = 0; dp[u][1] = 0;
    long long tep;
    int ct = 0;
    long long minsub = 1e9;
    for (vector<int>::iterator it = v[u].begin(); it != v[u].end(); it++)
    {
        int to = *it;
        if (*it == f) continue;
        dfs(to, u);
        tep = min(dp[to][0], dp[to][1]);
        dp[u][0] += min(tep, dp[to][2]);
        if (dp[to][0] < dp[to][1])  ct++;
        else minsub = min(minsub, dp[to][0] - dp[to][1]);
        dp[u][2] += tep;
        dp[u][1] += tep;
    }
    if (!ct) dp[u][1] += minsub;
}


int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    //freopen("D:\\1002.txt", "r", stdin);
	int t;
    t = read();
    while (t--)
    {
        int n;
        n = read();
        for (int i = 1; i <= n; i++)
        {
            val[i]=read();
            v[i].clear();
        }
        int x, y;
        for (int i = 1; i < n; i++)
        {
            x = read();
            y = read();
            v[x].push_back(y);
            v[y].push_back(x);
        }
        dfs(1, 0);
        cout << min(dp[1][0], dp[1][1])<<endl;

    }



}

1005 Cyclically Isomorphic

Cyclically Isomorphic

Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)
Total Submission(s): 581    Accepted Submission(s): 129


 

Problem Description
If there exists an integer k such that string S becomes equal to string T after being **cyclically right-shifted** by k positions, then the strings S and T are said to be **cyclically right-shifted**.

Now, given n strings of length m consisting of **lowercase letters** , there are a total of Q queries. Each query provides two positive integers x and y. If the strings sx and sy are **cyclically right-shifted** , output 'Yes'; otherwise, output 'No'.
 

Input
The input consists of multiple test cases. The first line contains a single integer T(1≤T≤5) — the number of test cases. Description of the test cases follows.

The first line of each test case contains two integers n and m (1≤n×m≤105)— the number of the strings and the length of strings.

Each of the next n lines contains a string of lowercase letters si。

The next line contains a positive integer Q (1≤Q≤105)。

Each of the next Q lines contains two integers x,y (1≤x,y≤n) asks whether the string sx and the string sy are cyclic isomorphic.  
 

Output
For each test case, output Q lines. Each line should contain a string indicating whether the current query strings sx and sy are cyclically isomorphic. If they are cyclically isomorphic, output 'Yes'; otherwise, output 'No'.
 

Sample Input
 
 
2 2 2 ab ba 1 1 2 4 3 aab baa bba bab 6 1 2 1 3 1 4 2 3 2 4 3 4
 

Sample Output
 
 
Yes Yes No No No No Yes
 

题解:用字符串的最小表示法表示各个字符串存在Map里,然后查询即可

#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector> 
#include<map>
#include<string.h>
#include<stdio.h>
#include<cstdio>
using namespace std;
int n, m;
map<int, string> mp;
string minexpression(string s,int le)
{
	string st = s+s;
	string tp;
	for (int i = 0; i < le; i++)
	{
		tp = st.substr(i,  le);
		//cout<<"iii: " << tp << endl;
		if (s < tp) s = tp;
	}
	return s;
}
	string s1,s2;

int main()
{
//	freopen("D:\\1.txt", "r", stdin);
 
 ios::sync_with_stdio(false);
 cin.tie(0);
 cout.tie(0);
 
	int t;
	cin >> t;
	string sp;
	while (t--)
	{
		cin >> n >> m;
		for (int i = 1; i <= n; i++)
		{
			cin >> sp;
			mp[i] = minexpression(sp, m);
			//cout << "i: " << i << " " << sp << "  " << mp[i] << endl;
		}
		int q;
		cin >> q;
		int a, b;
	
		while (q--)
		{
			cin >> a >> b;
			if (mp[a] == mp[b])
			{
				//s1+="Yes";
			  cout << "Yes" << endl;
				}
			else
			
			{
			 //s1+="No";
			  cout << "No" << endl;
		}
		}
	}

}

1009 Assertion

Assertion

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 185    Accepted Submission(s): 59


 

Problem Description
Alice boldly asserts to you that if you divide m items into n groups, there will definitely be one group with a quantity of items greater than or equal to d.

Due to Alice's excessive self-confidence, she is unaware that some of her assertions are actually incorrect. Your task is to determine whether Alice's assertion is correct. If Alice's assertion is true, output 'Yes'; otherwise, output 'No'.
 

Input
The input consists of multiple test cases. The first line contains a single integer T(1≤T≤105) — the number of test cases. Description of the test cases follows.

The first line of each test case contains three integers n,m,d (2≤m≤109,1≤n<m,0≤d≤109),n and m represent the number of groups and the quantity of items, respectively, in Alice's assertion. The symbol d signifies Alice's claim that there will always be at least one group with a quantity of items greater than or equal to d.
 

Output
For each set of data, output a string. If Alice's assertion is correct, output 'Yes'; otherwise, output 'No'.
 

Sample Input
 
 
3 1 2 1 2 3 2 3 10 4
 

Sample Output
 
 
Yes Yes Yes

题解:鸽巢原理的应用,至少有一个堆有\frac{\sqsubset m-1\sqsupset}{n}+1个元素。

#include <bits/stdc++.h>
 
using namespace std;
  
int main() {
	cin.tie(nullptr)->sync_with_stdio(0);
 
	int T;
	cin >> T;
 
	while (T--) {
		int n , m , x;
		cin >> n >> m >> x;
 
		int d = (m - 1) / n + 1;
		if (x <= d) {
			cout << "Yes\n";
		} else {
			cout << "No\n";
		}
	}
	return 0;
}

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

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

相关文章

分布式事务几种实现方案

前言 分布式事务&#xff1f; 分布式事务是指涉及多个参与者的事务&#xff0c;这些参与者可能分布在不同的计算机、进程或者网络中。分布式事务需要保证ACID属性&#xff0c;即原子性、一致性、隔离性和持久性 解释 现在我们接触的系统基本上都是分布式系统&#xff0c;并且每…

计算几何(二维),定理及证明(持续更新中..)

注&#xff1a;定理来自这篇博客&#xff0c;本文注重证明 向量基本运算 加法 向量 a ⃗ ( x 1 , y 1 ) , b ⃗ ( x 2 , y 2 ) \vec{a}\left(x_1,y_1\right),\vec{b}\left(x_2,y_2\right) a (x1​,y1​),b (x2​,y2​) 则 a ⃗ b ⃗ ( x 1 x 2 , y 1 y 2 ) \vec{a}\…

P7 第二章 电阻电路的等效变换

1、等效变换应用举例 化简套路&#xff1a; 电压源与其串联的电阻&#xff0c;可以等效为电流源并联电阻&#xff0c;然后电流源就可以拿去合并电路中的&#xff0c;与之并联的电流&#xff0c;电阻则可以拿去合并与之并联的电阻。 公式法&#xff1a; 就是根据端的电压与端的…

第一节 C++ 变量

文章目录 1. Visual Studio Community 安装1.1. Visual Studio 介绍1.2. Visual Studio的安装1.3 Visual Studio创建与使用1.3.1 创建一个工程项目1.3.2 新建一个C文件1.3.3 编写执行文件 2. Dev-C 安装(初学者建议使用)2.1 Dev-C 介绍2.2 Dev-C 安装2.3 Dev-C 快捷键使用 3. 认…

数学建模常用模型(九) :偏最小二乘回归分析

数学建模常用模型&#xff08;九&#xff09; &#xff1a;偏最小二乘回归分析 偏最小二乘回归&#xff08;Partial Least Squares Regression&#xff0c;PLS Regression&#xff09;是一种常用的统计建模方法&#xff0c;用于解决多元线性回归中自变量间高度相关的问题。在偏…

【java】三大容器类(List、Set、Map)的常用实现类的特点

三大容器类&#xff08;List、Set、Map&#xff09;的常用实现类的特点 简介 本文总结三大容器类&#xff08;List、Set、Map&#xff09;的常用实现类&#xff08;ArrayList、Vector、LinkedList、HashSet、HashMap、HashTable&#xff09;的特点 一、List部分 1、ArrayLi…

C# DlibDotNet 人脸识别、人脸68特征点识别、人脸5特征点识别、人脸对齐,三角剖分,人脸特征比对

人脸识别 人脸68特征点识别 人脸5特征点识别 人脸对齐 三角剖分 人脸特征比对 项目 VS2022.net4.8OpenCvSharp4DlibDotNet Demo下载 代码 using DlibDotNet.Extensions; using DlibDotNet; using System; using System.Collections.Generic; using System.ComponentModel; …

学堂在线数据结构(上)(2023春)邓俊辉 课后作业错题整理

The reverse number of a sequence is defined as the total number of reversed pairs in the sequence, and the total number of element comparisons performed by the insertion sort in the list of size n is: 一个序列的逆序数定义为该序列中的逆序对总数&#xff0c;…

transformer Position Embedding

这是最近一段很棒的 Youtube 视频&#xff0c;它深入介绍了位置嵌入&#xff0c;并带有精美的动画&#xff1a; Transformer 神经网络视觉指南 -&#xff08;第 1 部分&#xff09;位置嵌入 让我们尝试理解计算位置嵌入的公式的“sin”部分&#xff1a; 这里“pos”指的是“单词…

自定义view(一)----自定义TextView

自定义view也算是Android的一大难点&#xff0c;里面涉及到很多值得学习的地方&#xff0c;我会在接下来写一系列文章去介绍它&#xff0c;本篇文章以自定义一个TextView为例。 View的构造方法 自定义view之前我们先了解view的四个构造方法&#xff0c;自定义view无非就是新建一…

R语言逻辑回归(Logistic Regression)、回归决策树、随机森林信用卡违约分析信贷数据集...

原文链接&#xff1a;http://tecdat.cn/?p23344 本文中我们介绍了决策树和随机森林的概念&#xff0c;并在R语言中用逻辑回归、回归决策树、随机森林进行信用卡违约数据分析&#xff08;查看文末了解数据获取方式&#xff09;&#xff08;点击文末“阅读原文”获取完整代码数据…

MVSNet、PatchMatchNet中的 eval.sh文件超参数解释

下面以PatchMatchNet为例, 打开PatchMatchNet程序中的 eavl.sh文件, 可以看到文件设置了数据集路径,及超参数设置(超参数,也可以不写,会使用默认参数) 上图中各参数意思如下: 执行文件python eval.py; 数据集加载方方式使用dtu_yao_eval ; batch_size=1 ,视图数N设…

【C++】命名空间 ( namespace )

目录搁这 什么是命名空间命名空间的作用如何定义命名空间命名空间的种类如何使用命名空间内的成员作用域限定符命名空间展开命名空间全部展开命名空间部分展开 总结 什么是命名空间 命名空间是一种用来避免命名冲突的机制&#xff0c;它可以将一段代码的名称隔离开&#xff0c…

中国地图使用心得

中国地图使用心得 注册地图是注册在echarts对象上而非 自己构建的echarts dom上、。 请求本地json文件 ​ vue项目的public打包时不会动&#xff0c;所以线上和本地地址直接指向了public同级目录&#xff0c;请求时直接相对路径 绘制中国地图时&#xff0c;如何在各个省会地方…

「深度学习之优化算法」(十三)蝙蝠算法

1. 蝙蝠算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   蝙蝠算法(Bat Algorithm)是受蝙蝠回声定位的特性启发而提出的新兴算法,提出时间是2010年,虽然距今(2020)有近10年,但与其它的经典算法相比仍算一个新算法。算法也已有一定规模的研究和应用,但仍…

【LLM系列之LLaMA2】LLaMA 2技术细节详细介绍!

Llama 2 发布&#xff01; Meta 刚刚发布了 LLaMa 2&#xff0c;它是 LLaMA 的下一代版本&#xff0c;具有商业友好的许可证。&#x1f92f;&#x1f60d; LLaMA 2 有 3 种不同的尺寸&#xff1a;7B、13B 和 70B。 7B & 13B 使用与 LLaMA 1 相同的架构&#xff0c;并且是商…

年CTF—初五

0x00 前言 CTF 加解密合集&#xff1a;CTF 加解密合集 0x01 题目 神秘人送来了半个世纪前的无线电信号&#xff0c;但是只能分别出以下的密文&#xff1a; YDHML_QKA_PDK_HVD_NAHI_OQ_K_GR 据说上面的无线电信号代表的是中文&#xff0c;由红岸基地发往半人马星系 半个世纪过…

数据容器入门(set)

集合的定义&#xff1a; 语法&#xff1a;变量名称 {元素&#xff0c;元素&#xff0c;元素.........元素} 定义空集合&#xff1a; 变量名称 set&#xff08;&#xff09; set {“abc”&#xff0c;123&#xff0c;“def”} 集合的特点&#xff1a; 可以容纳多个数据可以容…

数据结构01-线性结构-链表栈队列-栈篇

文章目录 参考&#xff1a;总结大纲要求线性结构-栈回文匹配小猫钓鱼的故事 参考&#xff1a; 线性结构-栈 总结 本系列为C数据结构系列&#xff0c;会介绍 线性结构&#xff0c;简单树&#xff0c;特殊树&#xff0c;简单图等。本文为线性结构部分。 大纲要求 线性结构 【…