[UPC] 2021秋组队17

2023-11-05

A Quality-Adjusted Life-Year

签到

B Gwen’s Gift

C Forest for the Trees

gcd

const int maxn=5e5+7;
const int inf=0x3f3f3f3f;
ll n,m,t,p,q;
ll a[2],b[2];
inline ll gcd(ll a,ll b){   return b?gcd(b,a%b):a;  }
int main(){
    ll x1,x2,y1,y2;
    n=read();   m=read();
    x1=read();  y1=read();
    x2=read();  y2=read();
    t=gcd(n,m);
    if(t==1){
        printf("Yes");
        return 0;
    }
    p=n/t;  q=m/t;
    if(x1<=p&&y1<=q){
        if(x2>=n-p&&y2>=m-q){
            printf("Yes");
            return 0;
        }
        ll k=x2/p;
        if(x2%p!=0) k++;
        a[0]=k;
        k=y2/q;
        if(y2%q!=0) k++;
        k=min(k,a[0]);
        printf("No\n");
        printf("%lld %lld",p*k,q*k);    
    }
    else{
        printf("No\n");
        printf("%lld %lld",p,q);    
    }
}

D H-Index

签到 二分

vector<int> v;
bool check(int x) {
    int cnt = 0;
    for (int i = v.size() - 1;i >= 0;i--) {
        if (v[i] >= x) cnt++;
        else {
            break;
        }
    }
    return cnt >= x;
}
int main() {
    int n; scanf("%d", &n);
    for (int i = 1;i <= n;i++) {
        int x; scanf("%d", &x);
        v.push_back(x);
    }
    sort(v.begin(), v.end());
    int l = 0, r = 1e9;
    while (l < r) {
        int mid = l + r + 1 >> 1;
        if (check(mid)) l = mid;
        else r = mid - 1;
    }
    cout << l;
    return 0;
}

E Driving Lanes

dp
根据题意,我们知道在弯道的情况下,行走的路程是 s + c ∗ i s + c * i s+ci,其中 i i i表示的是处于第几道,当 c c c大于0的情况下,要使得 i i i尽可能地小,在 c c c小于0的情况下,要使得 i i i尽可能地大,按照贪心的情况,我们可以直接对应 1 1 1, m m m,所以开始可以考虑贪心,但是要注意在变道的过程中,在直线上行驶的过程中也会多产生一部分代价,所以说在这个过程中,不一定是两个极端的车道1,m更优,而可能是在中间某一个车道产生了最优解,所以这里就不能够在使用贪心来解决,这里我们应该考虑用 d p dp dp

ac_code:

int n,m,kk,r;
int a[2007];
int s[2007],c[2007];
int dp[307][307];
int main() {
	n = read,m = read,kk = read,r = read;
	r += kk;
	for(int i=1; i<=n; i++) a[i] = read;
	for(int i=1; i<n; i++) s[i]=read,c[i]=read;
	int ans = 0;
	Clear(dp,0);
	dp[0][1] = 1;
	for(int i=1; i<=n; i++) {
		for(int j=1; j<=m; j++) {
			if(dp[i-1][j] == 0) continue;
			int t = dp[i-1][j];
			for(int k=1; k<=m; k++) {
				if(a[i] >= abs(k - j) * kk) {
					if(!dp[i][k]) dp[i][k] = t + abs(k - j) * r + a[i] - abs(k - j) * kk + s[i] + c[i] * k;
					else dp[i][k] = min(dp[i][k],t + abs(k - j) * r + a[i] - abs(k - j) * kk + s[i] + c[i] * k);
//					debug(dp[i][k]);
				}
			}
		}
	}
	cout << dp[n][1] - 1 << endl;
	return 0;
}
/**
4 3
5 2
10
10
10
10
4 -1
4 -1
4 1
->51


4 3
5 2
10
10
10
10
10 -3
10 -3
10 1
->61
**/

F Treasure Spotting

计算几何
重判没了

G Neighborhood Watch

问有多少条道路经过了给出的地点,其中起点和终点可以相同

typedef long long ll;
int a[200010], R[200010];
int main() {
    int n, m; scanf("%d%d", &n, &m);
    for (int i = 1;i <= m;i++) {
        int x; scanf("%d", &x);
        a[x] = 1;
    }
    int idx = n + 1;
    for (int i = n;i >= 1;i--) {
        if (a[i] == 0) R[i] = idx;
        else idx = i;
    }
    ll res = 0;
    for (int i = 1;i <= n;i++) {
        if (a[i] == 1) res += n - i;
        else {
            if (R[i] != n + 1) {
                res += n - R[i] + 1;
            }
        }
    }
    res += m;
    printf("%lld", res);
    return 0;
}

H Small Schedule

重判没了

I Mr. Plow King

贪心

