NC14628. ChiMu need water
描述
Inori被抓走后,ChiMu决定去救她。但是一路上遇到了许多困难。目前遇到的问题就是,ChiMu不知道他能否走出这片沙漠。
输入描述
第一行为两个整数n,m。(1 <= n, m <= 100)
n表示需要穿过的沙漠的长度由0—n,m为可以补充水量的绿洲数量。
接下来m行输入,每行输入两个整数ai,bi。
分别表示在ai点上可以补充bi单位的水。
输出描述
如果ChiMu能穿过沙漠则输出
“Yse”
否则输出
"No"
示例1
输入:
10 4 4 7 8 6 8 1 7 8
输出:
Yes
说明:
注意,水量为0立即死亡。C++14(g++5.4) 解法, 执行用时: 3ms, 内存消耗: 352K, 提交时间: 2018-10-27 13:49:17
#include<iostream> #include<cstdio> #include<cstring> using namespace std; typedef struct ppo{ int a,b; }xyq; int main(){ int n,m,i,j,water=10; xyq pp[1000]; cin>>n>>m; for(i=0;i<m;i++){ cin>>pp[i].a>>pp[i].b; } for(i=0;i<=n;i++,water--){ if(water==0){ cout<<"No"<<endl; break; } for(j=0;j<m;j++){ if(i==pp[j].a){ water+=pp[j].b; } } } if(i==n+1) cout<<"Yes"<<endl; return 0; }
Java(javac 1.8) 解法, 执行用时: 43ms, 内存消耗: 11084K, 提交时间: 2020-06-29 11:36:10
import java.util.*; public class Main{ public static void main(String[] args) { Scanner i=new Scanner(System.in); int n=i.nextInt(),m=i.nextInt(),s=10,b; int [] a=new int[100000]; for(b=0;b<m;b++) a[i.nextInt()]=+i.nextInt(); for(b=0;b<=n;b++) { s=s-1; if(s==0) break; s+=a[b]; } if(b==n+1) System.out.println("Yes"); else System.out.println("No"); } }
C 解法, 执行用时: 2ms, 内存消耗: 348K, 提交时间: 2022-11-25 09:29:41
#include <stdio.h> #define N 105 int main(){ int a[N]={0},n,m,i,t,water=10; scanf("%d%d",&n,&m); for(i=0;i<m;i++) { scanf("%d",&t); scanf("%d",&a[t]); } for(i=1;i<=n;i++){ water--; if(water==0) break; water+=a[i]; } if(i<=n) printf("No"); else printf("Yes"); return 0; }
C++11(clang++ 3.9) 解法, 执行用时: 3ms, 内存消耗: 396K, 提交时间: 2020-08-15 20:20:14
#include<bits/stdc++.h> using namespace std; int main(){ int n,m,x,y,v[200]; memset(v,0,sizeof(v)); cin>>n>>m; for(int i=1;i<=m;i++){ cin>>x>>y; v[x]=v[x]+y; } int b=10; for(int i=0;i<=n;i++){ b--; if(b<=0){ cout<<"No"<<endl; break; } b=b+v[i]; } if(b>0) cout<<"Yes"<<endl; return 0; }