#include<bits/stdc++.h>usingnamespace std;#define mod 1000000007typedeflonglong ll;constint N =2e6+5;
ll pow_mod(ll a, ll n, ll m){///aµÄn´Î·½Ä£mif(n ==0)return1;
ll x =pow_mod(a, n/2, m);
ll ans = x * x % m;if(n %2==1) ans = ans *a % m;return ans;}intgcd(int a,int b){return a%b==0?b:gcd(b,a%b);}intmi(int a,int b){return a<b?a:b;}intma(int a,int b){return a>b?a:b;}intabs(int a){return a>0?a:-a;}char s[N];int num[N];intmain(){int q;scanf("%d",&q);while(q--){int n;scanf("%d",&n);scanf("%s", s +1);int cnt=0;for(int i =1; i <= n ; i++){if(s[i]=='0'||s[i]=='1') cnt++;
num[i]= cnt;}int ans =0, res =0;for(int i =1; i <= n;++ i){if(s[i]=='0'){if(res>0){++ ans;-- res;}}elseif(s[i]=='1'){///1的时候是钓鱼合适做饵if(res > cnt - num[i]){++ ans;-- res;}else res++;}elseif(s[i]=='2'){++ ans;}else{++ ans;//++ res;}}printf("%d\n", ans);}return0;}
B 数据结构,模拟指针位置即可
#include<bits/stdc++.h>usingnamespace std;#define pb push_back#define mp make_pair#define fi first#define se secondtypedeflonglong ll;typedefunsignedlonglong ull;typedef pair<int,int> PII;typedef pair<ll, ll> pll;constint mod =1e9+7;constint N =2e6+10;constint INF =0x3f3f3f3f;
ll qpow(ll base, ll n){ll ans =1;while(n){if(n &1) ans = ans * base % mod; base = base * base % mod; n >>=1;}return ans;}
ll gcd(ll a, ll b){return b ?gcd(b, a % b): a;}char s[N];intmain(){scanf("%s", s);int n =strlen(s);int q;
cin >> q;int p =0;while(q --){char op[2];int x;scanf("%s %d",op,&x);if(op[0]=='A'){printf("%c\n", s[(p + x -1+ n)% n]);}else{///左边x个移到右边相当于指针加X,右边移到左边同理
p =(p + x + n)% n;//cout << p << endl;}}return0;}
C 计算几何,判断顺时针逆时针
#include<bits/stdc++.h>usingnamespace std;#define eps 1e-1typedeflonglong ll;constint N =2e6+5;doublebs(double a){return a>0?a:-a;}struct node{double x,y;}p[25];doubledis(node a,node b){double tem =(a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y);// printf("%.4f %.4f %.4f %.4f \n",a.x,a.y,b.x,b.y);//printf("%.4f\n",tem);return tem;}intmain(){int q;scanf("%d",&q);while(q--){int pp=1,ld;///逆时针for(int i =1; i <=20; i++)scanf("%lf %lf",&p[i].x,&p[i].y);
p[0].x=p[20].x;p[0].y=p[20].y;
p[21].x=p[1].x;p[21].y=p[1].y;
p[22].x=p[2].x;p[22].y=p[2].y;for(int i =1; i <=20;i++){if(bs(dis(p[i],p[i-1])-81)<= eps){
ld = i;break;}}if((p[ld+1].x - p[ld].x)*(p[ld+2].y - p[ld].y)-(p[ld+2].x - p[ld].x)*(p[ld+1].y-p[ld].y)<0)
pp =0;/// ("顺时针") ;//printf("%d\n",pp);//printf("%d\n",ld);//printf("%f\n",dis(p[20],p[19]));if(ld>1){if(pp){if(bs(dis(p[ld-1],p[ld-2])-36.0)<= eps)printf("right\n");elseprintf("left\n");}else{///顺时针if(bs(dis(p[ld],p[ld+1])-36.0)<= eps)printf("right\n");elseprintf("left\n");}}else{if(pp){//printf("???");if(bs(dis(p[20],p[19])-36.0)<= eps)printf("right\n");elseprintf("left\n");}else{///顺时针if(bs(dis(p[1],p[2])-36.0)<= eps)printf("right\n");elseprintf("left\n");}}}return0;}
A 贪心#include<bits/stdc++.h>using namespace std;#define mod 1000000007typedef long long ll;const int N = 2e6+5;ll pow_mod(ll a, ll n, ll m){///aµÄn´Î·½Ä£m if(n == 0) return 1; ll x = pow_mod(a, n/2, m); ll ans = x * x % m; if(n