1008.   Park Visit   
       题目大意:给你n个城市,这n个城市之间共有n-1条道路,每条道路的长度均为1,并且这n个城市是相互可达的。再给你一个数k,让你计算:访问这n个城市中的k个城市最少需要走多少距离?
       解题思路:这是一道典型的求树的直径的问题。先求出树的直径 r(我建造的树当中,根节点的深度为1 ),然后推出:如果k <= r , 则最短路程 = k - 1 ; 否则,最短距离 = k - 1 + (r - k)* 2 。 
       请看代码:
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cstdio>
#include<queue>
using namespace std ;
const int MAXN = 1e5 + 5 ;
struct Node
{int adj ;Node * next ;
};
Node* vert[MAXN] ;
int vis[MAXN] ;
int dis[MAXN] ;  // 记录数中各个节点的深度
int n , m ;
int maxr ;  // 记录树的直径
queue<int> q ;
int bfs(int start)
{memset(vis , 0 , sizeof(vis)) ;memset(dis , 0 , sizeof(dis)) ;int ans = start ;while (!q.empty()){q.pop() ;}q.push(start) ;dis[start] = 1 ;maxr = -1 ;int tmp ;Node * p ;while (!q.empty()){tmp = q.front() ;q.pop() ;vis[tmp] = 1 ;p = vert[tmp] ;while (p != NULL){int tp2 = p -> adj ;if(!vis[tp2]){vis[tp2] = 1 ;dis[tp2] = dis[tmp] + 1 ;if(maxr < dis[tp2]){maxr= dis[tp2] ;ans = tp2 ;}q.push(tp2) ;}p = p -> next ;}}return ans ; // 返回树的直径的端点序号
}
int zj() // 求树的直径,两次bfs
{int zj1 = bfs(1) ;int zj2 = bfs(zj1) ;return maxr ;
}
int main()
{int t ;scanf("%d" , &t) ;while (t --){scanf("%d%d" , &n , &m) ;memset(vert , 0 , sizeof(vert)) ;int i ;for(i = 0 ; i < n - 1 ; i ++){int a , b ;scanf("%d%d" , &a , &b) ;Node * p ;p = new Node ;p -> adj = b ;p -> next = vert[a] ;vert[a] = p ;p = new Node ;p -> adj = a ;p -> next = vert[b] ;vert[b] = p ;}int r = zj() ;for(i = 1 ; i <= m ; i ++){int k ;scanf("%d" , &k) ;if(k <= r){printf("%d\n" , k - 1) ;}else{printf("%d\n" , r - 1 + (k - r) * 2) ;}}}return 0 ;
}
1010.    I-number
       题目大意:给你一个数X, 让你求出满足如下条件的整数Y的最小值 :1、Y > X     2 、Y的所有数位上的数字之和是10 的整数倍。
       解题思路:这个题不能简单地直接用 long long 做 , 因为题目中说的是X的 “位数” 不超过 10 ^ 5  。我是用数组直接模拟加暴力A掉的 。
     下面请看代码:
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
using namespace std ;
const int MAXN = 1e6 + 7 ;
char s[MAXN] ;
char s2[MAXN * 10] ;
void print(char A[] , int len) // 输出数组
{int i ;for(i = len - 1 ; i >= 0 ; i --){printf("%c" , A[i]) ;}printf("\n") ;
}
void tiao(char A[] , int &len)  // 调整数组 是 原来的数组代表的数值 + 1
{int i ;for(i = 0 ; ; i ++){if(A[i] < '9'){A[i] = A[i] + 1 ;break ;}else if(A[i] == '9'){A[i] = '0' ;if(i == len - 1){len ++ ;A[i + 1] = '0' ;}}}
}
int main()
{int t ;scanf("%d" , &t) ;while (t --){memset(s , 0 ,sizeof(s)) ;scanf("%s" , s) ;int i ;int len = strlen(s) ;for(i = len - 1  ; i >= 0 ; i -- ){s2[len - i - 1] = s[i] ;  // 把原数组s逆向存入数组s2中,// 这样对后面调整数组比较有利}int sum ;tiao(s2 , len) ; // 先调一下数组,因为 Y > Xwhile (1){sum = 0 ;int j ;for(j = 0 ; j < len ; j ++){sum = sum + s2[j] - '0' ;}if(sum % 10 == 0){print(s2 , len) ;break ;}elsetiao(s2 , len) ;}}return 0 ;
}

2013多校第一场 - from lanshui_Yang相关推荐

  1. 2019牛客多校第一场

    2019牛客多校第一场 题号 题目 知识点 A Monotonic Matrix B Symmetric Matrix C Fluorescent 2 D Two Graphs E Removal F ...

  2. 2019年杭电多校第一场 1001题blank(DP)HDU6578

    2019年杭电多校第一场 1001题blank(DP)HDU6578 解决思路,开一个DP数组来存储0 1 2 3四个字符最后出现的位置,并且在DP中已经==排好序==. DP开四维,DP[i][j] ...

  3. 2019HDU多校第一场1001 BLANK (DP)(HDU6578)

    2019HDU多校第一场1001 BLANK (DP) 题意:构造一个长度为n(n<=10)的序列,其中的值域为{0,1,2,3}存在m个限制条件,表示为 l r x意义为[L,R]区间里最多能 ...

  4. python字符串去重及排序 牛客_2018牛客多校第一场 D.Two Graphs

    题意: n个点,m1条边的图E1,n个点,m2条边的图E2.求图E2有多少子图跟图E1同构. 题解: 用STL的全排列函数next_permutation()枚举映射.对于每一种映射枚举每一条边判断合 ...

  5. 2020 牛客多校第一场

    2020 牛客多校第一场 A. B-Suffix Array 后缀数组的思想:倍增+桶排序的方式找出一串连续序列后缀的大小.虽说正常使用的时候都是字典序,但是只要修改排序方式,也能够达到一个类似的&q ...

  6. 【2019多校第一场补题 / HDU6578】2019多校第一场A题1001Blank——dp

    HDU6578链接 题意 有一串字符串,仅由 {0,1,2,3}\{0, 1, 2, 3\}{0,1,2,3} 组成,长度为 nnn,同时满足 mmm 个条件.每个条件由三个整数组成:l.r.xl.r ...

  7. 【多校训练】2021牛客多校第一场

    [前言] 组队训练的第一场比赛,感觉这场出题十分阴间,后面几个乱搞题根本不会.jpg 赛时只过了5题,rk123,学校参加5/8. A. Alice and Bob [题意] 两人博弈,每次一个人从一 ...

  8. 杭电多校第一场第三题 Backpack(异或dp+bitset)

    问题描述 爱丽丝有一个容量背包m她现在想用一些物品填充! 爱丽丝有n项目,每个项目都有一个卷v我和值w我. 是否可以从n个项目中选择多个项目,以使背包完全装满(即体积的总和等于背包容量)?如果是这样, ...

  9. [2019HDU多校第一场][HDU 6578][A. Blank]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6578 题目大意:长度为\(n\)的数组要求分别填入\(\{0,1,2,3\}\)四个数中的任意一个,有 ...

最新文章

  1. 手把手教你使用Python生成图灵智能小伙伴
  2. mysql实现知识图谱_基于电影知识图谱的智能问答系统学习记录
  3. SpringSecurity-1-UserDetails接口
  4. 关于”误人子弟!垃圾培训该当何罪“一文
  5. php curl 伪造IP来源的代码分享
  6. Cocos2d-x层(Layer)详解
  7. Python 字典或JSON模拟数据库的增删改查
  8. c语言测试1到3章,c语言谭浩强第1章至第3章测试试题
  9. AIDE手机编程初级教程(零基础向)导航
  10. 解放双手,CSDN博客支持公众号自动同步!
  11. ubuntu下使用pip卸载包时出现Cannot uninstall scipy
  12. 分享CrystalDiskInfo8.2.4与CrystalDiskMark6.0.2个性版本下载
  13. 导出excel poi
  14. 分布式数字身份 —— 从创建一个Weidentity数字身份开始
  15. JavaScript专精系列(6)——FileReader 文件读取
  16. 移动端真机调试工具--weinre
  17. 三方线上美食城|基于Springboot的三方线上美食商城系统
  18. 入门Java系列(一)——入门与学习方式
  19. 大数据毕业设计可视化大屏前后端项目分享
  20. 使用python中openpyxl模块操作excel文件,计算单元格分子式的相对分子质量(二)

热门文章

  1. 网站域名备案工信部短信核验流程讲解
  2. js 银行卡每四位加空格正则表达式
  3. 中等计算机的配置,一份中等计算机配转置帐单
  4. IPTV系统整体架构
  5. 万字长文|如何直观解释卷积神经网络的工作原理?
  6. 腾讯企业邮箱与QQ个人邮箱的区别
  7. Uni-app 小程序 APP 的广告变现之路:沉浸式视频流广告
  8. IEEE-conference会议模板运行和文献管理
  9. audio驱动之cpu_dai
  10. 【学习日记2023.6.9】之 SpringCloud入门(认识微服务_服务拆分和远程调用RestTemplate_Eureka注册中心_Ribbon负载均衡_Nacos注册中心)