A The Empire Age
1月28日
Description
帝国时代3是一款十分刺激的RTS游戏。你需要控制自己的一块殖民地,发展殖民地的经济和军事,最终打败其他殖民地。小L是这个游戏的狂热爱好者。一次小L打算打AI试试身手。
小L发展了几分钟,自己的殖民地人口便突破了30,然而小L发现大事不好了:
小L还处在不能建造军事单位的“发现时代”,然而敌人早已经到了“殖民时代”,发展起了一支雄厚的殖民地军,小L的殖民地受攻击了却没有一个正规的军事单位用来防御!不要认为这是小L 的技术问题,实际上AI还停留在以jg斗争为纲的落后理念上,而小L 早就以经济为第一要务了。
小L在之前已经在自己殖民地的外部,拉起了许多围墙。
帝国时代3里的围墙如图所示。
图的地址太长了不引用了
每一道围墙,总是连接着两个围墙连接处 (以下简称“连接处”)。
图的地址太长了不引用了
现在小L有n个连接处,m道围墙。
小L虽然没兵,但是他的智商比AI不知道高到那里去了,因此,只要每个连接处至少连接着k道围墙,小L就一定能顶住这波攻击。
小L可以任意加围墙,每道围墙可以连接两个已有的连接处。
连接处是不能连接自己的,但是这里有一些规则与原帝国时代3的设定不同,两个连接处之间可以连接多个围墙,连接处初始时可能不连任何围墙,围墙之间也可以相交。
小L想知道,自己至少要多加多少道围墙}才能满足每个连接处至少连接着k道围墙?
Input
第一行三个整数n, m, k,表示连接处个数、围墙个数以及每个连接处至少要连接的围墙个数,连接处被编号为1到n}。
接下来m行,每行两个正整数x, y,表示这个围墙连接编号为x的连接处和编号为y的连接处。
Output
输出一行一个整数,表示至少要加的围墙的条数。
Sample Input
输入1:
2 0 1
输入2:
5 4 2
1 2
2 5
4 3
3 1
输入3:
4 3 2
1 2
2 3
1 2
输入4:
5 11 7
1 3
4 2
1 5
4 2
2 5
1 3
4 1
2 3
4 1
5 1
1 5
Sample Output
输出1:
1
样例1解释:初始时有两个连接处,题目中要求至少每个连接处要连1个围墙,我们加一个围墙连接这两个连接处即可。
输出2:
1
样例2解释:连接编号为5的和编号为4的连接处即可。
输出3:
2
样例3解释:编号为4的连接处没有连接任何围墙,编号为3的连接处还需要一条。连接编号为4的和编号为3的连接处之后,编号为4的连接处与另外三个连接处中任意一个连一个围墙即可,注意连接处是不能自己和自己连接的。
输出4:
7
Data Constraint
对于60%的数据,n × ans ≤ 10000000,ans表示最终的答案。
对于前100%的数据,n, m, k ≤ 100000,n ≥ 2, m, k ≥ 0, x ≠ y, 1 ≤ x, y ≤ n。
Solution
- 【我的解法】
看完了题后愣了几秒,然后打了个小根堆。。。本来是只有60分的,但是出题人过于友善,只卡了我一个点,拿了90分。
#include<cstdio>
#include<queue>
#pragma GCC optimize(2)
#define ll long long
using namespace std;
int n,m,k;
ll cnt;
ll a[100001];
priority_queue<ll,vector<ll>,greater<ll> > que;
inline int read()
{
int x=0; char c=getchar();
while (c<'0' || c>'9') c=getchar();
while (c>='0' && c<='9')
{
x=(x<<1)+(x<<3)+(c^48);
c=getchar();
}
return x;
}
int main()
{
freopen("A.in","r",stdin);
n=read();m=read();k=read();
for(int i=1,x,y;i<=m;i++)
{
x=read();y=read();
a[x]++;a[y]++;
}
for(int i=1;i<=n;i++)
que.push(a[i]);
while(!que.empty())
{
a[1]=que.top();que.pop();
if(a[1]>=k) break;
a[2]=que.top();que.pop();
a[1]++;a[2]++;
cnt++;
que.push(a[1]);
que.push(a[2]);
}
printf("%lld",cnt);
fclose(stdin);
return 0;
}
- 【正解】
直接统计出每个点还需要多少个度数,如果需要度数最多的点大于其他度数的总和,那么答案就是这个点的度数。否则就是所有点需要的度数的总和除以二向上取整。
复杂度就是读入复杂度。
#include<cstdio>
#include<cmath>
#include<algorithm>
#pragma GCC optimize(2)
#define ll long long
using namespace std;
int n,m,k;
ll cnt,maxn;
ll a[100001];
int main()
{
scanf("%d%d%d",&n,&m,&k);
for(int i=1,x,y;i<=m;i++)
{
scanf("%d%d",&x,&y);
a[x]++;a[y]++;
}
for(int i=1;i<=n;i++)
{
if(k<a[i]) continue;
a[i]=k-a[i];
maxn=max(maxn,a[i]);
cnt+=a[i];
}
if(ceil(cnt/2.0)<maxn)
{
printf("%lld",maxn);
return 0;
}
printf("%lld",(cnt+1)/2);
return 0;
}
A The Empire Age的更多相关文章
- 根据对象的某一属性进行排序的js代码(如:name,age)
var data = [{ name: "jiang", age: 22 }, { name: "AAAAAAAAAAAAAA", age: 21 }, { n ...
- 关于一道数据库例题的解析。为什么σ age>22 (πS_ID,SCORE (SC) ) 选项是错的?
本人大二学子.近段时间在做数据库复习题的时候遇到一道题,如下. 有关系SC(S_ID,C_ID,AGE,SCORE),查找年龄大于22岁的学生的学号和分数,正确的关系代数表达式是( ) . ⅰ. πS ...
- Java-集合-第三题 有如下Student 对象, private String name; private int age; private int score; private String classNum; 其中,classNum 表示学生的班号,例如“class05”。 有如下List List list = new ArrayList(); l
第三题 有如下Student 对象, private String name; private int age; private int score; private String classNum; ...
- 第三题 有如下Student 对象, private String name; private int age; private int score; private String classNum; 其中,classNum 表示学生的班号,例如“class05”。 有如下List List list = new ArrayList();
list.add(new Student("Tom", 18, 100, "class05")); list.add(new Student("Jer ...
- 编写Java应用程序。首先,定义描述学生的类——Student,包括学号(int)、 姓名(String)、年龄(int)等属性;二个方法:Student(int stuNo,String name,int age) 用于对对象的初始化,outPut()用于输出学生信息。其次,再定义一个主类—— TestClass,在主类的main方法中创建多个Student类的对象,使用这些对象来测 试Stud
package zuoye; public class student { int age; String name; int stuNO; void outPut() { System.out.pr ...
- Empire C:Basic 3
首先我们定义一个表示年龄的指针: int* page: 这就是定义了一个指针,和定义普通变量就多了一个*符号而已. 为什么变量名用了p开头,这里引用了英文pointer(指向),表示它是一个指针,而非 ...
- LINQ TO ENTITY 根据Birthday获取Age
from emp in EmployeeInfo let years = EntityFunctions.DiffYears(emp.Birthday.Value,DateTime.Now) let ...
- 【UVA 11462】 Age Sort(基数排序)
题 题意 给你最多2000000个数据,大小是1到99的数,让你排序输出. 分析 快排也可以过.不过这题本意是要基数排序(桶排序),就是读入年龄age, a[age]++,然后输出时,从1到99岁(看 ...
- Why The Golden Age Of Machine Learning is Just Beginning
Why The Golden Age Of Machine Learning is Just Beginning Even though the buzz around neural networks ...
随机推荐
- dedecmsV5.7织梦后台更新文章,发布时间不自动更新
问题:dedecmsV5.7后台修改文章的时候,会更新发布时间,需求是不自动更新时间,还是当时的发布时间 解决: 1.修改后台文件夹/templets/archives_edit.htm,articl ...
- Vant-Weapp小程序+商城案例
功能还在进一步完善中,欢迎扫一扫提出宝贵意见! 详细信息可进群沟通:
- Java使用RSA加密解密签名及校验
RSA加密解密类: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ...
- rem 转 px
(function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? ...
- 【Angular 5】数据绑定、事件绑定和双向绑定
本文为Angular5的学习笔记,IDE使用Visual Studio Code,内容是关于数据绑定,包括Property Binding.Class Binding.Style Binding. 在 ...
- GuavaCache本地缓存学习总结
https://my.oschina.net/u/2270476/blog/1805749 http://www.cnblogs.com/parryyang/p/5777019.html https: ...
- c# Process cmd 执行完回调 Proc_OutputDataReceived mysql mysqldump mysql source备份还原数据
c# Process 执行完回调 Proc_OutputDataReceived mysql mysqldump mysql source备份还原数据 直接贴代码 前提:mysql5.7 vs2017 ...
- echarts x和y去掉
解决方法 "axisLine": { "show": false },
- week8
---恢复内容开始--- week8 1.动态导入模块 2.断言 3.ftp 4.socketserver 1.动态导入模块 import importlib a = importlib.import ...
- docker 下安装gitlab
1.找到docker镜像 docker search gitlab 2.下载gitlab镜像 docker pull gitlab/gitlab-ce/ 3.通常会将 GitLab 的配置 (etc ...