本文共 1462 字,大约阅读时间需要 4 分钟。
【...】
今天比赛有点简单hhh有点开心
【A:出题】
【题解】
显然,有解的充要条件为 6*m≤n≤9*m 。若有解,优先把m道题分给分值为7 8 9的题,那么什么时候分给6呢,当然是连7都不够小的时候咯,想想鸡兔同笼问题,就明白了。
【代码】
typedef long long ll;int main(){ ll n,m; cin>>n>>m; if(n>=6*m&&n<=9*m) { if(7*m-n>0) printf("%lld\n",7*m-n); else printf("0\n"); } else puts("jgzjgzjgz"); return 0;}
【B:煤气灶】
【题解】
等差数列求和..上限都给了,直接二分就行。避免爆long long于是我直接都定义long long了哈哈啊哈。
【代码】
typedef long long ll;ll n,m,d,x;int check(ll x){ if(((n+n+d*(x-1))*x/2)>=m) return 1; return 0;}int main(){ cin>>n>>m>>d>>x; ll l=1,r=x; ll a=n-d,ans; while(l<=r) { ll mid=(l+r)/2; if(check(mid)) { ans=mid; r=mid-1; } else l=mid+1; } cout<<
【C:项链】
【题解】
排个序优先染最喜欢即bi较大的颜色即可,注意可能染不完所有的珠子。
【代码】
typedef long long ll;struct p{ ll a,b;}f[100010];bool cmp(p x,p y){ return x.b>y.b;}int main(){ int n,m; cin>>n>>m; for(int i=0;i>f[i].a; for(int i=0;i >f[i].b; sort(f,f+m,cmp); ll ans=0; int pos=0; while(n&&pos =f[pos].a) n-=f[pos].a,ans+=f[pos].a*f[pos].b; else ans+=f[pos].b*n,n=0; pos++; //cout< <
【D:美食】
【题解】
从前往后模拟(贪心?)即可,注意食物大小可能为0。不能优先预处理把a[i]吃成a[i]%2,因为会出现1 2 1的情况。
【代码】
typedef long long ll;const int maxn=1e5+5;const int inf=0x3f3f3f3f;int main(){ int n; ll a[maxn]; cin>>n; for(int i=0;i>a[i]; ll ans=a[0]/2;a[0]=a[0]%2; for(int i=1;i
转载地址:http://vfben.baihongyu.com/