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

中小企业建网站百度app下载安装官方免费版

中小企业建网站,百度app下载安装官方免费版,企业网站建设的请示,绵阳网站建设多少钱文章目录 A Cidoai的吃饭思路code B Cidoai的听歌思路code C Cidoai的植物思路code D Cidoai的猫猫思路code E Cidoai的可乐思路code 牛客小白月赛107 A Cidoai的吃饭 思路 签到题,按题意模拟即可 code void solve(){int n,a,b,c;cin >> n >> a &g…

文章目录

  • A Cidoai的吃饭
    • 思路
    • code
  • B Cidoai的听歌
    • 思路
    • code
  • C Cidoai的植物
    • 思路
    • code
  • D Cidoai的猫猫
    • 思路
    • code
  • E Cidoai的可乐
    • 思路
    • code

牛客小白月赛107

A Cidoai的吃饭

思路

签到题,按题意模拟即可

code

void solve(){int n,a,b,c;cin >> n >> a >> b >> c;int ans=0;ans+=n/a;n%=a;ans+=n/b;n%=b;ans+=n/c;n%=c;cout << ans << endl;return ;
}

B Cidoai的听歌

思路

通过模拟不难发现,这个序列操作的次数和最终的数字跟这个序列的最小值和最大值有关
如果这个序列的最大值为mx,最小值为mn,假设最终的数字为x
那么它所需的操作次数就为 ( m x − x ) + ( x − m n ) = m x − m n (mx-x)+(x-mn)=mx-mn (mxx)+(xmn)=mxmn
既然这个数字x跟mx和mn有关,那么数字x取到这两个数的平均值显然是最优的
由于操作是先+1后-1,显然这个平均值要向上取整

code

void solve(){int n;cin >> n;for(int i=1;i<=n;++i) cin >> a[i];int mx=0,mn=inf;for(int i=1;i<=n;++i){mx=max(mx,a[i]);mn=min(mn,a[i]);}cout << mx-mn << " " << (mx+mn+1)/2 << endl;return ;
}

C Cidoai的植物

思路

考点:读题???(不是):模拟优化
这题赛时看了好久才看懂的,服啦

显然,如果纯模拟这题会超时 O ( n k ) > 1 e 8 O(nk)>1e8 O(nk)>1e8
那么我们就需要考虑如何优化这个 n n n
对于操作1,我们只需要将 i i i 行没有植物的数填上x
那么我们就可以用树的思想去优化,即用一个动态二维数组e,让列数存储行数
如果当前动态数组 e [ i ] e[i] e[i]不为空,遍历这个数组,将x填进去,然后让 e [ i ] e[i] e[i]清空
对于操作2,我们将行数b存储列数a,即 e [ b ] . p u s h _ b a c k ( a ) e[b].push\_back(a) e[b].push_back(a)

这样就可以将时间复杂度压缩成 O ( m k ) O(mk) O(mk),可以过这道题了

code

const int N=2e4+5;
unsigned n,m,k,seed;
int p[N][210];
vector<int> e[210];
unsigned rnd(){int ret=seed;seed^=seed<<13;seed^=seed>>17;seed^=seed<<5;return ret;
}
void solve(){cin >> n >> m >> k >> seed;for(int j=1;j<=m;++j)for(int i=1;i<=n;++i){e[j].push_back(i); }for(int t=1;t<=k;++t){int op=(rnd() % 2) + 1;if(op==1){int I=(rnd() % m) + 1;int x=(rnd() % (n*m)) + 1;if(e[I].empty()) continue;for(auto i : e[I]){p[i][I]=x;}e[I].clear();}else{int a=(rnd() % n) + 1;int b=(rnd() % m) + 1;p[a][b]=0;e[b].push_back(a);}}int ans=0;for(int i=1;i<=n;++i)for(int j=1;j<=m;++j){ans^=p[i][j]*((i-1)*m+j);}cout << ans << endl;return ;
}

D Cidoai的猫猫

思路

对于超过 k k k 的连续子串,我们让这个子串的个数变为 k k k
接着考虑如何将 O ( n 2 ) O(n^2) O(n2) 优化成 O ( n ) O(n) O(n)
我们可以倒着遍历,如果当前下标为 i i i 时,有连续子串的长度为 i i i
那么我们用一个sum累加这个连续子串 i i i,在用一个num统计可变的子串个数
显然对于每一个 i i i来说,它最小长度为 s u m − n u m ∗ i sum-num*i sumnumi
最后按题意求出ans即可

code

const int N=5e6+5;
int cnt[N],ans[N];
void solve(){int n;cin >> n;string s;cin >> s;s+=' ';int len=1;for(int i=1;i<=n;++i){if(s[i]==s[i-1]) len++;else{cnt[len]++;len=1;}}int sum=0,num=0;for(int i=1;i<=n;++i) ans[i]=n;for(int i=n;i>=1;--i){ans[i]-=sum-num*i;sum+=cnt[i]*i;num+=cnt[i];}int res=0;for(int i=1;i<=n;++i){res^=i*ans[i];}cout << res << endl;return ;
}

E Cidoai的可乐

思路

这题非常的简单(赛时根本没看QAQ)
每个节点的度就是它拥有的子树个数
对于 n n n个节点,我们只需要连 n − 1 n-1 n1 条线即可
我们每次挑选一个节点,显然每次用权值最小的节点来建树是最优的
将权值从小到大排序,将权值最小的节点的度全填满,接着连权值第二小的节点,循环往复,直到连接 n − 1 n-1 n1条线
最后统计一个它的权值即可

code

PII a[N];
bool cmp(PII x,PII y){return x.fi<y.fi;
}
void solve(){int n;cin >> n;for(int i=1;i<=n;++i) cin >> a[i].fi;for(int i=1;i<=n;++i) cin >> a[i].se;sort(a+1,a+1+n,cmp);int ans=0,k=n-1;for(int i=1;i<n;++i){if(a[i].se<k){ans+=a[i].fi*a[i].se;k-=a[i].se;}else{ans+=k*a[i].fi;break;}}cout << ans << endl;return ;
}
http://www.tj-hxxt.cn/news/98128.html

相关文章:

  • 做网站 什么语言今日头条重大消息
  • html做音乐网站苏州首页关键词优化
  • 晚上睡不着正能量网站今日新闻头条10条
  • 山东网站集约化建设今日头条站长平台
  • 空压机网站开发公司谷歌seo需要做什么的
  • 网站如何改首页模块网络推广的公司是骗局吗
  • 做免费网站教程国vs怎么进行网络营销
  • 开发利用水资源优化方案怎么写
  • 西宁网站制作费用是多少钱线上营销课程
  • 做网站需要什么代码在线客服
  • 建设网站怎样赚钱网站优化排名优化
  • 广东网页制作推广北京自动seo
  • 手机网站图片轮播经典品牌推广文案
  • 国外的外贸网站seo人员的职责
  • 仿站小工具怎么用个人博客模板
  • 自动化设计网站建设网络推广哪个平台最好
  • 广州做营销型网站哪家好seo人工智能
  • 重庆九龙坡营销型网站建设公司推荐百度推广助手电脑版
  • wordpress分页插件长沙seo网站优化公司
  • 任丘市网站建设价格酒店营销推广方案
  • 建设银行网站多少seo网络优化公司
  • 免费自己做网站软件软文营销写作技巧有哪些?
  • 做优化网站哪个公司好哈尔滨百度搜索排名优化
  • 政府网站建设经验b2b是什么意思
  • 苏州手机网站制作营销策略案例
  • 做自己的网站如何赚钱的吉林网络公司
  • php开发网站 用java做后台泉州百度网络推广
  • 江门网站设计制作市场营销方案怎么写
  • 合肥建设学校官方网站搜索百度下载安装
  • 广州中小企业网站制作网站如何快速收录