暑假集训CSP提高模拟11
1.Codeforces Round 955 (Div. 2)2.AtCoder Beginner Contest 3633.AtCoder Regular Contest 182(A B C)4.暑假集训CSP提高模拟15.暑假集训CSP提高模拟26.暑假集训CSP提高模拟77.暑假集训CSP提高模拟58.暑假集训 加赛19.暑假集训CSP提高模拟410.暑假集训CSP提高模拟1811.暑假集训CSP提高模拟1712.暑假集训CSP提高模拟 1613.暑假集训CSP提高模拟 ∫[0,6] (x^2)/6 dx
14.暑假集训CSP提高模拟11
15.暑假集训SCP提高模拟1016.暑假集训PVZ提高模拟917.暑假集训CSP提高模拟818.暑集假训SCP提高拟模2119.[CL-FOOL] CLOI 愚人赛的部分官方题解与小杂谈20.トヨタ自動車プログラミングコンテスト2024#7(ABC 362)21.寒假集训测试2 题目转存22.HEOI2024 题目转存23.高一小学期224.张江蔡25.高一高考集训总结赛26.高一下二调题目转存27.CSP提高组模拟128.Atcoder Beginner Contest 36729.[R18][中国語翻訳]HDKのABC370赛試(ABC370)30.[30] CSP 加赛 131.[33](CSP 集训)CSP-S 模拟 432.[34](CSP 集训)CSP-S 联训模拟 133.[35] (CSP 集训) CSP-S 模拟 534.[36](CSP 集训)CSP-S 模拟 635.AtCoder Beginner Contest 37336.[37](CSP 集训)CSP-S 模拟 737.[39] (多校联训) A层冲刺NOIP2024模拟赛0138.[40](CSP 集训)CSP 联训模拟 239.[42] (多校联训) A层冲刺NOIP2024模拟赛0340.[41] (CSP 集训) CSP-S 模拟 941.[44] (多校联训) A层冲刺NOIP2024模拟赛0442.[45] (多校联训) A层冲刺NOIP2024模拟赛0543.[46] (多校联训) A层冲刺NOIP2024模拟赛0644.パナソニックグループ プログラミングコンテスト2024(ABC 375)45.[47] (CSP 集训) CSP-S 模拟 1146.[49 & 50] (多校联训) A层冲刺NOIP2024模拟赛08 | CSP-S 模拟 1247.[51] (多校联训) A层冲刺NOIP2024模拟赛0948.Atcoder Beginner Contest 37649.Codeforces Round 980 (Div. 2)50.[54] (多校联训) A层冲刺NOIP2024模拟赛1251.[57] (多校联训) A层冲刺NOIP2024模拟赛1552.[61] (多校联训) A层冲刺NOIP2024模拟赛1853.[62] (NOIP 集训) NOIP2024加赛 254.[63] (多校联训) A层冲刺NOIP2024模拟赛1955.[68] (炼石计划) NOIP 模拟赛 #2056.[68] (NOIP集训) NOIP2024 加赛 557.[72] (多校联训) A层冲刺NOIP2024模拟赛2558.[73] (NOIP集训) NOIP2024 加赛 759.[75] (NOIP集训) NOIP2024 加赛 8A.Fate
求次短路方案数.
这题有点小水了,好像之前做过.
具体的方案显然是 DP,考虑枚举当前每一个路径长度,假如比最短路更优则覆盖最短路,之前的最短路用来覆盖次短路. 否则如果比次短路更优,则直接覆盖次短路.
方案数的话考虑一样的方法维护,只是在遇到相等的路径长时使方案数加一即可.
考试的时候把转移写在最短路里面了,所以错了一遍,因为这样是不完全更新,所以要拉到外面跑一遍.
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int p=1e9+7;
vector<int>e[200001];
int dis[200001],f[2][200001];
struct node{
int id,dis;
bool operator <(const node& A)const{
return dis>A.dis;
}
};
priority_queue<node>q;
void dij(int s){
memset(dis,0x3f,sizeof dis);
dis[s]=0;
q.push({s,dis[s]});
while(!q.empty()){
node u=q.top();
q.pop();
if(dis[u.id]!=u.dis){
continue;
}
for(int i:e[u.id]){
if(dis[i]>dis[u.id]+1){
dis[i]=dis[u.id]+1;
q.push({i,dis[i]});
}
}
}
}
struct node_{
int id,dis;
bool operator <(const node_ &A)const{
return dis<A.dis;
}
}no[200001];
signed main(){
// freopen("Fate9.in","r",stdin);
int n,m,s,t;
scanf("%lld %lld %lld %lld",&n,&m,&s,&t);
for(int i=1;i<=m;++i){
int u,v;scanf("%lld %lld",&u,&v);
e[u].push_back(v);
e[v].push_back(u);
}
dij(s);
for(int i=1;i<=n;++i){
no[i].id=i;
no[i].dis=dis[i];
}
sort(no+1,no+n+1);
f[0][s]=1;
for(int k=0;k<=1;++k){
for(int i=1;i<=n;++i){
for(int j:e[no[i].id]){
if(dis[j]==dis[no[i].id]+1){
f[k][j]+=f[k][no[i].id];
f[k][j]%=p;
}
if(k==0 and dis[no[i].id]+1==dis[j]+1){
f[1][j]+=f[0][no[i].id];
f[1][j]%=p;
}
}
}
}
printf("%lld",f[1][t]%p);
}
B.EVA
首先,把区间左端点放在一条鱼身上一定比较优,考虑到这个题
其次,对于其他的鱼,可以考虑用相对速度算出它和当前鱼的相遇和离开时间,相遇时加上贡献,离开时减去贡献,计算途中最大值即可.
需要注意的是
#include<bits/stdc++.h>
using namespace std;
const long double eps=1e-7;
int n,a,ans;
struct fish{
int w,x,v;
}f[3001];
int main(){
scanf("%d %d",&n,&a);
for(int i=1;i<=n;++i){
scanf("%d %d %d",&f[i].w,&f[i].x,&f[i].v);
}
for(int i=1;i<=n;++i){
map<double,int>mp;
int res=0;
for(int j=1;j<=n;++j){
if(f[i].v==f[j].v){
if(f[j].x>=f[i].x and f[j].x-f[i].x<=a){
res+=f[j].w;
}
}
else{
double l=(f[i].x-f[j].x)*1.0/(f[j].v-f[i].v);
double r=(f[i].x-f[j].x+a)*1.0/(f[j].v-f[i].v);
if(r-l<eps) swap(l,r);
if(r>=0){
l=max(l,0.0);
mp[l]+=f[j].w;
mp[r+eps]-=f[j].w;
}
}
}
ans=max(ans,res);
for(auto i=mp.begin();i!=mp.end();i++){
res+=i->second;
ans=max(ans,res);
}
}
printf("%d\n",ans);
}
C.嘉然登场
考虑一种策略:每次在插入
新放的数不能与任何一个已经放过的
(
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int p=998244353;
int n,m,ans=1;
int a[200001],inv[200001];
signed main(){
cin>>n>>m;
for(int i=1;i<=n;++i){
cin>>a[i];
}
sort(a+1,a+n+1);
int l=1,r=n;
for(int i=1;i<=n;++i){
ans=ans*(i-2*(l-1))%p;
if(a[l]+a[r]>=m){
r--;
}
else{
l++;
}
}
inv[0]=inv[1]=1;
for(int i=2;i<=n;++i){
inv[i]=(p-p/i)*inv[p%i]%p;
}
a[0]=a[n+1]=-1;
int iv=1,cnt=1;
for(int i=1;i<=n+1;++i){
if(a[i]!=a[i-1]){
ans=ans*iv%p;
iv=cnt=1;
}
else{
cnt++;
iv=iv*inv[cnt]%p;
}
}
cout<<ans<<endl;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!