ACM-ICPC 2018年北京网络赛 D-80 days
题意: n个城市环形连接,初始有c的钱,每到i城市,会获得a[i]的金钱,失去b[i]的金钱,问能否走遍这n个城市,且过程中金钱不为负数,输出起始城市,如果答案有多个,输出最小的数字。
思路:a[i]-b[i]的值就是到达第i个城市的金钱变化,最开始想到暴力枚举起点城市,模拟后续到其他城市的金钱变化,出现负数就break。但是,100个样例,1e6的数据,总共1e8的数据,感觉如果直接暴力的话,一定会超时,所以果断放弃。接下来便想着只用一重循环就可以解决问题,考虑了很久,发现可以用尺取法优化,但还是wa了。
总结:赛后看题解的时候,暴力可以过,数据太水了。虽然如此,但正确的打开方式是:双端队列 + 尺取法。
双端队列:https://blog.csdn.net/caicai_zju/article/details/49227927
以下附上两种代码:
1.暴力
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int a[]; int main()
{
int t;cin>>t;
while(t--)
{
int n,c,flag=;
scanf("%d%d",&n,&c);
long long sum=;
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
for(int i=;i<=n;i++)
{
int kk;scanf("%d",&kk);
a[i]-=kk;
a[i+n]=a[i];
} // for(int i=1;i<=n;i++) cout<<a[i]<<endl; int i; for(i=;i<=n;i++){
int j;
for(j=;j<n;j++){
sum+=a[j+i];
if(c+sum<) break;
}
if(j==n) {flag=;break;}
else sum=;
}
if(flag) printf("%d\n",i);
else printf("-1\n");
} }
2.双端队列+尺取法
#include<bits/stdc++.h>
#define MAX 2000010
using namespace std;
typedef long long ll; ll a[MAX],b[MAX];
deque<int> q; int main()
{
int t,n,i,j;
ll x;
scanf("%d",&t);
while(t--){
scanf("%d%lld",&n,&x);
for(i=;i<=n;i++){
scanf("%lld",&a[i]);
}
for(i=n+;i<=n+n;i++){
a[i]=a[i-n];
}
for(i=;i<=n;i++){
scanf("%lld",&b[i]);
}
for(i=n+;i<=n+n;i++){
b[i]=b[i-n];
}
while(q.size()){
q.pop_back();
}
int f=;
for(i=;i<=n+n;i++){
if(x+a[i]-b[i]>=){
x+=a[i]-b[i];
q.push_back(i);
if(q.size()>=n){
printf("%d\n",q.front());
f=;
break;
}
}
else{
while(x+a[i]-b[i]<&&q.size()){
x-=a[q.front()]-b[q.front()];
q.pop_front();
}
if(x+a[i]-b[i]>=){
x+=a[i]-b[i];
q.push_back(i);
if(q.size()>=n){
printf("%d\n",q.front());
f=;
break;
}
}
}
}
if(f==) printf("-1\n");
}
return ;
}
ACM-ICPC 2018年北京网络赛 D-80 days的更多相关文章
- ICPC 2018 徐州赛区网络赛
ACM-ICPC 2018 徐州赛区网络赛 去年博客记录过这场比赛经历:该死的水题 一年过去了,不被水题卡了,但难题也没多做几道.水平微微有点长进. D. Easy Math 题意: ...
- 2018 ACM-ICPC 北京网络赛
Problem A 最短路,跑一下dij就可以了. Problem B Problem C 按照题意模拟,不过坑点很多 1.注意字典序: 2.注意挑战的时候失败的那个人要把当前所有桌子上的牌都拿走 P ...
- HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011亚洲北京赛区网络赛)
HDU 4041 Eliminate Witches! (模拟题 ACM ICPC 2011 亚洲北京赛区网络赛题目) Eliminate Witches! Time Limit: 2000/1000 ...
- 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)
摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5 ...
- hihocoder1236(北京网络赛J):scores 分块+bitset
北京网络赛的题- -.当时没思路,听大神们说是分块+bitset,想了一下发现确实可做,就试了一下,T了好多次终于过了 题意: 初始有n个人,每个人有五种能力值,现在有q个查询,每次查询给五个数代表查 ...
- 2015北京网络赛 D-The Celebration of Rabbits 动归+FWT
2015北京网络赛 D-The Celebration of Rabbits 题意: 给定四个正整数n, m, L, R (1≤n,m,L,R≤1000). 设a为一个长度为2n+1的序列. 设f(x ...
- 2015北京网络赛 J Scores bitset+分块
2015北京网络赛 J Scores 题意:50000组5维数据,50000个询问,问有多少组每一维都不大于询问的数据 思路:赛时没有思路,后来看解题报告也因为智商太低看了半天看不懂.bitset之前 ...
- 2015北京网络赛 Couple Trees 倍增算法
2015北京网络赛 Couple Trees 题意:两棵树,求不同树上两个节点的最近公共祖先 思路:比赛时看过的队伍不是很多,没有仔细想.今天补题才发现有个 倍增算法,自己竟然不知道. 解法来自 q ...
- HDU-4041-Eliminate Witches! (11年北京网络赛!!)
Eliminate Witches! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
随机推荐
- 消息队列1:RabbitMQ解析并基于Springboot实战
RabbitMQ简介 AMQP:Advanced Message Queue,高级消息队列协议.它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产 ...
- Python Kivy 中文教程:安装(Windows)
Kivy 是一套用于跨平台快速应用开发的开源框架,只需编写一套代码,便可运行于各大桌面及移动平台上(包括 Linux, Windows, OS X, Android, iOS, 以及 Raspberr ...
- 【题解】Power Strings
题目描述 给定若干个长度小于等于10^6的字符串,询问每个字符串最多由多少个相同的子串重复连接而成.如:ababab,最多由3个ab连接而成. 输入输出格式 输入格式 若干行,每行一个字符串. 当读入 ...
- P2824 [HEOI2016/TJOI2016]排序
题面 这是一道非常巧妙的线段树的题 我们会发现维护\(1 \sim n\)的序列非常困难,但如果我们维护\(01\)序列的的顺序,就非常容易了 但是我们怎么能把这道题变成维护\(01\)序列的顺序呢? ...
- 解题:SPOJ 3734 Periodni
题面 按列高建立笛卡尔树,转成树上问题...... 笛卡尔树是什么? 它一般是针对序列建立的,是下标的BST和权值的堆(即中序遍历是原序列连续区间,节点权值满足堆性质),这里不讲具体怎么建树(放在知识 ...
- 未处理的异常 stack overflow
今天在编译程序时遇到“0x00e304f7 处有未经处理的异常: 0xC00000FD: Stack overflow”的错误,也就是栈溢出了,google了一下,原来是我申请的一个变量太大了,con ...
- C#获取文件超大图标256*256(转)
从Bing搜索得到,保存于此 using System; using System.Collections.Generic; using System.Linq; using System.Text; ...
- php-url地址加密
下面是可以将我们的url地址加密.确保我们提交的数据安全 以下是代码片段: <?php function keyED($txt,$encrypt_key) //定义一个keyED { $encr ...
- 封装JSON数据转自定义HTML方法parseHTML
开发过程中经常使用字符串拼接,这样做工作效率低,可维护性和易读性也比较差,且对于后台程序员对html不熟悉,经常出错. 如下面例子json转字符串: var json = [{ href:'http: ...
- CSS3 - chrome,傲游,360极速浏览器不支持小于12px的字号的解决办法
google流量器chrome,傲游,360极速浏览器都是基于webkit内核浏览器,默认不支持小于font-size小于12px 的字号,即定义font-size小于12px时会发现字体大小依然是1 ...