版权声明:Dream_dog专属 https://blog.csdn.net/Dog_dream/article/details/84306962
a:简单的字符串判断前一个字符是否等于后一个字符
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
string s;
cin>>n>>s;
for(int i=1;i<n;i++){
if(s[i]!=s[i-1]){
cout<<"YES"<<endl;
cout<<s[i-1]<<s[i]<<endl;
return 0;
}
}
cout<<"NO"<<endl;
return 0;
}
b:
#include<bits/stdc++.h>
using namespace std;
#define clr(a,b) memset(a,b,sizeof(a))
const int maxn=200000+5;
const int minn=100;
int main()
{
int vis[maxn];
int n;
scanf("%d",&n);
int tm;
for(int i=0;i<n;i++)
{
scanf("%d",&tm);
vis[tm]=i+1;
}
int en=0;
for(int i=0;i<n;i++)
{
scanf("%d",&tm);
printf("%d%s",(vis[tm]-en)<=0?0:(vis[tm]-en),i<n-1?" ":"");
en=max(vis[tm],en);
}
return 0;
}
c:
#include<bits/stdc++.h>
using namespace std;
//Х■иоие
#define clr(a,b) memset(a,b,sizeof(a))
const int maxn = 200000 + 5;
const int minn = 100;
int n, x, y;
int px[maxn], py[maxn];
string s;
int check(int mid)
{
int l = 1;
for (int r = mid; r <= n; r++)
{
int tx = px[l - 1] + px[n] - px[r];
int ty = py[l - 1] + py[n] - py[r];
int rx = abs(x - tx);
int ry = abs(y - ty);
if (mid >= rx + ry && (mid - (rx + ry)) % 2 == 0)
return 1;
l++;
}
return 0;
}
int main()
{
cin.tie(0); cout.tie(0);
cin >> n>>s>>x>>y;
for (int i = 0; i < n; i++)
{
px[i + 1] =px[i]+ (s[i] == 'R' ? 1 : (s[i] == 'L' ? -1 : 0));
py[i + 1] =py[i]+ (s[i] == 'U' ? 1 : (s[i] == 'D' ? -1 : 0));
}
int l = 0, r = n;
int mind;
while (l <= r)
{
mind = (l + r) >> 1;
if (check(mind))r = mind - 1;
else l = mind + 1;
}
cout << (l > n ? -1 : l) << endl;
return 0;
}
d:
#include<bits/stdc++.h>
using namespace std;
using namespace std;
//±©Á¦
#define clr(a,b) memset(a,b,sizeof(a))
#define reg register
#define il inline
typedef long long ll;
const int maxn = 200000 + 5;
const int minn = 100;
const ll inf = 0x3f3f3f3f3f3f3f;
int n;
ll t, price[maxn];
int main()
{
cin.tie(0); cout.tie(0);
cin >> n >> t;
ll tmin = inf;
for (reg int i = 0; i < n; ++i)
{
cin >> price[i]; tmin = min(tmin, price[i]);
}
ll sum = 0, ans = 0;
int s = 0;
while (t >= tmin)
{
s = sum = 0;
for(int i=0;i<n;i++)
{
if (t - sum >= price[i]) { s++; sum += price[i]; }
}
ans += (t / sum)*s;
t %= sum;
}
cout << ans << endl;
return 0;
}
e:数位DP
#include<bits/stdc++.h>
using namespace std;
//数位DP
#define clr(a,b) memset(a,b,sizeof(a))
#define reg register
#define il inline
typedef long long ll;
const int maxn = 200000 + 5;
const int minn = 100;
const int mod = 998244353;
const ll inf = 0x3f3f3f3f3f3f3f;
struct Node
{
ll si,pr;
Node(){}
Node(ll si,ll pr):si(si),pr(pr){}
}dp[22][1025];
int digit[21];
int k;
ll ppow[20];
Node dfs(int pos,int sta,bool nozero,bool limit)
{
if(pos==0){return Node(1,0);}
if(!limit&&nozero&&dp[pos][sta].si!=-1){return dp[pos][sta];}
Node ans(0,0);
Node res;
for(int i=0;i<=(limit?digit[pos]:9);++i)
{
if(__builtin_popcount(sta|(1<<i))>k){continue;}
if(!nozero&&i==0){res=dfs(pos-1,sta,nozero,limit&&i>=digit[pos]);}
else {res=dfs(pos-1,sta|(1<<i),nozero||i>0,limit&&i>=digit[pos]);}
ans.si=(ans.si+res.si)%mod;
ans.pr=(ans.pr+res.pr+i*ppow[pos-1]%mod*res.si%mod)%mod;
}
if(!limit&&nozero)dp[pos][sta]=ans;
return ans;
}
ll solve(ll num)
{
int cnt=0;
while(num)
{
digit[++cnt]=num%10;
num/=10;
}
Node res=dfs(cnt,0,0,1);
return res.pr;
}
void init()
{
clr(dp,-1);
ppow[0]=1;
for(int i=1;i<=20;++i){ppow[i]=(ppow[i-1]*10)%mod;}
return ;
}
int main()
{
cin.tie(0); cout.tie(0);
ll l,r;
init();
cin>>l>>r>>k;
cout<<(solve(r)-solve(l-1)+mod)%mod<<endl;
return 0;
}