友情提示:

这篇题解并没有GJKL,因为我也不会,而且看别人代码也看不懂,而且问学长还不给我讲!hmc:这个题巨麻烦,我只能说balabala。我不学了我退役了啊!

A:这傻逼题我从开头wa了四个小时然后我发现我写了各种奇葩东西,

嗯不说了。很明显要么在某线段起点开始要么在某线段终点结束。然后枚举段点二分就行。

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5+;
struct Node{
ll l,r,v;
}node[N];
bool cmp(Node a,Node b){
return a.r<b.r;
}
ll t,m;ll k;
ll l[N],r[N],v[N],pre[N];
int main(){//什么东西啊这是
ios::sync_with_stdio(false);
cin>>t;
while (t--){
cin>>m>>k;
for(int i=;i<=m;i++){
cin>>node[i].l>>node[i].r>>node[i].v;
}
sort(node+,node++m,cmp);
for(int i=;i<=m;i++){
l[i]=node[i].l;
r[i]=node[i].r;
v[i]=node[i].v;
pre[i]=pre[i-]+(r[i]-l[i]+)*v[i];
}
l[m+]=2e9+;r[m+]=2e9+;
pre[m+]=pre[m]+;
ll ans = ;
for(int i=;i<=m;i++){
int id = lower_bound(r,r+m+,l[i]+k-)-r;//
ll tmp = pre[id-]-pre[i-];
if(l[i]+k->=l[id])
tmp+=(l[i]+k-l[id])*v[id];
ans = max(ans,tmp);
}
for(int i=;i<=m;i++){
int id = lower_bound(l,l+m+,r[i]-k+)-l;
ll tmp = pre[i]-pre[id-];
if(r[i]-k+<=r[id-]){
tmp+=(r[id-]-(r[i]-k+)+)*v[id-];
}
ans = max(ans,tmp);
}
cout<<ans<<endl;
}
}
/**
1
1 1000000000
2 1000000000 1000000000
*/

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;
int t;
ll x,n;
ll ans[];
int main(){
ios::sync_with_stdio(false);
cin>>t;
while (t--){
memset(ans,, sizeof(ans));
cin>>x>>n;
if(n==){
cout<<x<<endl;
continue;
}
ll tmp = x/(*n-);
x%=*n-;
ans[]+=tmp;ans[n]+=tmp;
for(int i=;i<n;i++)
ans[i]+=tmp*;
for(int i=;i<=n;i++){
if(x<=) break;
ans[i]++;x--;
}
for(int i=n-;i>=;i--){
if(x<=) break;
ans[i]++,x--;
}
for(int i=;i<=n;i++){
cout<<ans[i]<<' ';
}
cout<<endl;
}
}

C:读错题wa自闭了。

#include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
int main(){
ios::sync_with_stdio(false);
int t;ll n;
cin>>t;
while (t--){
cin>>n;
bool flag = false;
int ans = ;
for(int i=;i<=;i++){
if(!(n&(1ll<<i))){
ans++;
} else
break;
}
cout<<ans+<<endl;
}
}

D:别想什么横着竖着花里胡哨的,就一排一排的交错放就行。

