P98

a

【问题描述】
你是能看到第一题的 friends 呢。
——hja
世界上没有什么比卖的这么贵的弹丸三还令人绝望的事了,所以便有了这
么一道题。定义?(?)为满足(? × ?)|?的有序正整数对(?,?)的个数。现在给定
?,求
∑?(?)
?
?=1
【输入格式】
一行一个整数?。
【输出格式】
一行一个整数代表答案。
【样例输入】
6
【样例输出】
25
【数据范围与规定】
3。
60%的数据,1 ≤ ? ≤ 1000。
对于100%的数据,1 ≤ ? ≤ 10 11 .
P98 zhxb
第 3 页 共 6 页

#include<iostream>
#include<cstdio>
using namespace std;
int sum[],n;
int Clac(int x){
int res=;
for(int i=;i<=x;i++){
for(int j=;j<=x;j++){
if(x%(i*j)==)res++;
if(i*j>x)break;
}
}
return res;
}
int main(){
freopen("a.in","r",stdin);freopen("a.out","w",stdout);
sum[]=;
cin>>n;
for(int i=;i<=n;i++){
sum[i]=sum[i-]+Clac(i);
}
printf("%d",sum[n]);
}

暴力

b

【问题描述】
你是能看到第二题的 friends 呢。
——laekov
Hja 和 Yjq 为了抢男主角打了起来,现在他们正在一棵树上决斗。Hja 在 A
点,Yjq 在 B 点,Hja 先发制人开始移动。每次他们可以沿着一条边移动,但
一旦一条边被对方走过了自己就不能再走这条边了。每条边上都有权值,他们
都希望自己的权值尽量多。现在给你这棵树以及他们俩开始的位置,问 Hja 能
够获得的最大权值。
【输入格式】
第一行两个整数?,?,代表树的点数和询问的个数。
? − 1行每行三个整数?,?,?,代表从?到?有一条权值为?的边。
接下来?行,每行两个整数?,?代表一次询问。
【输出格式】
对于每次询问,输出一个整数代表答案。
【样例输入 1】
2 1
1 2 3
1 2
【样例输出 1】
3
【样例输入 2】
3 2
1 2 3
1 3 1
2 3
1 3
【样例输出 2】
3
4
P98 zhxb
第 4 页 共 6 页
【数据范围与规定】
30%的数据,1 ≤ ?,? ≤ 1000。
另外30%的数据,? = 1。
对于100%的数据,1 ≤ ?,? ≤ 10 5 ,0 ≤ ? ≤ 10 3 ,1 ≤ ?,?,?,? ≤ ?。
P98 zhxc
第 5 页 共 6 页

