Codeforces 1039A. Timetable
题目地址:http://codeforces.com/problemset/problem/1039/A
题目的关键在于理清楚思路,然后代码就比较容易写了
对于每一个位置的bus,即对于每一个i(i>=1 && i<=n) ,x[i]必然大于等于 i ,假设第 i 个车可以停在 x[i] 处,则对于j(j>i && j<=x[i]) 令车j停在j-1处,即b[j-1]>=ar[j]+t
如果x[x[i]]==x[i],只需控制让b[x[i]]<ar[x[i]+1]+t即可
如果x[x[i]]!=x[i],则x[x[i]]>x[i],则必然有b[x[i]]>=ar[x[i]+1]+t,让x[i]+1个车停在x[i]处,以让x[i]停在x[x[i]]处;由此可以知,i也可以停在x[x[i]]处,与题意相悖,输出No即可
#include<iostream>
#include<cstdio>
#include<cmath>
#include<queue>
#include<vector>
#include<string.h>
#include<cstring>
#include<algorithm>
#include<set>
#include<map>
#include<fstream>
#include<cstdlib>
#include<ctime>
#include<list>
#include<climits>
#include<bitset>
#include<random>
#include <ctime>
#include <cassert>
#include <complex>
#include <cstring>
#include <chrono>
using namespace std;
#define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define fopen freopen("input.in", "r", stdin);freopen("output.in", "w", stdout);
#define left asfdasdasdfasdfsdfasfsdfasfdas1
#define tan asfdasdasdfasdfasfdfasfsdfasfdas
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
typedef long long ll;
typedef unsigned int un;
const int desll[][]={{,},{,-},{,},{-,}};
const int mod=1e9+;
const int maxn=2e5+;
const int maxm=1e5+;
const double eps=1e-;
ll m,n;
ll ar[maxn];
ll b[maxn];
int x[maxn];
int main()
{
scanf("%I64d%I64d",&n,&m);
for(int i=;i<=n;i++)scanf("%I64d",&ar[i]);
for(int i=;i<=n;i++)scanf("%d",&x[i]);
for(int i=;i<=n;i++){
if(x[i]<x[i-] || x[i]<i){
printf("No\n");
exit();
}
}
int i=;
while(i<=n)
{
int j=i;
while(j<=n && x[j]==x[i]){
j++;
}
for(int k=i;k<j;k++){
if(x[k]>k)b[k]=ar[k+]+m;
else b[k]=max(b[k-]+, ar[k]+m);
//cout<<k<<" "<<b[k]<<endl;
}
if(x[j-]!=j-|| (j-<n && b[j-]>=ar[j]+m)){
printf("No\n");
exit();
}
i=j;
}
printf("Yes\n");
for(ll i=;i<=n;i++)printf("%I64d%c",b[i],i==n?'\n':' '); return ;
}
Codeforces 1039A. Timetable的更多相关文章
- Codeforces 946D - Timetable (预处理+分组背包)
		
题目链接:Timetable 题意:Ivan是一个学生,在一个Berland周内要上n天课,每天最多会有m节,他能逃课的最大数量是k.求他在学校的时间最小是多少? 题解:先把每天逃课x节在学校呆的最小 ...
 - Codeforces 946D Timetable(预处理+分组背包)
		
题目链接:http://codeforces.com/problemset/problem/946/D 题目大意:有n个字符串,代表n天的课表,1表示这个时间要上课,0表示不要上课,一天在学校时间为第 ...
 - [Codeforces 946D]Timetable
		
Description 题库链接 给你一个 \(N\times M\) 的 \(01\) 矩阵,你可以从中将一些 \(1\) 变为 \(0\) ,最多 \(K\) 次.使操作之后使得每行最远的 \(1 ...
 - 2018.12.08 codeforces 946D. Timetable(背包)
		
传送门 题意简述:有一个人上n天课,每天有m个小时的时间安排表(一个01串),为1表示要上课,否则不上课,求出如果可以最多翘kkk节课这nnn天在校待的总时间的最小值(一天必须在所有课上完后才能离开) ...
 - CodeForces 946D Timetable (DP)
		
题意:给定 n,m,K,表示某个人一个周有 n 天,每天有 m 节课,但是他可以跳过 K 节课,然后下面每行一个长度为 m 个01字符串,0 表示该人在这一小时没有课,1 表示该人在这一个小时有课,每 ...
 - CodeForces - 946D Timetable (分组背包+思维)
		
题意 n天的课程,每天有m个时间单位.若时间i和j都有课,那么要在学校待\(j-i+1\)个时间.现在最多能翘k节课,问最少能在学校待多少时间. 分析 将一天的内容视作一个背包的组,可以预处理出该天内 ...
 - cf946d   怎样逃最多的课dp
		
来源:codeforces D. Timetable Ivan is a student at Berland ...
 - #分组背包 Educational Codeforces Round 39 (Rated for Div. 2)  D. Timetable
		
2018-03-11 http://codeforces.com/contest/946/problem/D D. Timetable time limit per test 2 seconds me ...
 - Codeforces 37D Lesson Timetable - 组合数学 - 动态规划
		
题目传送门 神奇的门I 神奇的门II 题目大意 有$n$组学生要上课2次课,有$m$个教室,编号为$1$到$m$.要确定有多少种不同的安排上课的教室的方案(每组学生都是本质不同的),使得它们满足: 每 ...
 
随机推荐
- BZOJ 1101 [POI2007]Zap | 第一道莫比乌斯反(繁)演(衍)
			
题目: http://www.lydsy.com/JudgeOnline/problem.php?id=1101 题解: http://www.cnblogs.com/mrha/p/8203612.h ...
 - pb_ds
			
#include<ext/pb_ds/priority_queue.hpp>#define ll long long#define pa pair<ll,int>using n ...
 - [HNOI2003]消防局的设立 (贪心)
			
[HNOI2003]消防局的设立 题目描述 2020年,人类在火星上建立了一个庞大的基地群,总共有n个基地.起初为了节约材料,人类只修建了n-1条道路来连接这些基地,并且每两个基地都能够通过道路到达, ...
 - Hadoop NameNode元数据相关文件目录解析
			
在<Hadoop NameNode元数据相关文件目录解析>文章中提到NameNode的$dfs.namenode.name.dir/current/文件夹的几个文件: 1 current/ ...
 - 《vue.js实战》练习---标签页组件
			
html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
 - ByteUtil 工具类
			
ByteUtil 工具类 import java.io.FileOutputStream; import java.io.OutputStream; import java.nio.charset.C ...
 - Java并发(11)- 有关线程池的10个问题
			
引言 在日常开发中,线程池是使用非常频繁的一种技术,无论是服务端多线程接收用户请求,还是客户端多线程处理数据,都会用到线程池技术,那么全面的了解线程池的使用.背后的实现原理以及合理的优化线程池的大小等 ...
 - 知问前端——工具提示UI
			
工具提示(tooltip),是一个非常实用的UI.它彻底扩展了HTML中的title属性,让提示更加丰富,更加可控制,全面提升了用户体验. 调用tooltip()方法 在调用tooltip()方法之前 ...
 - 【BZOJ1468】Tree  [点分治]
			
Tree Time Limit: 10 Sec Memory Limit: 64 MB[Submit][Status][Discuss] Description 给你一棵TREE,以及这棵树上边的距 ...
 - bzoj4886 [Lydsy2017年5月月赛]叠塔游戏
			
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=4886 [题解] 跟bzoj4883:http://www.cnblogs.com/galax ...