Blow up the Enemy
#include <bits/stdc++.h> #define rep(i,a,b) for(int i=a;i<b;i++) #define T ll t ;scanf("%lld",&t);while(t--) using namespace std ; typedef long long ll; typedef unsigned long long ull; const ll maxn=1e5+10; struct node { ll attack,changetime;//attach表示***力,changetime表示换弹时间,killtime表示最终把爸爸杀死的时间 ll killtime; }gun[maxn]; bool cmp(node a,node b)//杀死的时间越短,则表示该武器的胜率越高 { return a.killtime<b.killtime; } int main() { T { ll n; scanf("%lld",&n); for(ll i=0;i<n;i++) { scanf("%lld%lld",&gun[i].attack,&gun[i].changetime); ll cnt=0; cnt=100/gun[i].attack; if(100%gun[i].attack!=0) cnt++; gun[i].killtime=(cnt-1)*gun[i].changetime;//减1的原因在于你最后把背包杀死后,并不需要再换弹 } sort(gun,gun+n,cmp);//按照杀死时间进行升序排序 double s=0; ll cnt_same=0; for(ll i=0;i<n;i++) { if(gun[0].killtime==gun[i].killtime)//相同胜率且胜率最高的武器每次加0.5,否则加1 s+=0.5; else s+=1; } cout<<s/n<<endl; } }
Equal Sentences
(找规律)
类似斐波那契,存入所有字符串,暴力搜索一遍,如果前一个字符串和当前的这个字符串相同,那么就把之前所累加的数赋值给当前这个数,存在f数组里面;若前后两个字符串不相同,则为f[i]=(f[i-1]+f[i-2]+1)并且每次取模。
#include<bits/stdc++.h> using namespace std; typedef long long ll; const ll maxn=1e5+10; const ll mod=1e9+7; string s[maxn]; ll f[maxn]; ll n; #define IO ios::sync_with_stdio(false), cin.tie(0) #define T int t ;cin >> t;while(t--) int main() { T { cin>>n; memset(f,0,sizeof f); for(ll i=1;i<=n;i++) { cin>>s[i]; } for(ll i=2;i<=n;i++) { if(s[i]==s[i-1]) f[i]=f[i-1]; else f[i]=(f[i-1]+f[i-2]+1)%mod; } cout<<f[n]+1<<endl; } }
Kindergarten Physics
(签到题)
仅输出变量d即可
这里注意一个地方"%*d",即跳过该变量,忽略这个变量
#include<bits/stdc++.h> using namespace std; int mian() { int a,b,d,t; scanf("%*d%*d%d%*d",&d ); printf("%d\n",d); }