ll cal(ll n,ll m) {
    ll ret = 0;
    while(m) {
        ll x = (n - 1) * (n - 2) >> 1;
        if(m > x) {
            ret += x + 1;
            m = x << 1,-- n;
        } else ret += m,-- n,-- m;
    }
    return ret;
}
int main() {
    ll n = read,m = read;
    ll ret = 0;
    cout << cal(n,m) << endl;
    return 0;
}
/**
 
 
**/

J Rainbow Road Race

bfs
二进制
假如给每一个颜色一个标号为1<<x,其中x从1->6
这样一来,就可以转化为求最短路,终止的条件是经过的路径的颜色|(位运算或)之后,值为27-1,而在判断能不能走的时候也可以这样非常巧秒的判断能不能走
ac_code:

#define Clear(x,val) memset(x,val,sizeof x)
ll a[maxn << 1];
struct node {
    int v,nex,w;
    int col;
} e[maxn];
int cnt,head[maxn];
int get(char c) {
    if(c == 'R') return 1;
    if(c == 'O') return 2;
    if(c == 'Y') return 3;
    if(c == 'G') return 4;
    if(c == 'B') return 5;
    if(c == 'I') return 6;
    if(c == 'V') return 7;
}
bool vis[3007][307];
ll dis[3007][307];
void init() {
    cnt = 0;
    Clear(head,-1);
}
void add(int u,int v,int w,int col) {
    e[cnt].v = v;
    e[cnt].w = w;
    e[cnt].col = 1<<col;
    e[cnt].nex = head[u];
    head[u] = cnt ++;
}
struct Node {
    int to;
    ll w;
    int col;
    friend bool operator<(Node a,Node b) {
        return a.w > b.w;
    }
};
priority_queue<Node> que;
int tot[3007][3007];
int main() {
    int n = read,m = read;
    init();
    char col;
    for(int i=1; i<=m; i++) {
        int u = read,v = read,w = read;
        scanf("%c",&col);
        int c = get(col) - 1;
        add(u,v,w,c);
        add(v,u,w,c);
    }
    que.push({1,0,0});// node 1 the tent
    memset(dis,127 / 3,sizeof dis);
    ll ans = 0;
    int flag = 0;
    while(que.size()) {
        Node frt = que.top();
        que.pop();
        vis[frt.to][frt.col] = true;
        if(frt.col == (1 << 7) - 1 && frt.to == 1) {
            ans = frt.w;
            flag = 1;
            break;
        }
        int u = frt.to;
        for(int i=head[u]; ~i; i=e[i].nex) {
            int to = e[i].v;
            int w = e[i].w;
            int col = e[i].col;
            int jue = col | frt.col;
            if(vis[to][jue]) continue;// conted with node1
            if(w + frt.w < dis[to][jue]) {
                dis[to][jue] = w + frt.w;
                que.push({to,w + frt.w,jue});
            }
        }
    }
    assert(flag);
    cout << ans << endl;
    return 0;
}
/**
7 7
1 2 1 R
2 3 1 O
3 4 1 Y
4 5 1 G
5 6 1 B
6 7 1 I
1 7 1 V
 
 
8 7
1 2 1 R
1 3 1 O
1 4 1 Y
1 5 1 G
1 6 1 B
1 7 1 I
1 8 1 V
 
**/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[UPC] 2021秋组队17 的相关文章

  • C/C++实现高并发http服务器

    http高并发服务器实现 基础知识 html 全称为html markup language 超文本标记语言 http 全称hyper text transfer protocol 超文本传输协议 用于从万维网 WWW World Wide

