Codeforces Round #737 (Div. 2) -16

2024-03-29 08:58
文章标签 16 codeforces round div 737

本文主要是介绍Codeforces Round #737 (Div. 2) -16,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

又是不会数数的一天
10分钟过ab,直接下班

A 题意

n个数,分成两组,使他们的平均数加和最大

A 思路

贪心,最大的数独自一组,剩下的分组
不会证

A 代码
#include<cstdio>
#include<iostream>
#include<set>
#include<iomanip>
#include<map>
#include<unordered_map>
#include<string>
#include<queue>
#include<stack>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib> 
#include<chrono>
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define endl "\n"
#define int long long
//#define double long double
using namespace std;typedef long long ll;const int maxn=400505;const int inf=0x3f3f3f3f;int n,m,k;void YES(){cout<<"YES"<<endl;}void NO(){cout<<"NO"<<endl;}int a[maxn];void solve(){cin>>n;m=-inf;int c1=0,c2=0;for(int i=1;i<=n;i++){cin>>a[i];m=max(m,a[i]);c1+=a[i];}c1-=m,c2+=m;double d=(c1-0.0)/(n-1.0);cout<<fixed<<setprecision(9)<<d+c2<<endl;}signed main(){IOS#ifndef ONLINE_JUDGEfreopen("IO\\in.txt","r",stdin);freopen("IO\\out.txt","w",stdout);#endifint tn=1;cin>>tn;while(tn--){solve();}} 
B 题意

n个数作如下操作一次
分成k组连续数,任意排列k组的先后,重新拼接
问是否可以排序

B 思路

显然,分到同一组的元素先后关系就确定了
因此我们离散化一下,数一下有多少个递增且公差为1的连续段,若个数小于等于k即可分组

B 代码
#include<cstdio>
#include<iostream>
#include<set>
#include<iomanip>
#include<map>
#include<unordered_map>
#include<string>
#include<queue>
#include<stack>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib> 
#include<chrono>
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define endl "\n"
//#define int long long
//#define double long double
using namespace std;typedef long long ll;const int maxn=400505;const int inf=0x3f3f3f3f;int n,m,k;int a[maxn],b[maxn];void YES(){cout<<"YES"<<endl;}void NO(){cout<<"NO"<<endl;}void solve(){cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i];b[i]=a[i];}sort(b+1,b+1+n);int len=unique(b+1,b+n+1)-b-1;for(int i=1;i<=n;i++){a[i]=lower_bound(b+1,b+len+1,a[i])-b;} int cnt=0;int pos=1;while(pos<=n){while(a[pos]==a[pos+1]-1){pos++;}cnt++;pos++;}//cout<<cnt<<endl;if(cnt<=k)	YES();else		NO();}signed main(){IOS#ifndef ONLINE_JUDGEfreopen("IO\\in.txt","r",stdin);freopen("IO\\out.txt","w",stdout);#endifint tn=1;cin>>tn;while(tn--){solve();}} 
C 题意

n个数,每个数小于2^k,问n个数按位与结果大于按位异或的方案数

C 思路

奇偶分类
dp[i]代表n个数,使用后i位构造的方案数

当n为奇数时,容易发现,对于最终两个答案的每一位,只能相等。因为若按位与为1,奇数个,按位异或也是1,若按位与为0,为了让答案更大,按位异或也需要是0。
因此答案分成两部分,一部分是n个数i全为1,这种情况只有1种,一部分是n个数有偶数个i位为1,这个可以预处理出来,我们设为x。那么转移就是dp[i]=(x+1)*dp[i-1]

当n为偶数时,如果按位与结果为1,按位异或结果一定是0,这种情况剩下i-1位随便取都可以,那么方案就是2^(i-1) ^ n,设为y。如果按位与结果为0,那么按位异或答案也一定要是0,同样也是n个数有偶数个i位为1,同样设为x。那么转移就是dp[i]=dp[i-1]*x+y