#include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
int t;
ll n,m;
int main(){
ios::sync_with_stdio(false);
cin>>t;
while (t--){
cin>>n>>m;
ll ans = 1e17;
if(n==){
cout<<(m+)/<<endl;
continue;
}
if(m==){
cout<<(n+)/<<endl;
continue;
}
if(n%==){
if(m%==){
ans = min(ans,n/*(m+));
ans = min(ans,m/*(n+));
} else{
ans = min(ans,n/*(m+));
ans = min(ans,m*n/+m/);
}
} else{
if(m%==){
ans = min(ans,m/*(n+));
ans = min(ans,n*m/+n/);
} else{
ans = min(ans,n*(m+)/);
ans = min(ans,m*(n+)/);
}
}
cout<<ans<<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+;
const int N = 1E5+;
int t;
int n;
ll a[N];
ll pre[N];
ll f[N];
int main(){
ios::sync_with_stdio(false);
cin>>t;
while (t--){
cin>>n;
pre[]=1ll;
for(int i=;i<=n;i++) {
cin >> a[i];
pre[i] = pre[i - ] * a[i] % mod;
}
f[]=a[]-;
for(int i=;i<=n;i++){
f[i]=(a[i]*f[i-]+pre[i-]*(a[i]-))%mod;
}
cout<<f[n]<<endl;
}
}

F:我很知趣的没用memset,被这个东西坑死太多次了,然后枚举每个ai就完了

#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 int N = 1e5+;
int t,n,a[N];
int vis[*N];
int qaq(int x){
int tmp = x;
for(int i=;i*i<=x;i++){
if(x%i==){
if(vis[i]) {
tmp = min(tmp, i);
break;
}
if(vis[x/i]) {
tmp = min(tmp, x/i);
}
}
}
return tmp;
}
vector<int> v;//***
int main(){
ios::sync_with_stdio(false);
cin>>t;
while (t--){
cin>>n;
for(int i=;i<=n;i++){
cin>>a[i];
vis[a[i]]=;
v.push_back(a[i]);
}
ll sum = ;
for(int i=;i<=n;i++){
a[i] = qaq(a[i]);
sum+=a[i];
}
for(auto a:v){
vis[a]=;
}
v.clear();
cout<<sum<<endl;
}
}

H:。。。

 #include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
int main(){
ios::sync_with_stdio(false);
int t,n,a[];
cin>>t;
while (t--){
cin>>n;
for(int i=;i<=*n;i++)
cin>>a[i];
int maxx = ;
for(int i=;i<=*n;i++){
maxx = max(maxx,a[i]+a[*n-i+]);
}
cout<<maxx<<endl;
}
}

I:。。。

 #include <bits/stdc++.h>
#define mk(a,b) make_pair(a,b)
#define pii pair<int,int>
using namespace std;
typedef long long ll;
int t,x,n;
int main(){
ios::sync_with_stdio(false);
cin>>t;
while (t--){
cin>>x>>n;
int tmp = x/n;
if(tmp==){
cout<<-<<endl;
continue;
}
if(x%n==){
for(int i=;i<=n;i++)cout<<tmp<<' ';
} else{
vector<int> ans;
for(int i=;i<=x%n;i++)
ans.push_back(tmp+);
for(int i=x%n;i<n;i++)
ans.push_back(tmp);
reverse(ans.begin(),ans.end());
for(auto a: ans) cout<<a<<' ';
}
cout<<endl;
}
}

M:lca板子题,用的cincout然后tle三发自闭了。快读大法好

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5+;
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;
}
struct Node{
int to,v1,v2;
};
vector<Node>g[N];
int s1[N],s2[N];
int t,n,q;
int par[N][],dep[N],deg[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(int i=;i<g[v].size();i++){
int u = g[v][i].to;
if(u==fa)
continue;
s1[u]=s1[v]+g[v][i].v1;//下来
s2[u]=s2[v]+g[v][i].v2;//上去
//down[v]+=g[v][i].v1+g[v][i].v2;
dfs(u,v);
//down[v]+=down[u];
}
}
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;
else
x=par[x][i],y=par[y][i];
}
return par[x][];
}
void init(){
for(int i=;i<=1e5;i++)
g[i].clear();
memset(par,, sizeof(par));
memset(dep,, sizeof(dep));
memset(deg,, sizeof(deg));
memset(s1,, sizeof(s1));
memset(s2,, sizeof(s2));
}
int main(){
t = read();
while (t--){
init();
cin>>n;
int u,v,c1,c2;
int all = ;
for(int i=;i<n;i++){
u=read();v=read();c1=read();c2=read();
deg[u]++;
deg[v]++;
all+=c1+c2;
g[u].push_back(Node{v,c1,c2});
g[v].push_back(Node{u,c2,c1});
}
for(int i=;i<=n;i++){
if(deg[i]==){
dfs(i,);
break;
}
}
q=read();
while (q--){
u=read();v=read();
int baba = lca(u,v);
int ans = all;
ans -= s2[v]-s2[baba];
ans -= s1[u]-s1[baba];
printf("%d\n",ans);
}
}
}

Gym 101810的更多相关文章

  1. gym 101810 M. Greedy Pirate (LCA)

    题目:https://codeforc.es/gym/101810/problem/M 题意:给 你一颗树,下面有m次查询,求u->v的最大值是多少,输入两点之间都会有两条边,正边有正权,反边有 ...

  2. Gym - 101810H ACM International Collegiate Programming Contest (2018)

    bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...

  3. Gym - 101810F ACM International Collegiate Programming Contest (2018)

    bryce1010模板 http://codeforces.com/gym/101810 #include<bits/stdc++.h> using namespace std; #def ...

  4. Gym - 101810E ACM International Collegiate Programming Contest (2018)

    bryce1010模板 http://codeforces.com/gym/101810 #include<bits/stdc++.h> using namespace std; #def ...

  5. Gym - 101810D ACM International Collegiate Programming Contest (2018)

    bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...

  6. Gym - 101810C ACM International Collegiate Programming Contest (2018)

    bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...

  7. Gym - 101810B ACM International Collegiate Programming Contest (2018)

    bryce1010模板 http://codeforces.com/gym/101810 #include <bits/stdc++.h> using namespace std; #de ...

  8. Gym - 101810A ACM International Collegiate Programming Contest (2018)

    bryce1010模板 http://codeforces.com/gym/101810/problem/A 大模拟,写崩了,代码借队友的...... 注意处理段与段的连接问题: #include&l ...

  9. [ACM International Collegiate Programming Contest, Amman Collegiate Programming Contest (2018)]

    https://codeforces.com/gym/101810 A. Careful Thief time limit per test 2.5 s memory limit per test 2 ...

随机推荐

  1. boost::make_function_output_iterator报错: C4996

    用VS2013运行boost::make_function_output_iterator的官方例子: https://www.boost.org/doc/libs/1_68_0/libs/itera ...

  2. quartz集群分布式(并发)部署解决方案

    项目中使用分布式并发部署定时任务,多台跨JVM,按照常理逻辑每个JVM的定时任务会各自运行,这样就会存在问题,多台分布式JVM机器的应用服务同时干活,一个是加重服务负担,另外一个是存在严重的逻辑问题, ...

  3. 通过Nginx反向代理之后客户端验证码session不一致造成无法验证通过的问题解决

    location / { proxy_pass http://127.0.0.1:9080/app/; proxy_cookie_path /app/ /; proxy_cookie_path /ap ...

  4. 福利:42套AI技术视频免费领取

    <福利:33套AI技术视频免费领取> 视频获取方式:请加机器学习和自然语言(QQ群号:436303759)群后,私信群主获取(备注上自己想要获取是视频名称),仅限本群公众号粉丝成员,多套视 ...

  5. ECMAScript各版本简介及特性

    术语 ECMAScript Sun(现在的Oracle)公司持有着“Java”和“JavaScript”的商标.这就让微软不得不把自己的JavaScript方言称之为“JScript”.然后,在这门语 ...

  6. JAVA_HOME环境配置

    JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径D:\java\jdk1.5.0_08 Path使得系统可以在任何路径下识别java命令,设为:%JAVA_HOME%\bin;%JAV ...

  7. 树莓派进阶之路 (038) - P2P 文件下载机

    硬件要求: 树莓派开发板 USB外接硬盘 一. Together 1. 更新安装程序 sudo apt-get update sudo apt-get upgrade sudo apt-get ins ...

  8. C#反射实现 C# 反射 判断类的延伸类型 使用代码生成工具Database2Sharp快速生成工作流模块控制器和视图代码 C# ADO.NET的SqlDataReader对象,判断是否包含指定字段 页面中添加锚点的几种方式 .net 简单实用Log4net(多个日志配置文件) C# 常用小点

    C#反射实现   一.反射概念: 1.概念: 反射,通俗的讲就是我们在只知道一个对象的内部而不了解内部结构的情况下,通过反射这个技术可以使我们明确这个对象的内部实现. 在.NET中,反射是重要的机制, ...

  9. python多线程应用——DB2数据库备份

    前言:DB2一个实例下,可以存在多个数据库,之前使用shell备份脚本,但是同一时刻只能备份一个数据库,对于几百G的备份文件,这个速度显然太慢,今天学习了Python多线程,刚好应用一下. 分析:1. ...

  10. 基于μC/OS—III的CC1120驱动程序设计

    基于μC/OS—III的CC1120驱动程序设计 时间:2014-01-21 来源:电子设计工程 作者:张绍游,张贻雄,石江宏 关键字:CC1120   嵌入式操作系统   STM32F103ZE   ...