Codeforces Round #433
我会4题,写了两题,还提交错误n次,掉了40rating(哭丧脸),又被学长D飞了。
学长:我很心疼你的成绩啊;
我:第四题忘记加特判了。。。
学长:暴力还能写挂。
我:。。。。。。
———————————————————我是分割线———————————————————
T1:给定一个n,求一个分数a/b(满足a+b=n)且gcd(a,b)=1,使这个分数<1且最大。。
我:。。。。
#include<cstdio>
#include<cmath>
using namespace std;
int gcd(int x,int y){return y==?x:gcd(y,x%y);}
int n;
int main(){
scanf("%d",&n);
for(int i=(n-)/;i>=;i--){
if(gcd(i,n-i)==){printf("%d %d\n",i,n-i);break;}
}
}
———————————————————我是分割线———————————————————
T2:一共有n个点,其中k个点已经有人居住,求旁边有人居住的空置的点至少有几个,最多有几个。
我:。。。。。。(如果n==k||k==0输出0 0,否则输出1和j(k*3<=n?j=n-k:j=k*2))
我:假题。
#include<cstdio>
using namespace std;
long long n,k;
int main(){
scanf("%I64d%I64d",&n,&k);
if(n==k||k==)puts("0 0");
else {
printf("1 ");
if(k*<=n)printf("%I64d",k*);
else printf("%I64d",n-k);
}
}
———————————————————我是分割线———————————————————
T3:有n个航班, 第i个航班原始是从第i秒起飞的。不过由于延误,前k秒不能起飞飞机,要求你让每一个航班在k+1~k+n秒中选一个时间起飞(不能重复),而且每一个航班延误1秒花费的代价为ci,要你求最小的代价。
我:。。题目正常了。
感觉尽量让ci越大的航班延误时间越小越好。所以。。大胆猜想!不用证明!
我们把ci按照时间顺序扔进大根堆里中,然后统计答案就好了。
然后我想到了,考场上没来得及写啊(抓狂~~~)
#include<cstdio>
#include<vector>
#include<queue>
using namespace std;
int g[],n,k,c[];
typedef pair<int,int> ii;
int main(){
int n,k;
scanf("%d%d",&n,&k);
for(int i=;i<n;i++)scanf("%d",&c[i]);
priority_queue<ii>pq;k--;
long long cost=;
for(int i=;i<n||(!pq.empty());i++){
if(i<n) pq.push(ii(c[i],i)); if(i>k){
ii re=pq.top();
pq.pop();
cost+=1LL*re.first*(i-re.second);
g[re.second]=i+;
}
}
printf("%I64d\n",cost);
for(int i=;i<n;i++) printf("%d ",g[i]);
}
———————————————————我是分割线———————————————————
T4:一共有m张机票,每趟飞机要么从0号点飞向其他点,要么从其他点飞向0号点,给你每趟飞机的到达时间,1-n个城市里刚好有编号为1-n的人,求让这n个人同时在0号城市呆k天且最后回到城市的最小花费是多少。。(时间大小<=1000000)
我:这题目有点意思。、、、
过了一会儿。。。
我:这不就是暴力枚举吗。。。正着枚举一遍时间轴,求1-100000s时n个人到达0号城市的代价,然后反着再枚举一遍时间轴,求n个人回到各自城市的代价。
然后统计答案就好了,暴力题。(考场上写特判挂了。。。)
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
long long Min(long long a,long long b){return a<b?a:b;}
struct hh{
long long d,f,t,c;
}gg[];
long long n,m,k,cost[],sum,qc[],l,qian,ans=;
bool cmp(hh x,hh y){return x.d<y.d;}
int main()
{
scanf("%I64d%I64d%I64d",&n,&m,&k);
for(int i=;i<=m;i++) scanf("%I64d%I64d%I64d%I64d",&gg[i].d,&gg[i].f,&gg[i].t,&gg[i].c);
sort(gg+,gg++m,cmp);
l=n;qian=;
for(long long i=;i<=;i++)
{
while(gg[qian].d==i)
{
if(!cost[gg[qian].f]&&gg[qian].f!=)
{
cost[gg[qian].f]=gg[qian].c;
sum+=gg[qian].c;
l--;
}
else
{
if(cost[gg[qian].f]>gg[qian].c)
{
sum+=gg[qian].c-cost[gg[qian].f];
cost[gg[qian].f]=gg[qian].c;
}
}
qian++;
}
if(!l)
qc[i]=sum;
else qc[i]=-;
}
qian=m;l=n;sum=;
memset(cost,,sizeof cost);
for(long long i=;i>=k+;i--)
{
while(gg[qian].d==i)
{
if(!cost[gg[qian].t]&&gg[qian].f==)
{
cost[gg[qian].t]=gg[qian].c;
sum+=gg[qian].c;
l--;
}
else
{
if(cost[gg[qian].t]>gg[qian].c)
{
sum+=gg[qian].c-cost[gg[qian].t];
cost[gg[qian].t]=gg[qian].c;
}
}
qian--;
}
if(l==&&qc[i-k-]!=-) ans=Min(ans,sum+qc[i-k-]);
}
if(ans!=) printf("%I64d",ans);
else printf("-1");
}
———————————————————我是分割线———————————————————
Codeforces Round #433的更多相关文章
- Codeforces Round #433 (Div. 2)【A、B、C、D题】
题目链接:Codeforces Round #433 (Div. 2) codeforces 854 A. Fraction[水] 题意:已知分子与分母的和,求分子小于分母的 最大的最简分数. #in ...
- Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises)
A. Fraction 题目链接:http://codeforces.com/contest/854/problem/A 题目意思:给出一个数n,求两个数a+b=n,且a/b不可约分,如果存在多组满足 ...
- Codeforces Round#433 简要题解
来自FallDream的博客,未经允许,请勿转载,谢谢. 我的号自从几个月前姿势水平过低疯狂掉分之后就没动过了 突然想上点分 就打了一场Div1 没想到打到了rank5 一发上橙了,可还行. ...
- [Codeforces Round #433][Codeforces 853C/854E. Boredom]
题目链接:853C - Boredom/854E - Boredom 题目大意:在\(n\times n\)的方格中,每一行,每一列都恰有一个被标记的方格,称一个矩形为漂亮的当且仅当这个矩形有两个角是 ...
- Codeforces Round #433 Div. 1
A:显然从大到小排序后贪心放在第一个能放的位置即可.并查集维护. #include<iostream> #include<cstdio> #include<cmath&g ...
- codeforces 853b//Jury Meeting// Codeforces Round #433 (Div. 1)
题意:几个人要去一个城市k天,现给出各航班的日期和花费,让这n个人能相会k天的最小花费? 用数组arr1[i]记录在第i天人到齐的最小花费.arr2[i]记录第i天之后才有人开始走的最小花费.然后取a ...
- Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) D. Jury Meeting(双指针模拟)
D. Jury Meeting time limit per test 1 second memory limit per test 512 megabytes input standard inpu ...
- Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) D
Country of Metropolia is holding Olympiad of Metrpolises soon. It mean that all jury members of the ...
- Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) C
Helen works in Metropolis airport. She is responsible for creating a departure schedule. There are n ...
随机推荐
- nodejs的交叉(跨平台)编译(to android)
nodejs的二进制包有两种安装方式node-gyp以及node-pre-gyp 这两条命令会写入该包的安装脚本. node-gyp是使用gyp工具编译源码,因此必须指定交叉编译器(参见http:// ...
- 第八篇Python基本数据类型之列表、元组与字典
列表 写在最前,必须要会的:append(),extend(),insert(),索引,切片,循环 list 是一个类,是个对象 列表用 方括号[]括起来的,[]内以逗号分割每个元素,列表中的元素可 ...
- Thymeleaf 使用时的标签
1 . onclick事件 <a th:onclick="'javascript:more()'" ></a> 2.引入CSS样式 <link t ...
- python3学习之路_day1
登录程序1.输入用户名密码2.认证成功后显示欢迎信息3.输错三次后锁定 #!/usr/bin/env python #_*_coding:utf-8_*_ #by anthor gushiren 20 ...
- 在阿里云上遇见更好的Oracle(四)
2016.5.13,北京,第七届数据库技术大会. 从最初的itpub社区,到后来被it168收购,DBA社区的线下聚会发展成2010年第一届数据库技术大会(DTCC).第一届大会汇聚了社区内活跃的各位 ...
- python之*args和**kwargs参数,以及迭代器
*args让函数可以接受不限制多个位置参数,**kwargs让函数可以接受不限制多个关键字参数,用法如图 2.迭代器总结
- [译]如何根据条件从pandas DataFrame中删除不需要的行?
问题来源:https://stackoverflow.com/questions/13851535/how-to-delete-rows-from-a-pandas-dataframe-based-o ...
- idea tomcat 启动报错 org.apache.catalina.core.StandardService.initInternal Failed to initialize connector
org.apache.catalina.core.StandardService.initInternal Failed to initialize connector org.apache.cata ...
- 【bzoj2325】[ZJOI2011]道馆之战 树链剖分+线段树区间合并
题目描述 给定一棵树,每个节点有上下两个格子,每个格子的状态为能走或不能走.m次操作,每次修改一个节点的状态,或询问:把一条路径上的所有格子拼起来形成一个宽度为2的长方形,从起点端两个格子的任意一个开 ...
- Codeforces Round #390 (Div. 2) E(bitset优化)
题意就是一个给出2个字符矩阵,然后进行匹配,输出每个位置的匹配的结果 (超出的部分循环处理) 一种做法是使用fft,比较难写,所以没有写 这里使用一个暴力的做法,考虑到一共只出现26个字符 所以使用一 ...