分析:单词接龙,傻逼题
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include "iostream" 2 #include "cstdio" 3 #include "cstring" 4 #include "string" 5 using namespace std; 6 string a,b,c; 7 int main() 8 { 9 cin>>a>>b>>c; 10 int lena=a.length(); 11 int lenb=b.length(); 12 if(b[0]==a[lena-1]&&(c[0]==b[lenb-1])) 13 cout<<"YES"<<endl; 14 else 15 cout<<"NO"<<endl; 16 }
分析:其实就是判断a的各个倍数是否满足,如果找到有循环不满足的,直接为NO,有满足为YES
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include "iostream" 2 #include "cstdio" 3 #include "map" 4 using namespace std; 5 int a,b,c; 6 int main() 7 { 8 cin>>a>>b>>c; 9 int flag=0; 10 map<int,int>mp; 11 for(int i=1;;i++) 12 { 13 int t=a*i; 14 int mod=t%b; 15 if(mod==(c%b)){ 16 break; 17 } 18 if(mp[mod]){ 19 flag=1; break; 20 } 21 mp[mod]=1; 22 } 23 if(!flag) 24 cout<<"YES"<<endl; 25 else 26 cout<<"NO"<<endl; 27 }
分析:找到t[i+1]>t[i]+T的地方进行计算即可
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include "iostream" 2 #include "cstdio" 3 #include "cstring" 4 #include "string" 5 #include "climits" 6 using namespace std; 7 const int maxn=200000+10; 8 long long t[maxn]; 9 int n; 10 long long T; 11 int main() 12 { 13 cin>>n>>T; 14 for(int i=0;i<=n;i++) 15 t[i]=LONG_MAX; 16 for(int i=0;i<n;i++) 17 scanf("%lld",&t[i]); 18 int i=0; 19 long long ans=0; 20 while(i<n){ 21 int pre=i; 22 while(t[i+1]<t[i]+T) i++; 23 ans+=t[i]+T-t[pre]; 24 i++; 25 } 26 cout<<ans<<endl; 27 }