bestcoder 1002 Taking Bus

2024-08-24 12:58
文章标签 bus 1002 bestcoder taking

本文主要是介绍bestcoder 1002 Taking Bus,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1002 Taking Bus简单的分类讨论,设s,x,y分别表示公交的始发站,起点和终点。大概有这样几种情况:1. sx<y, 2. x<s<y,3. x<ys, 4. sy<x, 5. y<s<x, 6. y<xs分别写出公式即可。答案应该会超过int,注意要用long long。
/************************************************ Author: fisty* Created Time: 2015/1/24 19:57:06* File Name   : BC-2.cpp*********************************************** */
#include <iostream>
#include <cstring>
#include <deque>
#include <cmath>
#include <queue>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <string>
#include <vector>
#include <cstdio>
#include <bitset>
#include <algorithm>
using namespace std;
#define Debug(x) cout << #x << " " << x <<endl
#define MAX_N 100100
const int INF = 0x3f3f3f3f;
typedef long long LL;
typedef pair<int, int> P;
LL d[2*MAX_N];
LL sum[2*MAX_N];int main(){//freopen("in.txt", "r", stdin);cin.tie(0);ios::sync_with_stdio(false);int t;cin >> t;while(t--){int n, m;cin >> n >> m;memset(d, 0, sizeof(d));memset(sum, 0, sizeof(sum));for(int i = 2;i <= n; i++){LL dis;cin >> dis;d[i] = dis;sum[i] = sum[i-1]+d[i];//Debug(sum[i]);}for(int i = 1; i <= n-1; i++){d[i+n] = d[n-i+1];sum[i+n] = sum[n+i-1] + d[i+n];}for(int i = 1;i <= m; i++){LL ans = 0;int x , y;cin >> x >> y;if(x > y){int end = n + (n-y);int start = ((i-1) % n)+1;//Debug(x);//Debug(y);if(start > x){ans = sum[n]-sum[start] + sum[n] - sum[x] + sum[x]-sum[y];}else{ans = sum[end] - sum[start];}}else{int start = ((i-1) % n)+1;if(start > x){ans = sum[y] + sum[n+n-1] - sum[start];}else{ans = sum[y] - sum[start];}}cout << ans << endl;}}return 0;
}


这篇关于bestcoder 1002 Taking Bus的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1102551

相关文章

nyoj 1002 Trucking

同样一道改编题。 只要把题意理解了好。 简单的二分加最短路。 只要二分高度, 然后求最短路,输出满足题意的即可。 代码如下: (最短路用spfa 时间效率高) #include <iostream>#include <cstdio>#include <cstring>#include <ctime>#include <queue>using namespace st

百度之星 2015 初赛(1) 1002 找连续数

找连续数      Accepts: 401      Submissions: 1911  Time Limit: 2000/1000 MS (Java/Others)      Memory Limit: 32768/32768 K (Java/Others) Problem Description 小度熊拿到了一个无序的数组,对于这个数组,小度熊想知道是

百度之星初赛1002(二分搜索)

序列变换    Accepts: 816    Submissions: 3578  Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Problem Description 给定序列 A={A1,A2,...,An} , 要求改变序列A中

linux驱动模型 -- bus,device,device_driver之间的关系

Linux 设备驱动模型中,按照层次的组织结构,抽象成总线(struct bus_type),设备(struct device),驱动(struct device_driver)的层次组织形式,这是最原始的抽象结构,在此基础之上,根据不同类型的总线/设备/驱动,有形成了更高层次的组织结构,如 virtio总线(struct bus_type virtio_bus),virtio设备(

bug系列-------i2c bus挂了导致touch无反应

今天看到一个现象,偶發玩遊戲後手動直接suspend後再resume發生system hang住,只剩下power button有作用。  看了一下log:比较可疑的如下  i2c-msm-v2 78b6000.i2c: NACK: slave not responding, ensure its powered, I2C transfer failed, : msgs(n:2 cu

九度考研真题 浙大 2011-2浙大1002:Grading

题目1002:Grading #include<iostream> #include<stdio.h> #include<math.h>  using namespace std; int main() { double P,T,G1,G2,G3,Gj; double num; while(cin>>P) { cin>>T>>G1>>G2>>G

BestCoder Round #62 (div.2)Clarke and five-pointed star(极角排序,判断五边形)

题目链接 题意:给你五个点,问这五个点是否可以组成正五边形(正五角星,等价于正五边形)。 解答:先极角排序,(让五个点按照顺时针或者逆时针的顺序)然后我们计算五条边是不是一样,然后在看对角线是不是都一样。 #include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#includ

BestCoder Round #62 (div.2)Clarke and food (简单贪心)

题目链接 题意:有个背包容量是V,现在有n个物品,每个物品有一个体积,问背包最多能装多少个。 解法:先排序,从小到大选。 #include<cstdio>#include<iostream>#include<algorithm>#include<cmath>#include<set>#include<map>#include<string>#include<cstring>

BestCoder Round #42(3/4)

http://acm.hdu.edu.cn/showproblem.php?pid=5232 Shaking hands Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 169    Accepted Submission(s):

BestCoder Round #47 ($) HDU 5280 Senior\'s Array

http://acm.hdu.edu.cn/showproblem.php?pid=5280 考少年——报考杭州电子科技大学计算机学院  Senior's ArrayTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 244