当前位置: 首页 > news >正文

外包公司企业网站苏州好的做网站的公司哪家好

外包公司企业网站,苏州好的做网站的公司哪家好,中国建设工程机械网站,网站调用115做云播题目链接&#xff1a;Dashboard - Codeforces Round 1039 (Div. 2) - Codeforces A. Recycling Center 思路 贪心&#xff0c;我们要花费金币最少即使a[i]>c的个数最少&#xff0c;我们可以从大的开始找&#xff0c;如果从小的开始的话&#xff0c;本来有个数x<c&…

题目链接:Dashboard - Codeforces Round 1039 (Div. 2) - Codeforces

A. Recycling Center

思路

贪心,我们要花费金币最少即使a[i]>c的个数最少,我们可以从大的开始找,如果从小的开始的话,本来有个数x<=c,结果将其*2之后>c了,所以我们应该从大往小找

代码

void solve(){int n,c;cin>>n>>c;vi a(n+1);for(int i=1;i<=n;i++){cin>>a[i];}sort(a.begin()+1,a.begin()+1+n,greater<int>());int t=1;int cnt=0;for(int i=1;i<=n;i++){if(a[i]*t<=c){t*=2;}else{cnt++;}}cout<<cnt<<"\n";
}

B. Deque Process

思路

构造,我们不妨构造成a_1<a_2a_3>a_4 或者 a_1>a_2a_3<a_4

代码 

void solve(){int n;cin>>n;vi p(n+1);for(int i=1;i<=n;i++){cin>>p[i];}int l=1,r=n;int f=0;vector<char> ans;while(l<=r){if(l==r){ans.push_back('L');break;}if(f){if(p[l]>=p[r]){ans.push_back('L');ans.push_back('R');}else{ans.push_back('R');ans.push_back('L');}}else{if(p[l]>=p[r]){ans.push_back('R');ans.push_back('L');}else{ans.push_back('L');ans.push_back('R');}}f=(f+1)%2;l++;r--;}for(auto x:ans){cout<<x;}cout<<"\n";
}

C. Leftmost Below

思路

自己手搓几个样例就能很容易发现,就拿样例3来说,40 60 90

刚开始是0 0 0 贪心地将其变成 40 30 0 -> 40 60 0 -> 40 60 40 到现在我们下一步要将a_3加50,但是50>=40所以我们一定会加到第一个40上面去

最后我们发现,只要b[i]-前面的最小值>=前面的最小值,这样是可以的,否则不行

代码

void solve(){int n;cin>>n;vi b(n+1);vi mn(n+1,inf);for(int i=1;i<=n;i++){cin>>b[i];mn[i]=min(mn[i-1],b[i]);}for(int i=1;i<=n;i++){if(b[i]-mn[i-1]<mn[i-1]){continue;}else{cout<<"NO\n";return;}}cout<<"YES\n";
}

D. Sum of LDS

思路

如果排列是递减的,那么它的子数组的最长递减子序列的长度和为\frac{n*(n-1)*(n-2)}{6}

那么现在考虑当前的排列如果出现p[i]<p[i+1]那么他对其的贡献便是-(i+1)*(n-1-i)

最后统计一下答案即可

代码

void solve(){int n;cin >> n;vector<int> p(n);for (int i = 0; i < n; ++i) {cin >> p[i];}int A = n * (n + 1) * (n + 2) / 6;int B = 0;for (int i = 0; i < n - 1; ++i) {if (p[i] < p[i + 1]) {B += (i + 1) * (n - 1 - i);}}cout << A - B << '\n';
}

E1. Submedians (Easy Version)

思路

判断一个数x是否为数组a的中值,可以将用big数组表示 if a[i]>=x big[i]=1 else big[i]=-1

同理small数组表示 if a[i]<=x small[i]=1 else small[i]=-1

x是此数组的中值要满足\sum big[i]>=0\sum small[i]>=0

对于此题来说我们要找到中值的最大值,我们可以将small数组给忽略掉,这样我们就能够进行二分查找,对于x来说如果此区间内\sum big[i]>=0那么一定存在比x大的中值

  • 用前缀和优化
  • i从k开始保证最小长度为k
  • 用mn维护前缀最小,贪心

代码

#include<bits/stdc++.h>
using namespace std;#define vcoistnt ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 
#define int long long
#define vi vector<int>
#define vb vector<bool>
typedef pair<int,int> pll;const int N=2e5+10;
const int inf=1e18;
const int mod=998244353;void solve(){int n,k;cin>>n>>k;vi a(n+1);for(int i=1;i<=n;i++){cin>>a[i];}int ans=-1,ansl=-1,ansr=-1;auto check=[&](int x)->bool{vector<int> pre(n+1);for(int i=1;i<=n;i++){pre[i]=pre[i-1]+(a[i]>=x?1:-1);}int mn=inf,l=-1;for(int i=k;i<=n;i++){if(mn>pre[i-k]){mn=pre[i-k];l=i-k+1;}if(pre[i]-mn>=0){ans=x;ansl=l;ansr=i;return true;}}return false;};int l=1,r=n;while(l<=r){int mid=l+r>>1;if(check(mid)){l=mid+1;}else{r=mid-1;}}cout<<ans<<" "<<ansl<<" "<<ansr<<"\n";
}
signed main() {vcoistntcout<<fixed<<setprecision(2);int _=1;cin>>_;while(_--) solve();return 0;
}

http://www.dtcms.com/a/539177.html

相关文章:

  • 网站兼容手机浏览器随便玩玩在线制作网站
  • 一个公司做2个产品网站怎么做的如何自己学建设网站
  • 北京朝阳网站建设公司淮安做网站建设的网络公司
  • 石家庄制作网站深建市住房和城乡建设局网站
  • 运营商网站登录注册网站换服务器怎么做备份
  • wordpress充值提现seo做得比较好的企业案例
  • 网站怎么做翻页新年祝福语在线制作网站
  • 用ps软件做ppt模板下载网站自己编程做网站
  • 旅游网站建设的结论怎样建立俄罗斯网站
  • 营销型网站设计流程教做甜品的网站
  • 网站建设教程百度云深圳人力资源网求职
  • wordpress 图片标签佛山百度关键词seo外包
  • 微信与与网站建设wordpress影视主题52破解
  • 常德经开区网站用户体验好的网站
  • 温州网站设计只找亿企邦h5网站怎么做
  • 个人网站备案需要哪些资料网站建设交互效果
  • 做100个网站免备案域名购买平台
  • 太原市免费网站建设一元夺宝网站开发
  • 应用最广网站建设技术我的个人博客
  • 招聘桂林网站推广维护建设用什么软件制作网站
  • 商城网站开发视频湖北什么是网络营销
  • 池州最好的网站建设做网站大概需要几个人
  • 哈尔滨制作网站工作室网络营销简介
  • 全网响应式网站wordpress+外观+权限
  • 公司网站如何做的美丽信息流投放公司
  • 要加强分院网站建设怎么搞到网站
  • ppt的网站导航栏怎么做的网易搜索引擎入口
  • 自己做网站运营新手怎么注册自媒体账号
  • 自己怎么做网站模块推广网站怎么建设
  • 管理系统的组成seo网络培训学校