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 题目太多啦,解释题意都花很多时间...还有事情要做,就选 ...
随机推荐
- Mac/Ubuntu下的数据建模工具PDMan,替代PowerDesigner
PowerDesigner我使用过用Wine在Linux和Mac下用,但总有些缺陷,用Navicat却发觉没有Linux版本的: 一般关心的问题主要有如下: 1.数据库的关系设计图. 2.导出数据库脚 ...
- Oralce sql (+) 补充
Oracle 外连接 (1)左外连接 (左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 外连接(Outer Join) oute ...
- Spring quartz 单机、集群+websocket集群实现文本、图片、声音、文件下载及推送、接收及显示
相关环境 Nginx,Spring5.x当前(要选择4.0+),tomcat9.x或8.x都可以,Quartz 2.x集群(实际运用是Quartz的集群模式和单机模式共存的) 测试面页:http:// ...
- 让你的app在iPhoneX中全屏显示
如果你的项目什么也不修改,直接把你的app运行在 iPhone X 模拟器下,很有可能就会出现下面的情形: 上下都有黑边,没有全屏显示 为了让app能够全屏显示,你需要准备以下的内容 Xcode 9. ...
- 提升SQLite数据插入效率低、速度慢的方法(转)
前言 SQLite数据库由于其简单.灵活.轻量.开源,已经被越来越多的被应用到中小型应用中.甚至有人说,SQLite完全可以用来取代C语言中的文件读写操作.因此我最近编写有关遥感数据处理的程序的时候, ...
- 每天一个linux命令(7):mv
1.命令简介 mv(Move file)将源文件重命名为目标文件,或将源文件移动至指定目录.. 2.用法 mv [选项]... [-T] 源文件 目标文件 或:mv [选项]... 源文件... 目录 ...
- KADEMLIA算法
一.概述 基于异或距离算法的分布式散列表(DHT), 实现了去中心化的信息存储于查询系统: Kademlia将网络设计为具有160层的二叉树,树最末端的每个叶子看作为节点,节点在树中的位置由同样是16 ...
- Mybatis(五) 延迟加载和缓存机制(一级二级缓存)
踏踏实实踏踏实实,开开心心,开心是一天不开心也是一天,路漫漫其修远兮. --WH 一.延迟加载 延迟加载就是懒加载,先去查询主表信息,如果用到从表的数据的话,再去查询从表的信息,也就是如果没用到从表的 ...
- Mybatis(二) 全局配置文件详解
这节来说说全局配置文件的东西,非常简单.看一遍就懂了. --WH 一.全部配置内容 SqlMapConfig.xml的配置内容和顺序如下,顺序不能乱.现在来对这些属性的意思一一进行讲解. 二.prop ...
- Intellij 高亮显示与选中字符串相同的内容
如下图所示,我的是 2018,不同版本,Schema 可能要 Save As一下