最勇敢的机器人

【题目描述】

Wind设计了很多机器人。但是它们都认为自己是最强的,于是,一场比赛开始了~

机器人们都想知道谁是最勇敢的,于是它们比赛搬运一些物品。

它们到了一个仓库,里面有n个物品,每个物品都有一个价值Pi和重量Wi,但是有些物品放在一起会爆炸,并且爆炸具有传递性。(a和b会爆炸、b和c会爆炸则a和c会爆炸)

机器人们可不想因此损失自己好不容易从Wind那里敲诈来的装备,于是它们想知道在能力范围内,它们最多可以拿多少价值的物品。

你能帮助它们吗?

【输入格式】

第1行为n,Wmax,k(0<=n,Wmax,k<=1000)

接下来n行,为每个物品的Pi,Wi(0<=Pi<=1000,1<=Wi<=10,均为整数)

再接下来k行,每行2个数字a,b表示a和b会发生爆炸

【输出格式】

输出1行,为最大可能价值

【样例输入】

3 10 1

100 1

200 5

10 5

1 2

【样例输出】

210

看到题面,我们就想到了背包问题,但这道题还有其它限制。

我们把放到一起会爆炸的放在同一个集合中,用并查集来维护,这样问题就转化为了集合背包问题。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<cstdlib>
 6 #include<algorithm>
 7 using namespace std;
 8 int n,w,k,len,v[1010],c[1010],f[1010],F[1010],s[1010],a[1010][1010];
 9 inline int read()
10 {
11     int x=0,f=1;  char ch=getchar();
12     while(!isdigit(ch))  {if(ch==‘-‘)  f=-1;  ch=getchar();}
13     while(isdigit(ch))  {x=x*10+ch-‘0‘;  ch=getchar();}
14     return x*f;
15 }
16 int find(int x)
17 {
18     return f[x]==x?x:f[x]=find(f[x]);
19 }
20 void work(int x)
21 {
22     for(int i=1;i<=len;i++)
23         if(find(x)==a[i][0])  {s[i]++;  a[i][s[i]]=x;  return;}
24     len++;
25     s[len]=1;
26     a[len][s[len]]=x;
27     a[len][0]=find(x);
28 }
29 int main()
30 {
31     n=read();  w=read();  k=read();
32     for(int i=1;i<=n;i++)
33         f[i]=i;
34     for(int i=1;i<=n;i++)
35         v[i]=read(),c[i]=read();
36     for(int i=1;i<=k;i++)
37     {
38         int x=read(),y=read();
39         x=find(x);  y=find(y);
40         if(x!=y)  f[x]=y;
41     }
42     for(int i=1;i<=n;i++)
43         work(i);
44     for(int i=1;i<=len;i++)
45         for(int j=w;j>=0;j--)
46             for(int k=1;k<=s[i];k++)
47                 if(j-c[a[i][k]]>=0)  F[j]=max(F[j],F[j-c[a[i][k]]]+v[a[i][k]]);
48     printf("%d",F[w]);
49     return 0;
50 }

时间: 2024-08-07 15:00:05

最勇敢的机器人的相关文章

vijos 1250 最勇敢的机器人 分组背包+并查集

P1250最勇敢的机器人 背景 Wind设计了很多机器人.但是它们都认为自己是最强的,于是,一场比赛开始了~ 描述 机器人们都想知道谁是最勇敢的,于是它们比赛搬运一些物品. 它们到了一个仓库,里面有n个物品,每个物品都有一个价值Pi和重量Wi,但是有些物品放在一起会爆炸,并且爆炸具有传递性.(a和b会爆炸.b和c会爆炸则a和c会爆炸) 机器人们可不想因此损失自己好不容易从Wind那里敲诈来的装备,于是它们想知道在能力范围内,它们最多可以拿多少价值的物品. 你能帮助它们吗? 格式 输入格式 每组测

vijos1250 最勇敢的机器人

