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 题目太多啦,解释题意都花很多时间...还有事情要做,就选 ...
随机推荐
- JSON序列——保存修改数据
JSON序列——保存修改数据 procedure TForm1.Button6Click(Sender: TObject); begin var delta: TynJsonDelta := TynJ ...
- unity-Profiler调试Android的正确姿势(mumu模拟器)
1. 前置条件 安卓的相关环境 java.ant.sdk.ndk 什么的都装好(其实这里只需要 sdk 里面的 adb),配好 adb 工具的环境变量(意思就是 cmd 里直接输 adb 命令即可) ...
- [Pipy]利用pip2pi搭建本地pypi源
当我们一个团队开发一个项目的时候,须要的Python第三方包基本是固定的.每次搭建新环境的时候总是由于各种内外网,https问题花费大量的时间来安装执行环境. 所以搭建一个本地的,小巧的,仅仅包括须要 ...
- Win10系统的SurfacePro4的启动菜单太多怎么管理,UEFI的启动菜单如何编辑
有时候多增加了一些硬盘版的PE,会出现下面这种问题,启动项目太多又删不掉(如果你硬盘版的PE修改了文件位置,这个选项还进不去) 关机之后,按开机键和音量+,进入Surface的启动菜单,直接删除原 ...
- 什么是 Spring Boot
Spring Boot 介绍 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而 ...
- IIS 重写 HTTP 重定向到 HTTPS
1.购买SSL证书 2.IIS7 / IIS 7.5 下绑定 HTTPS 网站(购买Wildcard SSL泛域名证书可绑定多个子域名)参考上文 3.下载安装URL重写模块:Microsoft URL ...
- geos 3.6.3库windows版本 已编译完成的32位版本和64位版本
网上教编译方法的很多,直接分享编译完成的很少. 我就把编译完成的分享出来吧. geos-3.6.3.tar.bz2 (Changes) 版本的 https://trac.osgeo.org/geos ...
- weak_ptr<T>智能指针
weak_ptr是为配合shared_ptr而引入的一种智能指针,它更像是shared_ptr的一个助手,而不是智能指针,因为它不具有普通指针的行为,没有重载operator*和operator-&g ...
- 开源文件服务器file-service介绍
file-service 一个基于ASP.NET Core的可伸缩.通用的文件服务器. 通常后端项目可能会有头像.图片.音频.视频等上传/下载需求,这些需求都可以抽象为文件服务. 功能特点 支持Lin ...
- Windows下pip安装及更新出现“UnicodeEncodeError: 'ascii' codec can't encode character u'\u258c' in position 8: ordinal not in range(128)”问题解决办法
Windows下pip安装及更新出现“UnicodeEncodeError: 'ascii' codec can't encode character u'\u258c' in position 8: ...