久久精品国产91久久麻豆,一区二区不卡视频在线观看,97国产精品人人爽人人做,99国产欧美久久久蜜芽高清成人

歡迎光臨無(wú)錫市鈺婷物資有限公司官方網(wǎng)站!

聯(lián)系我們
服務(wù)熱線
0510-85188012
郵箱:491866689@qq.com
地址:無(wú)錫市濱湖區(qū)振興路8號(hào)
當(dāng)前位置:首頁(yè)>>新聞中心
螺旋困境(模擬)
點(diǎn)擊次數(shù):54 更新時(shí)間:2023-11-11

  題干

  小W是一個(gè)宅男,喜歡發(fā)呆,并幻想一些不切實(shí)際的事情。今天,小W又開始做他的白日夢(mèng)了。他夢(mèng)見他被困在了一條隧道里,周圍漆黑一片。作為一個(gè)宅男,小W自然地掏出了手機(jī),打開定位系統(tǒng),確定了他的位置。又由此在網(wǎng)上搜索到了關(guān)于隧道的信息。這條隧道是由一個(gè)點(diǎn)向外,呈六角螺旋形展開,并且沒有其他的支路。*小的一圈每條邊的長(zhǎng)度都是1米,邊長(zhǎng)向外依次增大到2,3.米,如下圖所示。

  輸入數(shù)據(jù)以一個(gè)整數(shù)T<104開頭,表示測(cè)試數(shù)據(jù)組數(shù)。以下每行為一組測(cè)試數(shù)據(jù),包括4個(gè)整數(shù)X1,Y1,X2,Y2,描述了小W所在的位置和出口位置的坐標(biāo)。所有坐標(biāo)的**值不超過(guò)1018,并保證答案不超出64位有符號(hào)整數(shù)的表示范圍。

  輸出對(duì)于每組測(cè)試數(shù)據(jù)輸出一行,一個(gè)整數(shù),表示小W所在的位置和出口的距離。

  Sample Input

  Sample Output

  分析

  模擬題,我的方案是先計(jì)算起點(diǎn)和終點(diǎn)所在的層數(shù),每層的長(zhǎng)度是一個(gè)公差為6的等差數(shù)列,考慮數(shù)列求和公式。

  這里要考慮兩種情況。

  **種情況:起點(diǎn)為(0,0),終點(diǎn)為任意。先用求和公式計(jì)算終點(diǎn)所在圈以內(nèi)所有圈的長(zhǎng)度總和,然后加上終點(diǎn)所在圈的位置長(zhǎng)度,終點(diǎn)的位置長(zhǎng)度至少要分4種情況。

  第二種情況:起點(diǎn)任意,終點(diǎn)在起點(diǎn)以外的任意位置,先求起點(diǎn)和終點(diǎn)之間圈的長(zhǎng)度總和,然后加上終點(diǎn)所在圈的距離,加上起點(diǎn)所在該圈的長(zhǎng)度,再減去起點(diǎn)所在圈的位置長(zhǎng)度。

  注意:本題起點(diǎn)和終點(diǎn)是可以對(duì)換位置的,若是對(duì)換位置,則上面方法的計(jì)算結(jié)果為負(fù)數(shù),需要取**值(不能用abs,abs只適用于int)。

  各圈分解見下圖所示,同色代表為同一圈

  題解

  #include"bits/stdc++.h"

  using namespace std;

  typedef long long ll;

  ll count_layer(ll x,ll y,ll layer){

  if(x<0&&y==0) return 0;

  else if(x<=0&&y<0){

  if(x0&&y<=0) return layer*3+y;

  else{

  if(y>T;

  ll i;

  for(i=0;i>x1>>y1>>x2>>y2;

  ll absx1 = x1>0 ? x1:-1*x1;

  ll absy1 = y1>0 ? y1:-1*y1;

  ll absx2 = x2>0 ? x2:-1*x2;

  ll absy2 = y2>0 ? y2:-1*y2;

  ll layer_position = absx1>absy1 ? absx1:absy1;

  ll layer_outlet = absx2>absy2 ? absx2:absy2;

  if(x1>0&&y1<0) layer_position = absx1+absy1;

  else if(x10) layer_position =absx1+absy1-1;

  if(x2>0&&y2<0) layer_outlet = absx2+absy2;

  else if(x20) layer_outlet =absx2+absy2-1;

  if(layer_position==layer_outlet&&layer_position==0){

  cout<<0<0){

  ll n = layer_outlet-1;

  ll ans = 7*n+n*(n-1)*3+1;

  ans+=count_layer(x2,y2,layer_outlet);

  ans>0 ? ans:-1*ans;

  cout<

  cout<

  }

  }

  return 0;

  }

罗江县| 许昌县| 曲阳县| 石首市| 铜山县| 长治市| 延安市| 普陀区| 枣庄市| 静海县| 桃江县| 共和县| 思南县| 奉节县| 社旗县| 富锦市| 中卫市| 文山县| 惠水县| 陈巴尔虎旗| 扎兰屯市| 石屏县| 遂川县| 长兴县| 麻栗坡县| 衡阳市| 林口县| 工布江达县| 师宗县| 嘉峪关市| 承德市| 佛山市| 潜江市| 威海市| 怀宁县| 康保县| 彭山县| 开江县| 张家川| 阳谷县| 韩城市|