/*
暴力找lca,顺便把整个路径存下来
看看路径中有多少线段,根据奇偶判断走到中点后下一步谁先走
然后用那个中点做根dfs,维护字树大小
将根的字数大小排个序,谁先走谁取奇数子树
然后输出Hja走的和
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 100010
using namespace std;
int n,m,num,head[maxn],fa1[maxn],q1[maxn],q2[maxn],cnt,cnt2,dep1[maxn],top[maxn],sz1[maxn],son[maxn];
int who,sz[maxn],Sz[maxn],cn;
struct node{
int to,pre,v;
}e[maxn*];
void Insert(int from,int to,int v){
e[++num].to=to;
e[num].v=v;
e[num].pre=head[from];
head[from]=num;
}
void dfs(int now,int father){
dep1[now]=dep1[father]+;
fa1[now]=father;
sz1[now]=;
for(int i=head[now];i;i=e[i].pre){
int to=e[i].to;
if(to==father)continue;
dfs(to,now);
sz1[now]+=sz1[to];
if(!son[now]||sz1[to]>sz1[son[now]])son[now]=to;
}
}
void dfs2(int now,int father){
top[now]=father;
if(son[now])dfs2(son[now],father);
for(int i=head[now];i;i=e[i].pre){
int to=e[i].to;
if(to==son[now]||to==fa1[now])continue;
dfs2(to,to);
}
}
int Lca(int a,int b){
while(top[a]!=top[b]){
if(dep1[top[a]]<dep1[top[b]])swap(a,b);
a=fa1[top[a]];
}
if(dep1[a]>dep1[b])swap(a,b);
return a;
}
void dfs3(int now,int father){
for(int i=head[now];i;i=e[i].pre){
int to=e[i].to;
if(to==father)continue;
sz[to]=e[i].v;
dfs3(to,now);
sz[now]+=sz[to];
}
}
bool cmp(int x,int y){return x>y;}
int main(){
//freopen("Cola.txt","r",stdin);
//freopen("Cola.out","w",stdout);
//freopen("b.in","r",stdin);freopen("b.out","w",stdout);
scanf("%d%d",&n,&m);
int x,y,z;
for(int i=;i<n;i++){
scanf("%d%d%d",&x,&y,&z);
Insert(x,y,z);Insert(y,x,z);
}
dfs(,);
dfs2(,);
for(int i=;i<=m;i++){
scanf("%d%d",&x,&y);
int to1=x,to2=y;
int lca=Lca(x,y);
cnt=;
while(x!=lca){q1[++cnt]=x;x=fa1[x];}//hja跳
q1[++cnt]=lca;
cnt2=;
while(y!=lca){q2[++cnt2]=y;y=fa1[y];}
for(int j=cnt2;j>=;j--)q1[++cnt]=q2[j];
if(cnt%==)who=;//下一步yjq先走
else who=;//下一步hja先走
int point=q1[cnt/+];
//cout<<point<<endl;
for(int j=;j<=cnt;j++){
if(q1[j]==point)break;
to1=q1[j];
}
for(int j=cnt;j>=;j--){
if(q1[j]==point)break;
to2=q1[j];
}
//cout<<to1<<' '<<to2<<endl;
memset(sz,,sizeof(sz));
dfs3(point,);
cn=;
int ans=;
ans+=sz[to1];
for(int j=head[point];j;j=e[j].pre){
if(e[j].to==to1||e[j].to==to2)continue;
Sz[++cn]=sz[e[j].to];
}
sort(Sz+,Sz+cn+,cmp);
for(int j=who;j<=cn;j+=){
ans+=Sz[j];
}
printf("%d\n",ans);
}
}

50分 暴力

c

【问题描述】
你是能看到第三题的 friends 呢。
——aoao
Yjq 买了 36 个卡包,并且把他们排列成6 × 6的阵型准备开包。左上角的包
是(0,0),右下角为(5,5)。为了能够开到更多的金色普通卡,Yjq 会为每个包添加
1 − 5个玄学值, 每个玄学值可以是1 − 30中的一个整数。 但是不同的玄学值会造
成不同的欧气加成,具体如下:
1、同一个卡包如果有两个相同的玄学值会有无限大的欧气加成。
2、同一个卡包如果有两个相邻
3同
4、相邻的两个卡包如果有相邻的玄学值会有?点欧气加成。
5同
6、距离为2的卡包如果有相邻的玄学值会有?点欧气加成。
以上的所有加成是每存在一个符合条件的就会加一次, 如一包卡有1,2,3的玄
学值就会加两次。
但 是 ,玄 学值 是 个不 可 控的 东西 , 即使 是 Yjq 也 只能 自己 决 定
(2,2),(2,3),(3,2),(3,3)这几包卡的玄学值。 为了能够抽到更多的金色普通卡, Yjq
想知道自己能够获得的最少的欧气加成是多少。注意你只能修改玄学值, 不能修
改玄学值的个数。
【输入格式】
输入的第一行有5个整数?,?,?,?,?。
接下去有6 × 6的代表初始的玄学值。
每个玄学值为[?:? 1 ,? 2 ,⋯,? ? ]的描述形式。
【输出格式】
一行一个整数代表答案。
【样例输入】
5 4 3 2 1
[1:1][1:2][1:3][1:4][1:5][1:6]
[1:1][1:2][1:3][1:4][1:5][1:6]
[1:1][1:2][5:1,2,3,4,5][5:1,2,3,4,5][1:5][1:6]
[1:1][1:2][5:1,2,3,4,5][5:1,2,3,4,5][1:5][1:6]
[1:1][1:2][1:3][1:4][1:5][1:6]
[1:1][1:2][1:3][1:4][1:5][1:6]
P98 zhxc
第 6 页 共 6 页
【样例输出】
250
【数据规模与约定】
对于100%的数据, 1 ≤ ?,?,?,?,? ≤ 100,1 ≤ ? ≤ 5,1 ≤ ? ? ≤ 30。 有部分分。

2017-10-20 NOIP模拟赛2的更多相关文章

  1. 2017 10.25 NOIP模拟赛

    期望得分:100+40+100=240 实际得分:50+40+20=110 T1 start取了min没有用,w(゚Д゚)w    O(≧口≦)O T3 代码3个bug :数组开小了,一个细节没注意, ...

  2. 10.16 NOIP模拟赛

    目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...

  3. 10.17 NOIP模拟赛

    目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...

  4. 2018.10.16 NOIP模拟赛解题报告

    心路历程 预计得分:\(100 + 100 + 20 = 220\) 实际得分:\(100 + 100 + 30 = 230\) 辣鸡模拟赛.. T1T2都是一眼题,T3考验卡常数还只有一档暴力分. ...

  5. 2017.5.27 NOIP模拟赛(hzwer2014-5-16 NOIP模拟赛)

    期望得分:100+100+60+30=290 实际得分:100+20+60+0=180 当务之急:提高一次正确率 Problem 1 双色球(ball.cpp/c/pas) [题目描述] 机房来了新一 ...

  6. 2018.10.30 NOIp模拟赛 T1 改造二叉树

    [题目描述] 小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作“左孩子”和“右孩子”.二叉树被用作二叉搜索树和二叉堆.随后他又和他人讨论 ...

  7. 【2019.7.20 NOIP模拟赛 T1】A(A)(暴搜)

    打表+暴搜 这道题目,显然是需要打表的,不过打表的方式可以有很多. 我是打了两个表,分别表示每个数字所需的火柴棒根数以及从一个数字到另一个数字,除了需要去除或加入的火柴棒外,至少需要几根火柴棒. 然后 ...

  8. 2016.10.30 NOIP模拟赛 day2 PM 整理

    满分:300分 直接全部爆零,真的是很坑啊! 10.30的题目+数据:链接:http://pan.baidu.com/s/1jHXLace 密码:i784 T1: 题目中的难点就是每次折叠的点可能应经 ...

  9. 2016.10.30 NOIP模拟赛 day2 AM 整理

    题目+数据:链接:http://pan.baidu.com/s/1gfBg4h1 密码:ho7o 总共得了:130分, 1:100分  2:30分(只会这30分的暴力) 3:0(毫无思路) 虽然不高, ...

  10. 2018.10.20 NOIP模拟 蛋糕(线段树+贪心/lis)

    传送门 听说是最长反链衍生出的对偶定理就能秒了. 本蒟蒻直接用线段树模拟维护的. 对于第一维排序. 维护第二维的偏序关系可以借助线段树/树状数组维护逆序对的思想建立权值线段树贪心求解. 代码

随机推荐

  1. 分享知识-快乐自己:JS 检查元素是否含有某种css样式

    第一种 原生 JS: ************************************************************* 结构部分: <div> <p> ...

  2. QToolBox

    QToolBox类似与以前qq好友分组的那种控件.每个分组是一个Item. 一.添加分组: 其中每个分组是通过一下函数添加的: int addItem(QWidget * w, const QIcon ...

  3. python TypeError: 'NoneType' object is not iterable

    list(set(map(lambda tp_id : tp_id if not ('#' in tp_id) and len(tp_id.strip().replace('\n', '')) > ...

  4. linux命令学习笔记(39):grep 命令

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来. grep全称是Global Regular Expression Print,表示全局正则表 ...

  5. 基于libRTMP的流媒体直播之 AAC、H264 推送

    这段时间在捣腾基于 RTMP 协议的流媒体直播框架,其间参考了众多博主的文章,剩下一些细节问题自行琢磨也算摸索出个门道,现将自己认为比较恼人的 AAC 音频帧的推送和解析.H264 码流的推送和解析以 ...

  6. 让网站变灰的CSS代码(支持IE、FIREFOX和CHROME)(转)

    方法1:支持IE <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xht ...

  7. BZOJ1345:[Baltic2007]序列问题

    浅谈栈:https://www.cnblogs.com/AKMer/p/10278222.html 题目传送门:https://lydsy.com/JudgeOnline/problem.php?id ...

  8. 【转】 Pro Android学习笔记(三七):Fragment(2):基础小例子

    目录(?)[-] 小例子运行效果 Pre-step一点准备 Step 1Activity的布局 小例子运行效果 这是一个书名和书简介的例子.运行如下图.Activity由左右两个Fragment组成, ...

  9. 通过能别的主机连接yum库

    本地有两台主机,分别为:192.168.2.131/24和192.168.2.132/24,本地yum源只能连接互联网: 这两台设备的虚拟机配置如下: 现有一台主机:172.16.254.88/16可 ...

  10. ES6学习之数组扩展

    扩展运算符(...将数组分割为用逗号分割的参数序列) console.log(...[1,2,3]) //1 2 3 可替换数组的apply写法: function test(x,y,z){ cons ...