国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

1046. Shortest Distance (20)

2019-11-14 10:19:31
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

1. 原題: https://www.patest.cn/contests/pat-a-PRactise/1046

2. 思路:

題意:在一個(gè)環(huán)路中,求兩點(diǎn)間的最小距離。基本邏輯題。思路:常規(guī)思路是求出總長(zhǎng)total,然后累計(jì)兩點(diǎn)間的正向距離sum。反向距離是total-sum,輸出兩者的最小值。然而數(shù)組規(guī)模很大,最后一個(gè)測(cè)試點(diǎn)超時(shí)。改進(jìn)的思路參考自:http://blog.csdn.net/xyt8023y/article/details/46924653即:另開(kāi)一個(gè)數(shù)組,在求total時(shí),保存從起點(diǎn)1到當(dāng)前點(diǎn)的距離。這樣就少了一層循環(huán)。

3. 源碼(已AC):

#include<iostream>#include<algorithm>//使用min,max函數(shù)#include<vector>using namespace std;int main(void){	//freopen("in.txt", "r", stdin);	int N, total = 0;	scanf("%d", &N);	vector<int> ev(N + 1, 0);//保存兩點(diǎn)間的距離	vector<int> acc(N + 1, 0);//保存起點(diǎn)到當(dāng)前點(diǎn)的距離	for (int i = 1; i <= N; i++)	{		acc[i] = total;		scanf("%d", &ev[i]);		total += ev[i];	}	int M, sta, end;//分別為所求問(wèn)題個(gè)數(shù), 起始點(diǎn),末點(diǎn)。	int lnum, gnum;//分別表示兩點(diǎn)較小的和較大的序號(hào)	scanf("%d", &M);	for (int i = 0; i < M; i++)	{		scanf("%d %d", &sta, &end);		lnum = min(sta, end);		gnum = max(sta, end);		int sum = acc[gnum] - acc[lnum];		int min_dist = sum > (total / 2) ? (total-sum) : sum;		printf("%d/n", min_dist);	}	return 0;}
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 滦南县| 北京市| 准格尔旗| 宜黄县| 甘南县| 南乐县| 廊坊市| 楚雄市| 建宁县| 桐梓县| 武宣县| 桂东县| 武乡县| 绥阳县| 徐州市| 突泉县| 靖远县| 鹤峰县| 建平县| 拉萨市| 诏安县| 宜宾县| 平和县| 蛟河市| 娄底市| 大方县| 武邑县| 陵水| 万荣县| 余干县| 江都市| 九台市| 独山县| 曲沃县| 家居| 张家界市| 类乌齐县| 正定县| 密山市| 黎城县| 大厂|