随机推荐

  • 安装 docker

    docker 安装 首先要卸载旧版本 sudo yum remove docker docker client docker client latest docker common docker latest docker latest l
  • America's Drive-In Movie Theater Turns 78

    from http www putclub com html radio VOA Standard 2011 0603 30827 html Next Monday will mark a nostalgic anniversary in
  • Kubernetes二进制安装_初学实践

    一 部署准备 1 1 部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式 kubeadm Kubeadm是一个K8s部署工具 提供kubeadm init和kubeadm join 用于快速部署Kub
  • LinkedList基本操作

    LinkedList基本操作 LinkedList是Java中的一个双向链表实现 它提供了对链表的基本操作 在LinkedList中 每个元素都被包装在一个节点中 并且每个节点都包含指向前一个节点和后一个节点的引用 这种结构使得在Linke
  • unity的ui怎么显示在鼠标点击位置

    第一种方法 其实很简单 Input mousePosition本身就是屏幕坐标 二维 不能直接使用是因为 屏幕空间以像素定义 屏幕的左下为 0 0 右上是 pixelWidth pixelHeight n n或者说以屏幕的左下角为 0 0
  • Apache Beam 大数据处理一站式分析

    大数据技术与架构 点击右侧关注 大数据开发领域最强公众号 暴走大数据 点击右侧关注 暴走大数据 一 介绍 大数据处理其实经常被很多人低估 缺乏正确的处理体系 其实 如果没有高质量的数据处理流程 人工智能将只有人工而没有智能 现在的趋势是数据
  • matlab控制系统的幅频特性,[转载]matlab中控制系统的频域分析

    求取系统对数频率特性图 波特图 bode 求取系统奈奎斯特图 幅相曲线图或极坐标图 nyquist bode a b c d 自动绘制出系统的一组Bode图 它们是针对连续状态空间系统 a b c d 的每个输入的Bode图 其中频率范围由
  • 网页复制文字时弹出(唯有注册登录才能复制)的窗口的解决方法

    复制网页内容的时候总是弹出让你登录注册页面 如何解决 下面教你一个方法 此方法仅在能选中内容文字的情况下有效 第一步 按F12 在审查元素中选择Elements 右侧选择Event Listeners 如图 第二步 点开下面的copy的三角
  • Console口登录的三种认证方式介绍及演示

    本文实验采用的交换机是H3C模拟器 下载地址如下 http forum h3c com forum php mod viewthread tid 109740 highlight H3C E6 A8 A1 E6 8B 9F E5 99 A8
  • 自动化python的简单使用

    文章目录 环境配置 定位 1 Link text定位超链接 2 混合元素定位 3 Xpath定位 通常 4 css定位 事例 操作 1 实现输入框自动输入 2 清空输入框 3 上传文件 4 自动化执行javaScript方法 5 浏览器窗口
  • 永久开启或关闭某些iptables开机自启规则

    昨天早上突然发现我的xshell突然不能连接我的某一台虚拟机的linux了 于是就开启了我漫漫的找问题之路 第一反应是不是vmware的相关服务被关闭了 因为之前出现过vm死活连不上网的情况 果断去计算机服务里面看 果然没有开启 全部全部开
  • Access to XMLHttpRequest at xxxx from origin ‘null‘ has been blocked by CORS policy:

    使用前后端分离的方式创建web项目的时候出现问题 这是因为 ajax 请求的对应的域在本地的一个文件路径 比如在D盘的某个文件夹 这里存放的都是前端文件 但是对应的服务器是 localhost 的一个域名 虽然请求可以到达服务端 服务端也可
  • Win7下vs2013打开鼠标不能用,鼠标失灵

    以下是有效的解决方法 昨天重装了office2007出现这样的问题 如题 只要一进vs 鼠标变失灵 以下是网友提供的方法 Win7下vs2013打开鼠标不能用 解决办法 1 先打开vs2013 这时鼠标就用不了了 2 此时用 Ctrl Al
  • Android 退出整个应用程序解决方案

    1 通过广播 相信有过项目经验的同学都遇到过这样的问题 就是设计 退出 功能时可能会遇到有些界面不能关闭的问题 当然如果你的项目所有的界面都在打开另一个界面时被关闭就不存在这个问题了 但大多数情况下这样是很不合理的 因为每次要查看这个界面都
  • 利用matlab实现卷积实验报告,实验五 使用matlab实现卷积的运算

    实验五 使用matlab实现卷积的运算 一 实验目的 1 2 二 实验内容 学习MATLAB语言的编程方法及熟悉MATLAB指令 深刻理解卷积运算 利用离散卷积实现连续卷积运算 1 完成f1 t 与f2 t 两函数的卷积运算 其中 f1 t
  • 购买服务器及宝塔部署环境指南

    服务器购买宝塔部署环境指南 为什么程序员都需要一个自己的服务器 作为一个程序员 必须要发布自己的网站和项目 联系linux 自己的远程长裤 远程数据库 远程tomcat 搭建在服务器上 练习 Linux进行任意的环境部署操作 Window下
  • Spring Cloud的断路器模式是什么?如何使用断路器?Spring Cloud的配置管理是怎样实现的?

    1 Spring Cloud的断路器模式是什么 如何使用断路器 Spring Cloud的断路器模式是一种应对微服务架构中潜在故障的解决方案 在微服务架构中 不同的服务相互依赖 当某个服务出现故障或响应缓慢时 可能会导致级联故障 影响整个系
  • ELK技术栈实践(一)

    通常 日志被分散的储存不同的设备上 如果你管理数十上百台服务器 你还在使用依次登录每台机器的传统方法查阅日志 这样是不是感觉很繁琐和效率低下 当务之急我们使用集中化的日志管理 例如 开源的syslog 将所有服务器上的日志收集汇总 集中化管
  • C语言中低位存放,C语言 大端小端存储解析以及判断方法

    当我们在C语言中查看数据在内存中的存储时 我们经常会发现一个很奇怪的现象 什么现象呢 例如下面这段代码 int main int i 1 return 0 数据在内存中的存放方式似乎和我们想象的顺序不太一样 在我们的常规认知不一样 在我们的
  • [UPC] 2021秋组队17

    目录 A Quality Adjusted Life Year B Gwen s Gift C Forest for the Trees D H Index E Driving Lanes F Treasure Spotting G Nei