国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 延边| 铜山县| 苍溪县| 灌阳县| 明水县| 乐至县| 武宣县| 米脂县| 辽阳市| 通榆县| 汶上县| 来安县| 朝阳县| 琼结县| 禹城市| 景东| 荔浦县| 澳门| 桦南县| 河曲县| 潼南县| 抚远县| 武汉市| 信丰县| 册亨县| 马公市| 双城市| 淮阳县| 藁城市| 杭州市| 茌平县| 郎溪县| 安庆市| 漳州市| 梅河口市| 乐昌市| 靖宇县| 瓮安县| 赣州市| 金沙县| 松原市|