背景 Wind设计了很多机器人.但是它们都认为自己是最强的,于是,一场比赛开始了~ 描述 机器人们都想知道谁是最勇敢的,于是它们比赛搬运一些物品. 它们到了一个仓库,里面有n个物品,每个物品都有一个价值Pi和重量Wi,但是有些物品放在一起会爆炸,并且爆炸具有传递性.(a和b会爆炸.b和c会爆炸则a和c会爆炸)机器人们可不想因此损失自己好不容易从Wind那里敲诈来的装备,于是它们想知道在能力范围内,它们最多可以拿多少价值的物品. 你能帮助它们吗? 格式 输入格式 每组测试数据第1行为n,Wmax,

大神刷题表

9月27日 后缀数组:[wikioi3160]最长公共子串 dp:NOIP2001统计单词个数 后缀自动机:[spoj1812]Longest Common Substring II [wikioi3160]最长公共子串 [spoj7258]Lexicographical Substring Search 扫描线+set:[poj2932]Coneology 扫描线+set+树上删边游戏:[FJOI2013]圆形游戏 结论:[bzoj3706][FJ2014集训]反色刷 最小环:[poj1734

这是一款借助chrome 插件的微信机器人

1.chrome kit微信机器人简介(github:https://github.com/LinuxForYQH/chrome_kit) 借助chrome 插件 js注入来实现消息的发送 chrome devtool api的调用来监听https请求 打开微信登录界面,在扫码登录前必须先打开toolbar(F12 或者 鼠标右键检查),如上所说因为借助了chrome devtool api所以需要打开toolbar才能执行相关dev域的js. 2.相关开发原理介绍 https://develo

机器人--推荐系统(1)

430的目标是完成机器人的推荐系统,提高机器人回答问题的准确率,关于过程碰到的问题以及解决方案与大家分享一下,(请轻喷!) 那么这个推荐系统到底应该怎么做呢? 最开始的第一个思路是 根据用户 进入到ERP的模块 推荐该模块下的相关问题.其实就是根据用户的轨迹来推荐问题,这是一个思路但是不太完整.因为很有可能用户就从ERP的桌面就进入了机器人,但他实际要咨询的是销售系统的相关知识,那么此时的推荐就不太满足用户的咨询需求. 因此参考一些业界其他公司的做法,可以基于内容的协同过滤(Collaborat

ROS turtlebot_follower :让机器人跟随我们移动

ROS turtlebot_follower 学习 首先在catkin_ws/src目录下载源码,地址:https://github.com/turtlebot/turtlebot_apps.git 了解代码见注释(其中有些地方我也不是很明白) follower.cpp #include <ros/ros.h> #include <pluginlib/class_list_macros.h> #include <nodelet/nodelet.h> #include &

CSU 1112: 机器人的指令【模拟题】

1112: 机器人的指令 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 1858  Solved: 682 [Submit][Status][Web Board] Description 数轴原点有一个机器人.该机器人将执行一系列指令,你的任务是预测所有指令执行完毕之后它的位置. ·LEFT:往左移动一个单位 ·RIGHT: 往右移动一个单位 ·SAME AS i: 和第i 条执行相同的动作.输入保证i 是一个正整数,且不超过之前执行指令数 In

中国机器人,请慢些走

前不久,中国最高领导人说:我们不仅要把机器人水平提高上去,而且要尽可能多地占领市场.这句话的方向准确无误,同时,也代表着大大对产业的殷切希望,于是,机器人产业在中国迅速升温,批地.拨款.建工业园区,相关部门好像吃了一粒巨大的伟哥,激情四射,满世界地去咨询,美国佛罗里达大学先进电机中心对这个现象感受颇深,负责人告诉记者:最近几个月他接到的中国企业技术咨询量,是之前的好几倍.中国创业者向来癫狂,之所以容易失去理性通常有两个原因,一是看到别人赚钱了,另一个则是领导说话了,本质上也是钱的问题,毕竟,领导

微信接入机器人实现对别人消息和群at消息的自动回复

微信接入机器人实现对别人消息和群at消息的自动回复 有时候,我们想让我们的微信号对别人发出的各种消息做出回复.我们可以通过接入图灵机器人的方式实现. IDLE编写py文件并保存,命名为wxbot. #!/usr/bin/env python # coding: utf-8 import os import sys import webbrowser import pyqrcode import requests import json import xml.dom.minidom import