2017-10-20 NOIP模拟赛2
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的更多相关文章
- 2017 10.25 NOIP模拟赛
期望得分:100+40+100=240 实际得分:50+40+20=110 T1 start取了min没有用,w(゚Д゚)w O(≧口≦)O T3 代码3个bug :数组开小了,一个细节没注意, ...
- 10.16 NOIP模拟赛
目录 2018.10.16 NOIP模拟赛 A 购物shop B 期望exp(DP 期望 按位计算) C 魔法迷宫maze(状压 暴力) 考试代码 C 2018.10.16 NOIP模拟赛 时间:2h ...
- 10.17 NOIP模拟赛
目录 2018.10.17 NOIP模拟赛 A 咒语curse B 神光light(二分 DP) C 迷宫maze(次短路) 考试代码 B 2018.10.17 NOIP模拟赛 时间:1h15min( ...
- 2018.10.16 NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 100 + 20 = 220\) 实际得分:\(100 + 100 + 30 = 230\) 辣鸡模拟赛.. T1T2都是一眼题,T3考验卡常数还只有一档暴力分. ...
- 2017.5.27 NOIP模拟赛(hzwer2014-5-16 NOIP模拟赛)
期望得分:100+100+60+30=290 实际得分:100+20+60+0=180 当务之急:提高一次正确率 Problem 1 双色球(ball.cpp/c/pas) [题目描述] 机房来了新一 ...
- 2018.10.30 NOIp模拟赛 T1 改造二叉树
[题目描述] 小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作“左孩子”和“右孩子”.二叉树被用作二叉搜索树和二叉堆.随后他又和他人讨论 ...
- 【2019.7.20 NOIP模拟赛 T1】A(A)(暴搜)
打表+暴搜 这道题目,显然是需要打表的,不过打表的方式可以有很多. 我是打了两个表,分别表示每个数字所需的火柴棒根数以及从一个数字到另一个数字,除了需要去除或加入的火柴棒外,至少需要几根火柴棒. 然后 ...
- 2016.10.30 NOIP模拟赛 day2 PM 整理
满分:300分 直接全部爆零,真的是很坑啊! 10.30的题目+数据:链接:http://pan.baidu.com/s/1jHXLace 密码:i784 T1: 题目中的难点就是每次折叠的点可能应经 ...
- 2016.10.30 NOIP模拟赛 day2 AM 整理
题目+数据:链接:http://pan.baidu.com/s/1gfBg4h1 密码:ho7o 总共得了:130分, 1:100分 2:30分(只会这30分的暴力) 3:0(毫无思路) 虽然不高, ...
- 2018.10.20 NOIP模拟 蛋糕(线段树+贪心/lis)
传送门 听说是最长反链衍生出的对偶定理就能秒了. 本蒟蒻直接用线段树模拟维护的. 对于第一维排序. 维护第二维的偏序关系可以借助线段树/树状数组维护逆序对的思想建立权值线段树贪心求解. 代码
随机推荐
- 分享知识-快乐自己:slor 服务的搭建
Slor 服务的搭建: 1):上传 solr tar包到指定目录 2):解压到 指定目录下 [root@admin tools]# tar -zxvf solr-4.10.3.tgz.tgz -C ...
- Python-单元测试unittest
Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作,概念见下: TestCase 也就是测试用例 Test ...
- 幻想乡三连A:五颜六色的幻想乡
非常直接地构造 由于答案与生成树计数有关,所以一定要使用矩阵树定理,但这样就不能限制每种颜色的便使用的数量 我们构造$N^2$个关于$Ans_{x,y}$的方程,枚举将红色的边拆成$x$条,将蓝色的边 ...
- 每天一个linux命令(10):touch命令
版权声明更新:2017-05-14博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 本文介绍了Linux下面的mv命令. 2. ...
- Popular Cows
传送门(poj):http://poj.org/problem?id=2186 (bzoj):http://www.lydsy.com/JudgeOnline/problem.php?id=1051 ...
- 洛谷【P1138】第k小整数
题目传送门:https://www.luogu.org/problemnew/show/P1138 桶排: 对于值域在可以接受的范围内时,我们可以用不依赖比较的桶排去将数据排序.因为桶排不依赖比较排序 ...
- xml schema 中如何定义类似Map的结构
利用xs:unique关键字.在xs:element里添加unique节点,任意命名,然后用xs:selector来选择需要唯一的域, xs:field 里指定特定的字段. 例如:定义所有Item里的 ...
- 【转】Pro Android学习笔记(八):了解Content Provider(下中)
在之前提供了小例子BookProvider,我们回过头看看如何将通过该Content Provider进行数据的读取. (1)增加 private void addBook(String name , ...
- 宽字符wchar_t和窄字符char区别和相互转换
转自:http://blog.csdn.net/nodeathphoenix/article/details/7416725 1. 首先,说下窄字符char了,大家都很清楚,就是8bit表示的b ...
- 奇异值分解(SVD)实例,将不重要的特征值改为0,原X基本保持不变
>> s = rand(5,7) s = 0.4186 0.8381 0.5028 0.1934 0.6979 0.4966 0.6602 0.8462 0.0196 0.7095 ...