A、Hotelier
简单模拟
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<iostream> 2 #include<sstream> 3 #include<fstream> 4 #include<algorithm> 5 #include<cstring> 6 #include<iomanip> 7 #include<cstdlib> 8 #include<cctype> 9 #include<vector> 10 #include<string> 11 #include<cmath> 12 #include<ctime> 13 #include<stack> 14 #include<queue> 15 #include<map> 16 #include<set> 17 #define mem(a,b) memset(a,b,sizeof(a)) 18 #define random(a,b) (rand()%(b-a+1)+a) 19 #define ll long long 20 #define ull unsigned long long 21 #define e 2.71828182 22 #define Pi acos(-1.0) 23 #define ls(rt) (rt<<1) 24 #define rs(rt) (rt<<1|1) 25 #define lowbit(x) (x&(-x)) 26 using namespace std; 27 int read() 28 { 29 int s=1,x=0; 30 char ch=getchar(); 31 while(!isdigit(ch)) {if(ch=='-') s=-1;ch=getchar();} 32 while(isdigit(ch)) {x=10*x+ch-'0';ch=getchar();} 33 return x*s; 34 } 35 int main() 36 { 37 int n=read(); 38 vector<int> room(10,0); 39 string str;cin>>str; 40 for(int i=0;i<n;++i) 41 { 42 43 if(str[i]=='L') 44 *find(room.begin(),room.end(),0)=1; 45 else if(str[i]=='R') 46 *find(room.rbegin(),room.rend(),0)=1; 47 else 48 room[str[i]-'0']=0; 49 } 50 for(int i=0;i<10;++i) 51 cout<<room[i]; 52 }
包的容积是无限的话就很好做,存砖块存的越多越好呗,能存就存,用的时候不够就No。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<iostream> 2 #include<sstream> 3 #include<fstream> 4 #include<algorithm> 5 #include<cstring> 6 #include<iomanip> 7 #include<cstdlib> 8 #include<cctype> 9 #include<vector> 10 #include<string> 11 #include<cmath> 12 #include<ctime> 13 #include<stack> 14 #include<queue> 15 #include<map> 16 #include<set> 17 #define mem(a,b) memset(a,b,sizeof(a)) 18 #define random(a,b) (rand()%(b-a+1)+a) 19 #define ll long long 20 #define ull unsigned long long 21 #define e 2.71828182 22 #define Pi acos(-1.0) 23 #define ls(rt) (rt<<1) 24 #define rs(rt) (rt<<1|1) 25 #define lowbit(x) (x&(-x)) 26 using namespace std; 27 const int MAXN=105; 28 int a[MAXN],n,m,k; 29 int read() 30 { 31 int s=1,x=0; 32 char ch=getchar(); 33 while(!isdigit(ch)) {if(ch=='-') s=-1;ch=getchar();} 34 while(isdigit(ch)) {x=10*x+ch-'0';ch=getchar();} 35 return x*s; 36 } 37 bool solve() 38 { 39 for(int i=2;i<=n;++i) 40 { 41 if(a[i]-a[i-1]>k) 42 { 43 if(m<a[i]-a[i-1]-k) return false; 44 else m-=(a[i]-a[i-1]-k); 45 } 46 else m+=min(0,k-a[i])+a[i-1]; 47 } 48 return true; 49 } 50 int main() 51 { 52 int t=read(); 53 while(t--) 54 { 55 n=read(),m=read(),k=read(); 56 for(int i=1;i<=n;++i) a[i]=read(); 57 if(solve()) cout<<"YES "; 58 else cout<<"NO "; 59 } 60 return 0; 61 }
找出n和m的最大公因数,对n和m进行约分后,每n个内块和m个外块是连通的。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<iostream> 2 #include<sstream> 3 #include<fstream> 4 #include<algorithm> 5 #include<cstring> 6 #include<iomanip> 7 #include<cstdlib> 8 #include<cctype> 9 #include<vector> 10 #include<string> 11 #include<cmath> 12 #include<ctime> 13 #include<stack> 14 #include<queue> 15 #include<map> 16 #include<set> 17 #define mem(a,b) memset(a,b,sizeof(a)) 18 #define random(a,b) (rand()%(b-a+1)+a) 19 #define ll long long 20 #define ull unsigned long long 21 #define e 2.71828182 22 #define Pi acos(-1.0) 23 #define ls(rt) (rt<<1) 24 #define rs(rt) (rt<<1|1) 25 #define lowbit(x) (x&(-x)) 26 using namespace std; 27 ll read() 28 { 29 ll s=1,x=0; 30 char ch=getchar(); 31 while(!isdigit(ch)) {if(ch=='-') s=-1;ch=getchar();} 32 while(isdigit(ch)) {x=10*x+ch-'0';ch=getchar();} 33 return x*s; 34 } 35 int main() 36 { 37 ll n=read(),m=read(),q=read(); 38 ll tmp=__gcd(n,m); 39 n/=tmp,m/=tmp; 40 ll x1,y1,x2,y2; 41 while(q--) 42 { 43 x1=read(),y1=read()-1,x2=read(),y2=read()-1; 44 if(x1==1) y1/=n; 45 else y1/=m; 46 if(x2==1) y2/=n; 47 else y2/=m; 48 if(y1==y2) cout<<"YES "; 49 else cout<<"NO "; 50 } 51 return 0; 52 }
较为详细地记录在了CSDN上
https://blog.csdn.net/qq_40889820/article/details/99430740
KMP的题,最近做得少,补一些题再补代码