R 540
好久没写题解了嘻嘻嘻,昨天补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的更多相关文章
- [原]CentOS7安装Rancher2.1并部署kubernetes (二)---部署kubernetes
################## Rancher v2.1.7 + Kubernetes 1.13.4 ################ ##################### ...
- 利用python进行数据分析2_数据采集与操作
txt_filename = './files/python_baidu.txt' # 打开文件 file_obj = open(txt_filename, 'r', encoding='utf-8' ...
- Django项目:CRM(客户关系管理系统)--81--71PerfectCRM实现CRM项目首页
{#portal.html#} {## ————————46PerfectCRM实现登陆后页面才能访问————————#} {#{% extends 'king_admin/table_index.h ...
- R语言 系统聚类分析1
#聚类分析是一类将数据所研究对象进行分类的统计方法,这一类方法的共同特点是:#事先不知道类别的个数与结构 据以进行分类的数据是对象之间的相似性 或差异性数据#将这些相似(相异)性数据看成是对象之间的距 ...
- 基于R语言的结构方程:lavaan简明教程 [中文翻译版]
lavaan简明教程 [中文翻译版] 译者注:此文档原作者为比利时Ghent大学的Yves Rosseel博士,lavaan亦为其开发,完全开源.免费.我在学习的时候顺手翻译了一下,向Yves的开源精 ...
- 用R做时间序列分析之ARIMA模型预测
昨天刚刚把导入数据弄好,今天迫不及待试试怎么做预测,网上找的帖子跟着弄的. 第一步.对原始数据进行分析 一.ARIMA预测时间序列 指数平滑法对于预测来说是非常有帮助的,而且它对时间序列上面连续的值之 ...
- R语言:R2OpenBUGS
R语言:R2OpenBUGS 用这个包调用BUGS model,分别用表格和图形概述inference和convergence,保存估计的结果 as.bugs.array 转换成bugs object ...
- UVA.540 Team Queue (队列)
UVA.540 Team Queue (队列) 题意分析 有t个团队正在排队,每次来一个新人的时候,他可以插入到他最后一个队友的身后,如果没有他的队友,那么他只能插入到队伍的最后.题目中包含以下操作: ...
- Codeforces Round #540 (Div. 3) 部分题解
Codeforces Round #540 (Div. 3) 题目链接:https://codeforces.com/contest/1118 题目太多啦,解释题意都花很多时间...还有事情要做,就选 ...
随机推荐
- javascript——10章 DOM
1.节点关系 (1)childNodes:返回节点的子节点集合 返回值:NodeList 对象,表示节点集合. 注:childNodes只能取到子级,不能取到子级的子级. childNodes所有节点 ...
- 顺序栈的基本操作中Push压入后的- S.top = S.base + S.stacksize; 作用
#include <stdio.h> #include <malloc.h> #define TRUE 1 #define OK 1 #define ERROR 0 #defi ...
- django之模型层(model)--添加、单表查询、修改基础
上篇带大家简单做了一下图书表的创建.简单的查看和删除,今天会先简单介绍添加和修改,因为添加和修改与删除一样都很简单,本篇会相对多介绍一点单表查询,大家都知道数据库中查询是最重要的一部分,毕竟无论是修改 ...
- IPAddress.Any 解决本地ip和服务器ip切换问题
IPAddress.Any表示本机ip,换言之,如果服务器绑定此地址,则表示侦听本机所有ip对应的那个端口(本机可能有多个ip或只有一个ip)IPAddress.Any微软给出的解释是:Provide ...
- Visual Studio 2015编译Lua 5.3.4遇到的坑
被坑的不浅,遇到错误:" LNK1561:必须定义入口点",解决方案删除再建,步骤一遍一遍操作,还是报错.如下图所示: 首先,它必须要改成DLL或者LIB(动态/静态库),如果是应 ...
- Eclipse中jsp和html格式化自动排版问题
删除inline Elements 中所有的元素 http://m.codes51.com/article/detail_197472.html
- C# Task 是什么?返回值如何实现? Wait如何实现
关于Task的API太多了,网上的实例也很多,现在我们来说说Task究竟是个什么东西[task一般用于多线程,它一定与线程有关],还有它的返回值有事怎么搞的. 首先我们以一个最简单的API开始,Tas ...
- 深度学习框架Tensor张量的操作使用
- 重点掌握基本张量使用及与numpy的区别 - 掌握张量维度操作(拼接.维度扩展.压缩.转置.重复……) numpy基本操作: numpy学习4:NumPy基本操作 NumPy 教程 1. Tens ...
- Docker Compose安装以及入门
Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用. Compose 简介 Compose 项目是 Docker 官方的开源 ...
- Spark(四十四):使用Java调用spark-submit.sh(支持 --deploy-mode client和cluster两种方式)并获取applicationId
之前也介绍过使用yarn api来submit spark任务,通过提交接口返回applicationId的用法,具体参考<Spark2.3(四十):如何使用java通过yarn api调度sp ...