d2也挺簡單的,t1乙個二維字首和,t2乙個bfs+spfa,t3難度較大,但是**實現難度不大,而且30非常好拿。所以兩天成績=260+230=490,好菜啊qwq,往年的題都做成這個樣子……
t1:無線網路發射器選址,又是乙個模擬,只要處理下二維字首和就好,注意判斷好邊界,不要讓陣列越界
#include#includet2:尋找道路,這個首先我們就可以想到反向建圖,選出能夠到達終點的點,然後在列舉它們,判斷是否符合條件,符合就把與它相連的所有邊建起來,這樣並不會多出能到達終點的路徑,因為會在半路中截斷,建出圖來就好辦了,跑一邊spfa就完事了#include
#include
using
namespace
std;
int d,n,x,y,z,ans1,ans2,xa,xb,ya,yb,sum[130][130
];//
這個題我們只需要求個二維字首和,再列舉中心就好了,注意處理好邊界
intmain()
cout
'<
}
#include#includet3:這是2023年最有難度的乙個題,首先我們可以轉化一下方程。#include
#include
using
namespace
std;
intn,m,ta1,ta2,ta3,x,y,s,e;
struct
inter[
200020],es[200020],ing[200020
];int he1[10010],ans[10010],he2[10010],he3[10010
];bool flag[10010
];inline
void bu1(int f,int
l),he1[f]=ta1;
es[++ta2]=(in),he2[l]=ta2;
}queue
qwq;
inline
void bfs(int
fi) }
}inline
void bu2(int f,int
l),he3[f]=ta3;
}inline
void
init()
}if(fl)//
如果它的蛾子能夠到達終點就建邊(就算後面有不能到達終點的後代也無所謂,因為這樣不會建邊) }}
}inline
void spfa()//
跑一邊最短路
}flag[qaq]=0
; qwq.pop();
}if(ans[e]<2139062143
) cout
<
else
cout
<
/*這個題我們可以先反向建圖,然後判斷出哪些點可以到達終點
之後再根據題目要求,將自己蛾子所有能夠直接或者間接到終點的點的所有邊接起來
這樣做並不會出現不符合題意的路徑,因為所有不應該到達終點的路徑就算多建了幾條邊,也會因為中間的點不滿足條件而最後不會聯通到終點
所以我們重新建了一張圖,之後跑個spfa就可以了
*/int
main()
根據秦九韶演算法:
所以我們可以簡化一下計算,降低一下時間複雜度,這是第乙個優化
之後我們想一下,如果我們將方程模上乙個質數,這時如果滿足另一邊為0的時候,我們是不是可以基本看成x是方程的乙個解,當然肯定會出現錯誤,但是如果我們多模上幾個質數的時候,出錯的概率就會大大降低呢?所以我們可以多模上幾個數,這樣也避免了高精運算2333333
#include#include抽空我再做15年的報告,畢竟15年的題還是很有難度的……#include
#include
using
namespace
std;
typedef
long
long
lo;const lo m1=99991
;const lo m2=998244353
;const lo m3=1000000007
;lo n,m,a[
110],b[110],c[110],ans,lin[1000010
];bool flag[1000010
];inline
void re(int
i)
while(s>='
0'&&s<='
9')//
取模是為了存的開
a[i]=((a[i]*10%m1)+s-'
0')%m1,b[i]=((b[i]*10%m2)+s-'
0')%m2,c[i]=((c[i]*10%m3)+s-'
0')%m3,s=getchar();
if(fl)
a[i]*=-1,b[i]*=-1,c[i]*=-1;}
inline
bool
ask1(lo x)
inline
bool
ask2(lo x)
intmain()}}
for(lo i=1;i<=m;i++)
if(flag[i])
lin[++ans]=i;
cout
;
for(lo i=1;i<=ans;i++)
cout
;}
noip2014提高組 Day2 解題報告
t1無線網路發射選址 題解 直接列舉安裝地點即可。include includeusing namespace std int n,m,d,x,y,sum long long a 300 300 maxx,z int main for int i 0 i 128 i for int j 0 j 12...
NOIP提高組2014 聯合權值 解題報告
lgoj p1351 聯合權值 一看到我們就要反應出來 g是一顆樹。兩個點的距離為2,就能產生聯合權值?那我列舉中間點不就好了2333 乙個中間點的最大聯合權值就是它所連的點中權值最大的兩個點 如果它所連只有乙個點,自然不產生權值 考慮它的所有的聯合權值之和怎麼算 第k kk個點為中間點的所有聯合權...
NOIP 2016 Day2 解題報告
by 毒液哥 注意到n,m 2000.而我們的問題是對範圍內所有組合數統計能被k整除的個數,所以我們需要得到範圍內所有的組合數模k的餘數。要注意j i,不要計算多餘的0.用楊輝三角形遞推求出組合數,再用字首和處理即可。每次用線性時間找到最大值。切成兩條。把其他所有的加上q.記得輸出。35分演算法中有...