好久没写题解了嘻嘻嘻,昨天补edu自闭了一天还没补完fg这div3令人愉悦。

A:

 #include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
const ll mod = 1e9+;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
const int N = 1e5+;
int q;ll n,a,b;
int main(){
ios::sync_with_stdio(false);
cin>>q;
while (q--){
cin>>n>>a>>b;
if(*a<=b){
cout<<n*a<<endl;
} else{
if(n%==){
cout<<n/*b<<endl;
} else{
cout<<n/*b+a<<endl;
}
}
}
}

B:枚举每个删掉的,维护奇偶数前缀和。

 #include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
const ll mod = 1e9+;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
const int N = 2e5+;
int n,a[N],odd[N],even[N];
int main(){
n=read();
for(int i=;i<=n;i++){
a[i]=read();
odd[i]=odd[i-];
even[i]=even[i-];
if(i&){
odd[i]+=a[i];
} else{
even[i]+=a[i];
}
}
int ans=;
for(int i=;i<=n;i++){
ll s1=odd[i-]+even[n]-even[i];
ll s2=even[i-]+odd[n]-odd[i];
if(s1==s2){
ans++;
}
}
cout<<ans<<endl;
}

C:模拟,没啥好说的。注意偶数必须全是4的倍数,奇数的情况 只能有一个奇数,4的倍数大于(n/2)*(n/2)。

然后填就行了。

 #include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
const ll mod = 1e9+;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
const int N = 1e5+;
int n,a[][],c[],num[];
int main(){
n=read();
for(int i=;i<=n*n;i++){
c[i]=read();
num[c[i]]++;
}
if(n%==){
for(int i=;i<=;i++){
if(num[i]%){
cout<<"NO";
exit();
}
}
cout<<"YES"<<endl;
int k=;
for(int i=;i<n/;i++){
for(int j=;j<n/;j++){
for(;k<=;){
if(num[k]>=){
a[i][j]=a[n-i-][j]=a[i][n-j-]=a[n-i-][n-j-]=k;
num[k]-=;
break;
} else{
k++;
}
}
}
}
for(int i=;i<n;i++){
for(int j=;j<n;j++){
cout<<a[i][j]<<' ';
}
cout<<endl;
}
} else{
int f=;
int cnt=;
for(int i=;i<=;i++){
if(num[i]&){
if(f){
cout<<"NO"<<endl;
exit();
} else{
f=i;
num[i]--;
}
}
if(num[i]>=){
cnt+=num[i]/;
}
}
if(cnt<(n/)*(n/)){
cout<<"NO"<<endl;
exit();
}
int k=;
a[n/+][n/+]=f;
for(int i=;i<=n/;i++){
for(int j=;j<=n/;j++){
for(;k<=;){
if(num[k]>=){
num[k]-=;
a[i][j]=a[i][n-j+]=a[n-i+][j]=a[n-i+][n-j+]=k;
break;
} else{
k++;
}
}
}
}
k=;
for(int i=;i<=n/;i++){
for(;k<=;){
if(num[k]>=){
a[i][n/+]=a[n-i+][n/+]=k;
num[k]-=;
break;
} else
k++;
}
}
k=;
for(int i=;i<=n/;i++){
for(;k<=;){
if(num[k]>=){
a[n/+][i]=a[n/+][n-i+]=k;
num[k]-=;
break;
} else
k++;
}
}
cout<<"YES"<<endl;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
cout<<a[i][j]<<' ';
}
cout<<endl;
}
}
}

D:二分,和昨晚上eduC异曲同工之妙

 #include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
const ll mod = 1e9+;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
const int N = 2e5+;
int n,m,a[N];
bool cmp(int a,int b){
return a>b;
}
int check(int x){
ll ans=;
for(int i=;i<=n;i++){
int tmp=(i-)/x;
if(a[i]-tmp<=)
break;
ans+=a[i]-tmp;
}
return ans>=m;
}
int main(){
n=read();m=read();
ll sum=;
for(int i=;i<=n;i++){
a[i]=read();
sum+=a[i];
}
if(sum<m){
cout<<-;
exit();
}
sort(a+,a++n,cmp);
int l=,r=n;
while (l<=r){
int mid=l+r>>;
if(check(mid)){
r=mid-;
} else{
l=mid+;
}
}
cout<<l<<endl;
}

E:**题。

 #include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
const ll mod = 1e9+;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
const int N = 1e5+;
ll n,k;
void check(int x){
if(x==n)
exit();
}
int main(){
n=read();k=read();
if(n>k*k-k){
cout<<"NO";
} else{
cout<<"YES"<<endl;
int cnt=;
for(int l=;l<=k;l++){
for(int i=;i+l<=k;i++){
printf("%d %d\n",i,i+l);
cnt++;
check(cnt);
}
for(int i=k;i-l>=;i--){
printf("%d %d\n",i,i-l);
cnt++;
check(cnt);
}
}
}
}

F1:维护一下每颗子树里两种颜色的数量,然后枚举边

 #include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
const ll mod = 1e9+;
inline int read() {
int X=,w=; char c=getchar();
while (c<''||c>'') { if (c=='-') w=-; c=getchar(); }
while (c>=''&&c<='') X=(X<<)+(X<<)+c-'',c=getchar();
return X*w;
}
const int N = 3e5+;
int n,s[N][],a[N],x[N],y[N],dep[N];
vector<int> g[N];
void dfs(int v,int fa){
dep[v]=dep[fa]+;
if(a[v]==)
s[v][]++;
if(a[v]==)
s[v][]++;
for(auto u:g[v]){
if(u==fa)continue;
dfs(u,v);
s[v][]+=s[u][];
s[v][]+=s[u][];
}
}
int main(){
n=read();
for(int i=;i<=n;i++)
a[i]=read();
for(int i=;i<n;i++){
x[i]=read();
y[i]=read();
g[x[i]].push_back(y[i]);
g[y[i]].push_back(x[i]);
}
dfs(,);
int ans=;
for(int i=;i<n;i++){
int u=x[i],v=y[i];
if(dep[u]>dep[v])
swap(u,v);
if(s[][]-s[v][]==||s[][]-s[v][]==){
if(s[v][]==||s[v][]==){
ans++;
}
}
}
cout<<ans<<endl;
}

F2:好难不会哇。

抄看的学长的代码,然后让另一个学长给我讲了讲。。。

首先对于两个颜色相同的点 xy他们一定会被分到一起去,所以我们可以暴力把中间的点染色,顺便判一下无解的情况,就是中间夹着一个其他颜色的。

然后开始dp。

我们,(7个小时之后),好了,我现在又不会了。不管了。明早高铁摸了。

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod = ;
void exgcd(ll a,ll b,ll& d,ll& x,ll& y) {
if (!b) {
d = a;
x = ;
y = ;
} else {
exgcd(b, a % b, d, y, x);
y -= x * (a / b);
}
}
ll inv(ll a, ll p) {
ll d, x, y;
exgcd(a, p, d, x, y);
return d == ? (x+p)%p : -;
}
const int N = 3e5+;
vector<int> g[N],c[N];
int par[N][],dep[N];
void dfs(int v,int fa){
dep[v]=dep[fa]+;
par[v][]=fa;
for(int i=;(<<i)<=dep[fa];i++)
par[v][i]=par[par[v][i-]][i-];
for(auto u:g[v]){
if(u==fa)continue;
dfs(u,v);
}
}
int lca(int x,int y){
if(dep[x]>dep[y])swap(x,y);
for(int i=;i>=;i--)
if(dep[x]<=dep[y]-(<<i))
y=par[y][i];
if(x==y)return x;
for(int i=;i>=;i--){
if(par[x][i]==par[y][i])continue;
x=par[x][i],y=par[y][i];
}
return par[x][];
}
int n,k,a[N];
void slove(){
for(int i=;i<=k;i++){
int lca_=c[i][];
for(auto u:c[i])
lca_=lca(lca_,u);
for(auto u:c[i]){
if(u==lca_)continue;
int v=u;
while (v!=lca_){
v=par[v][];
if(a[v]!=&&a[v]!=i){
cout<<<<endl;
exit();
}
if(a[v]==i)break;
a[v]=i;
}
}
}
}
ll dp[N][];
void dfs2(int v,int fa){
ll tmp=;
for(auto u:g[v]){
if(u==fa)continue;
dfs2(u,v);
tmp=tmp*(dp[u][]+dp[u][])%mod;
}
if(a[v]==){
dp[v][]=tmp;dp[v][]=;
for(auto u:g[v]){
if(u==fa)continue;
ll x=tmp*inv(dp[u][]+dp[u][],mod)%mod;
x=x*dp[u][]%mod;
dp[v][]=(dp[v][]+x)%mod;
}
} else{
dp[v][]=;dp[v][]=tmp;
}
}
int main(){
ios::sync_with_stdio(false);
cin>>n>>k;
for(int i=;i<=n;i++){
cin>>a[i];
c[a[i]].push_back(i);
}
int x,y;
for(int i=;i<n;i++){
cin>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
}
dfs(,);
slove();
dfs2(,);
cout<<dp[][];
}

R 540的更多相关文章

  1. [原]CentOS7安装Rancher2.1并部署kubernetes (二)---部署kubernetes

    ##################    Rancher v2.1.7  +    Kubernetes 1.13.4  ################ ##################### ...

  2. 利用python进行数据分析2_数据采集与操作

    txt_filename = './files/python_baidu.txt' # 打开文件 file_obj = open(txt_filename, 'r', encoding='utf-8' ...

  3. Django项目:CRM(客户关系管理系统)--81--71PerfectCRM实现CRM项目首页

    {#portal.html#} {## ————————46PerfectCRM实现登陆后页面才能访问————————#} {#{% extends 'king_admin/table_index.h ...

  4. R语言 系统聚类分析1

    #聚类分析是一类将数据所研究对象进行分类的统计方法,这一类方法的共同特点是:#事先不知道类别的个数与结构 据以进行分类的数据是对象之间的相似性 或差异性数据#将这些相似(相异)性数据看成是对象之间的距 ...

  5. 基于R语言的结构方程:lavaan简明教程 [中文翻译版]

    lavaan简明教程 [中文翻译版] 译者注:此文档原作者为比利时Ghent大学的Yves Rosseel博士,lavaan亦为其开发,完全开源.免费.我在学习的时候顺手翻译了一下,向Yves的开源精 ...

  6. 用R做时间序列分析之ARIMA模型预测

    昨天刚刚把导入数据弄好,今天迫不及待试试怎么做预测,网上找的帖子跟着弄的. 第一步.对原始数据进行分析 一.ARIMA预测时间序列 指数平滑法对于预测来说是非常有帮助的,而且它对时间序列上面连续的值之 ...

  7. R语言:R2OpenBUGS

    R语言:R2OpenBUGS 用这个包调用BUGS model,分别用表格和图形概述inference和convergence,保存估计的结果 as.bugs.array 转换成bugs object ...

  8. UVA.540 Team Queue (队列)

    UVA.540 Team Queue (队列) 题意分析 有t个团队正在排队,每次来一个新人的时候,他可以插入到他最后一个队友的身后,如果没有他的队友,那么他只能插入到队伍的最后.题目中包含以下操作: ...

  9. Codeforces Round #540 (Div. 3) 部分题解

    Codeforces Round #540 (Div. 3) 题目链接:https://codeforces.com/contest/1118 题目太多啦,解释题意都花很多时间...还有事情要做,就选 ...

随机推荐

  1. spring跨域问题

    import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Co ...

  2. iterm快捷键设置

    如图所示,选择相应的动作和快捷键组合

  3. 开启win10下Ubuntu子系统的SSH服务 并设置为开机启动

    Win10中安装Ubuntu子系统后默认是没有开启SSH服务的,需要手动配置开启, 1.先通过 bash 进入子系统修改配置 vi /etc/ssh/sshd_config  备注 输入i 表示键入, ...

  4. SpringBoot(十一):springboot2.0.2下配置mybatis generator环境,并自定义字段/getter/settetr注释

    Mybatis Generator是供开发者在mybatis开发时,快速构建mapper xml,mapper类,model类的一个插件工具.它相对来说对开发者是有很大的帮助的,但是它也有不足之处,比 ...

  5. 【.NET 深呼吸】.net core 中的轻量级 Composition

    记得前面老周写过在.net core 中使用 Composition 的烂文.上回老周给大伙伴们介绍的是一个“重量级”版本—— System.ComponentModel.Composition.应该 ...

  6. centos 中查找文件、目录、内容

    1.查找文件 find / -name 'filename'12.查找目录 find / -name 'path' -type d13.查找内容 find . | xargs grep -ri 'co ...

  7. VS插件File Nesting

    开发者们一直以来都是使用Visual Studio的解决方案管理器 中的嵌套功能管理项目的子文件夹,使得文件组织清晰.便于访问.鉴于现在的项目巨大的文件数目,如果能将这种嵌入能力应用于项目的其他子项上 ...

  8. VMWare 虚机迁移后Linux系统网卡启动问题

    重新安装VMWare或拷贝虚机文件后有时网卡会无法工作,主要是因为网卡的Mac地址改变了,如果系统中的网卡配置信息中有Mac的信息,则虚机的系统的网卡可能无法正常工作. 如果出现上述问题,解决办法如下 ...

  9. Mac下的Chrome或Safari访问跨域设置,MBP上使用模拟器Simulator.app或iphone+Safari调试网页

    Mac下的Chrome或Safari访问跨域设置: mac下终端启动Chrome $ open -a Google\ Chrome --args --disable-web-security 或 /A ...

  10. 【C++】C++中const与constexpr的比较

    先说结论相同点:const和consexpr都是用来定义常量的.不同点:const声明的常量,初始值引用的对象不一定是一个常量:constexpr声明的常量,初始值一定是常量表达式. constexp ...