Submission #45655600
Source Code Expand
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<vector>
#include<cassert>
#include<queue>
using namespace std;
#define Ed for(int i=h[x];~i;i=ne[i])
#define Ls(i,l,r) for(int i=l;i<r;++i)
#define Rs(i,l,r) for(int i=l;i>r;--i)
#define Le(i,l,r) for(int i=l;i<=r;++i)
#define Re(i,l,r) for(int i=l;i>=r;--i)
#define L(i,l) for(int i=0;i<l;++i)
#define E(i,l) for(int i=1;i<=l;++i)
#define W(t) while(t--)
#define Wh while
typedef long long ll;
const int N=310,M=2*N;
const ll INF=1e16;
int n,h,x[M],p[N],f[N],cnt,tmpa,tmpb;
ll dp[N][N][N][3];
#define Min(x) ((tmpa=x)<h?tmpa:h)
//i:点对(从中心到两边)j:进去时的油量 k:出去时的... 0:没有选择 1: 选择了左边 2: 选择了右边
int main(){
#ifndef ONLINE_JUDGE
freopen("1.in","r",stdin);
// freopen("1.out","w",stdout);
#endif
scanf("%d%d",&n,&h);
E(i, n)scanf("%d",x+i);
E(i, n)scanf("%d%d",p+i,f+i);
cnt=n;
Re(i, n-1, 1)x[++cnt]=x[n]*2-x[i];
x[++cnt]=x[n]*2;
// L(i, cnt+1)printf("%d ",x[i]);
L(ii, n+1)
L(i, h+1)
L(j, h+1)
L(k, 3)dp[ii][i][j][k]=INF;
L(i, h+1)dp[n][i][i][0]=0;
Re(i, n-1, 0){
int dis=x[i+1]-x[i];
Le(iny, 0, h+1){//dp[n][iny][outy(not real,take some changes)]
L(outy, h+1){
L(lc, 3){
L(rc, 3){
// if(iny==12){
// puts("start");
// }
int rr_out=outy-dis+(lc&2?f[i]:0);
int real_out=Min(rr_out);
int iiny=Min(f[i]+iny);
iiny-=dis;
bool can_left=lc&1?(iiny>=0):(iny-dis>=0);
bool can_right=outy>=dis;
int in_out=Min(lc&1?(iiny):iny-dis);
if(!can_left||!can_right)continue;
ll &v=dp[i][iny][real_out][lc];
v=min(dp[i+1][in_out][outy][rc]+(lc?p[i]:0),v);
// if(v!=INF){
// // assert(real_out<=10);
// // assert(h==10);
// printf("(%d,%d,%d,%d) from (%d,%d,%d,%d),now is %lld\n",
// i,iny,real_out,lc,i+1,in_out,outy,rc,v
// );
// }
}
}
}
}
}
ll ans=INF;
L(i, h+1)
L(k, 3)ans=min(ans,dp[0][h][i][k]);//,printf("dp[%d][%d]=%lld\n",i,k,dp[0][h][i][k]);
printf("%lld",ans==INF?-1:ans);
return 0;
}
Submission Info
| Submission Time |
|
| Task |
F - Fuel Round Trip |
| User |
WUSICHENG |
| Language |
C++ 20 (gcc 12.2) |
| Score |
550 |
| Code Size |
2721 Byte |
| Status |
AC |
| Exec Time |
809 ms |
| Memory |
663296 KiB |
Compile Error
Main.cpp: In function ‘int main()’:
Main.cpp:30:10: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
30 | scanf("%d%d",&n,&h);
| ~~~~~^~~~~~~~~~~~~~
Main.cpp:31:17: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
31 | E(i, n)scanf("%d",x+i);
| ~~~~~^~~~~~~~~~
Main.cpp:32:17: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
32 | E(i, n)scanf("%d%d",p+i,f+i);
| ~~~~~^~~~~~~~~~~~~~~~
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
550 / 550 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
sample00.txt, sample01.txt, sample02.txt |
| All |
sample00.txt, sample01.txt, sample02.txt, testcase00.txt, testcase01.txt, testcase02.txt, testcase03.txt, testcase04.txt, testcase05.txt, testcase06.txt, testcase07.txt, testcase08.txt, testcase09.txt, testcase10.txt, testcase11.txt, testcase12.txt, testcase13.txt, testcase14.txt, testcase15.txt, testcase16.txt, testcase17.txt, testcase18.txt, testcase19.txt, testcase20.txt, testcase21.txt, testcase22.txt, testcase23.txt, testcase24.txt, testcase25.txt, testcase26.txt, testcase27.txt, testcase28.txt, testcase29.txt, testcase30.txt, testcase31.txt, testcase32.txt, testcase33.txt |
| Case Name |
Status |
Exec Time |
Memory |
| sample00.txt |
AC |
1 ms |
1892 KiB |
| sample01.txt |
AC |
0 ms |
1620 KiB |
| sample02.txt |
AC |
1 ms |
2244 KiB |
| testcase00.txt |
AC |
4 ms |
5948 KiB |
| testcase01.txt |
AC |
12 ms |
12628 KiB |
| testcase02.txt |
AC |
715 ms |
661040 KiB |
| testcase03.txt |
AC |
717 ms |
661112 KiB |
| testcase04.txt |
AC |
276 ms |
328960 KiB |
| testcase05.txt |
AC |
659 ms |
586456 KiB |
| testcase06.txt |
AC |
765 ms |
628156 KiB |
| testcase07.txt |
AC |
805 ms |
663208 KiB |
| testcase08.txt |
AC |
809 ms |
658920 KiB |
| testcase09.txt |
AC |
33 ms |
60700 KiB |
| testcase10.txt |
AC |
599 ms |
546660 KiB |
| testcase11.txt |
AC |
798 ms |
663228 KiB |
| testcase12.txt |
AC |
721 ms |
597312 KiB |
| testcase13.txt |
AC |
809 ms |
663204 KiB |
| testcase14.txt |
AC |
698 ms |
605180 KiB |
| testcase15.txt |
AC |
605 ms |
564424 KiB |
| testcase16.txt |
AC |
754 ms |
636916 KiB |
| testcase17.txt |
AC |
784 ms |
663184 KiB |
| testcase18.txt |
AC |
746 ms |
628072 KiB |
| testcase19.txt |
AC |
47 ms |
80764 KiB |
| testcase20.txt |
AC |
671 ms |
602548 KiB |
| testcase21.txt |
AC |
775 ms |
663296 KiB |
| testcase22.txt |
AC |
704 ms |
606132 KiB |
| testcase23.txt |
AC |
776 ms |
663256 KiB |
| testcase24.txt |
AC |
430 ms |
434132 KiB |
| testcase25.txt |
AC |
214 ms |
278888 KiB |
| testcase26.txt |
AC |
764 ms |
630232 KiB |
| testcase27.txt |
AC |
805 ms |
663188 KiB |
| testcase28.txt |
AC |
770 ms |
628032 KiB |
| testcase29.txt |
AC |
794 ms |
663208 KiB |
| testcase30.txt |
AC |
375 ms |
415528 KiB |
| testcase31.txt |
AC |
794 ms |
663268 KiB |
| testcase32.txt |
AC |
782 ms |
656552 KiB |
| testcase33.txt |
AC |
802 ms |
663236 KiB |