有趣的数——构造符合条件的数
给你一个区间,问有多少个数符合每一位中,只有一个数字和其他数字不同,也就是其他数字都相同,有且只有一个异类;
数据范围是1e16;
因为只考虑数量而不用管大小;
只要0到9枚举出来就好了;
#include<cstdio> #include<map> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; map<ll,int>mp; ll l,r; int a[20]; int check(int x,int len) { ll sum=0; for(int i=1;i<=len;i++) { if(a[i]==-1) a[i]=x; sum=sum*10+a[i]; } if(sum>=l&&sum<=r) { if(!mp[sum]) { mp[sum]=1; return 1; } //printf("%d\n",sum); return 0; } else return 0; } int ans; int main() { scanf("%lld%lld",&l,&r); for(int len=3;len<=17;len++) { for(int i=0;i<=9;i++) { for(int j=0;j<=9;j++)//单独的数 { if(i==j) continue; for(int k=1;k<=len;k++)//单独的数的位置 { memset(a,-1,sizeof(a)); if(k==1&&j==0) continue; a[k]=j; if(check(i,len)) ans++; } } } } printf("%d",ans); return 0; }
记得判重,用的map省心;
欢乐ABC——连续区间找相同的量
给你一个字符串,一个区间中A,B,C的数量如果相等,这样的区间的个数是多少,区间要连续;
数据范围1e6;
用前缀和记录ABC的个数;
如果a[j]-a[i-1]=b[j]-b[i-1],b[j]-b[i-1]=c[j]-c[i-1],即a[j]-b[j]=a[i-1]-b[i-1],b[j]-c[j]=b[i-1]-c[i-1],这样的区间i到j就是合法的;
(a[i]-b[i],b[i]-c[i])为一个元素,访问前方有多少相等的元素;
我们还可以再次转化,令A=1e7,B=-999999,C=-1;
用sum记录前缀和,再sort一遍,求相邻的星通的数;
因为排序过后,相邻的数如果相等,说明在这两个数之间A+B+C=0;也就是三个字符的数量相等;
#include<cstdio> #include<map> #include<algorithm> #include<cstring> using namespace std; const int maxn=1e6+10; char s[maxn]; int a=10000000,b=-9999999,c=-1; long long sum[maxn]; int ans; int main() { scanf("%s",s); int len=strlen(s); for(int i=0;i<len;i++) { sum[i+1]=sum[i]; if(s[i]==‘A‘) sum[i+1]+=a; else if(s[i]==‘B‘) sum[i+1]+=b; else if(s[i]==‘C‘) sum[i+1]+=c; } sort(sum,sum+len+1); int last=0; for(int i=1;i<=len;i++) { if(sum[i]==sum[i-1]) { ans+=i-last; } else last=i; } printf("%d",ans); return 0; }
打游戏
小强又双叒叕一天随手AK的ZROI的J转S模拟赛。AK完了的小强觉得OI太简单了,太没意思了,于是开始打起了更有挑战的游戏。
小强在游戏里打怪。有一次,他一下子遇到了 n 个怪物。 每个怪物有一个生命值,第 i个怪物的生命值是 hi。而小强除了生命值之外,还有一个属性是魔法值 m。
小强和怪物们依次行动。每一回合,小强先行动,然后怪物们同时行动。小强每次可以选择以下行动之一:
• 普通攻击:令某个怪物的生命值减少 1。
• 重击:消耗 1 魔法值,令某个怪物的生命值减少 2。
• 群体攻击:消耗 1 魔法值,令全体怪物的生命值减少 1。
而每个存活的怪物(生命值严格大于 0)每次会令小强的生命值减少 1。假设小强有足够的生命值来维持存活,小强想知道自己至少需要被消耗多少生命值才能击败所有怪物。
第一行为两个正整数 n 和 m。
第二行为 nn 个正整数,第 i 个数为 hi
原文地址:https://www.cnblogs.com/WHFF521/p/11523599.html