C 代码
#include<cstdio>
#include<iostream>
#include<set>
#include<iomanip>
#include<map>
#include<unordered_map>
#include<string>
#include<queue>
#include<stack>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<cstdlib> 
#include<chrono>
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define endl "\n"
#define int long long
//#define double long double
using namespace std;typedef long long ll;const int maxn=200505;const int inf=0x3f3f3f3f;const int mod=1000000007;int n,m,k;void YES(){cout<<"YES"<<endl;}void NO(){cout<<"NO"<<endl;}ll binpow(ll a,ll b){a%=mod;ll res = 1;while(b>0){if(b&1)res=res*a%mod;a=a*a%mod;b>>=1;}return res%mod;}int dp[maxn];int pow2[maxn];int ta[maxn];int pre[maxn];int rev[maxn];void solve(){cin>>n>>k;for(int i=1;i<=n/2;i++){pre[i]=(ta[n]*rev[2*i])%mod*rev[n-2*i]%mod;pre[i]=(pre[i-1]+pre[i])%mod;}dp[0]=1;if(n%2==0){for(int i=1;i<=k;i++)dp[i]=(binpow(pow2[i-1],n)+(dp[i-1]*pre[n/2-1])%mod)%mod;}else{for(int i=1;i<=k;i++)dp[i]=(dp[i-1]+(dp[i-1]*pre[n/2])%mod)%mod;}cout<<dp[k]<<endl;}signed main(){IOS#ifndef ONLINE_JUDGEfreopen("IO\\in.txt","r",stdin);freopen("IO\\out.txt","w",stdout);#endifint tn=1;cin>>tn;pow2[0]=1,ta[0]=1,pre[0]=1;for(int i=1;i<maxn;i++){pow2[i]=(pow2[i-1]*2)%mod;ta[i]=(i*ta[i-1])%mod;rev[i]=binpow(ta[i],mod-2);}while(tn--){solve();}} 

D待补

D 题意
D 思路
D 代码
在这里插入代码片

这篇关于Codeforces Round #737 (Div. 2) -16的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/858168

相关文章

Codeforces Round #240 (Div. 2) E分治算法探究1

Codeforces Round #240 (Div. 2) E  http://codeforces.com/contest/415/problem/E 2^n个数,每次操作将其分成2^q份,对于每一份内部的数进行翻转(逆序),每次操作完后输出操作后新序列的逆序对数。 图一:  划分子问题。 图二: 分而治之,=>  合并 。 图三: 回溯:

Codeforces Round #261 (Div. 2)小记

A  XX注意最后输出满足条件,我也不知道为什么写的这么长。 #define X first#define Y secondvector<pair<int , int> > a ;int can(pair<int , int> c){return -1000 <= c.X && c.X <= 1000&& -1000 <= c.Y && c.Y <= 1000 ;}int m

Codeforces Beta Round #47 C凸包 (最终写法)

题意慢慢看。 typedef long long LL ;int cmp(double x){if(fabs(x) < 1e-8) return 0 ;return x > 0 ? 1 : -1 ;}struct point{double x , y ;point(){}point(double _x , double _y):x(_x) , y(_y){}point op

Codeforces Round #113 (Div. 2) B 判断多边形是否在凸包内

题目点击打开链接 凸多边形A, 多边形B, 判断B是否严格在A内。  注意AB有重点 。  将A,B上的点合在一起求凸包,如果凸包上的点是B的某个点,则B肯定不在A内。 或者说B上的某点在凸包的边上则也说明B不严格在A里面。 这个处理有个巧妙的方法,只需在求凸包的时候, <=  改成< 也就是说凸包一条边上的所有点都重复点都记录在凸包里面了。 另外不能去重点。 int

Codeforces 482B 线段树

求是否存在这样的n个数; m次操作,每次操作就是三个数 l ,r,val          a[l] & a[l+1] &......&a[r] = val 就是区间l---r上的与的值为val 。 也就是意味着区间[L , R] 每个数要执行 | val 操作  最后判断  a[l] & a[l+1] &......&a[r] 是否= val import ja

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 + 哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新结果res,删除集合中i指针指向的元素,进入下一轮循环。 /*** @param

CSS实现DIV三角形

本文内容收集来自网络 #triangle-up {width: 0;height: 0;border-left: 50px solid transparent;border-right: 50px solid transparent;border-bottom: 100px solid red;} #triangle-down {width: 0;height: 0;bor

16 子组件和父组件之间传值

划重点 子组件 / 父组件 定义组件中:props 的使用组件中:data 的使用(有 return 返回值) ; 区别:Vue中的data (没有返回值);组件方法中 emit 的使用:emit:英文原意是:触发、发射 的意思components :直接在Vue的方法中声明和绑定要使用的组件 小炒肉:温馨可口 <!DOCTYPE html><html lang="en"><head><

react笔记 8-16 JSX语法 定义数据 数据绑定

1、jsx语法 和vue一样  只能有一个根标签 一行代码写法 return <div>hello world</div> 多行代码返回必须加括号 return (<div><div>hello world</div><div>aaaaaaa</div></div>) 2、定义数据 数据绑定 constructor(){super()this.state={na

创建一个大的DIV,里面的包含两个DIV是可以自由移动

创建一个大的DIV,里面的包含两个DIV是可以自由移动 <body>         <div style="position: relative; background:#DDF8CF;line-height: 50px"> <div style="text-align: center; width: 100%;padding-top: 0px;"><h3>定&nbsp;位&nbsp;