头更更大

这个10月完就要去搞NOIP了。。。

10月30天也就3次测试。。。为保佑进省一我还是每次测试玩都写个总结。。


boomshakalaka。。。全部写炸。。。
第一题排序有一个情况没讨论到。。第二题第三题瞎搞。。
最气的是第三题瞎搞我本来能拿到暴力分的然后最后改错了。。
隔壁最后一题输出输入的最大值竟然拿了45分。。。

Sequence

题目背景
SOURCE:NOIP2015-SHY-7

题目描述
给出 n 个数。请找出一个排列使得相邻两个数的差的绝对值的和最大。请求出这个最大值。

输入格式
第一行一个整数 T 代表数据组数;
接下来 T 行,每行一个整数 n 表示数组大小,紧接着再给出 n 个整数值。

输出格式
对应 T 组输入数据输出 T 行,第 i 行格式如下:
Case i: Si
(注意:Case 和 i 之间有一个空格;i 后是一个英文冒号,冒号后有一个空格)
其中 Si 表示答案。输出格式见样例。

样例数据 1
输入  [复制]

3
4 4 2 1 5
4 1 1 1 1
2 10 1
输出

Case 1: 10
Case 2: 0
Case 3: 9
备注
【样例说明】
Case 1: 4 1 5 2 sum = abs(4-1) + abs(1-5) + abs(5-2) = 10
Case 2:1 1 1 1 sum = 0
Case 3:10 1 sum = 9

【数据范围】
对 30% 的输入数据 :T≤ 5, n≤10。
对 100% 的输入数据 :T≤100,n≤50,数的值不超过 1000。

MY.CPP

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;int n,t,ans=0;
int a[200];int main()
{cin >> t;for(int x=1;x<=t;x++){ans = 0;memset(a,0,sizeof(a));cin >> n;for(int i=1;i<=n;i++)   cin >> a[i];sort(a+1,a+n+1);ans += 2*a[n]-a[1]-a[2];if(n%2==0){for(int i=1;i<=n/2-1;i++)ans += a[n-i]-a[i];for(int i=1;i<=n/2-2;i+=2)ans += a[n-i]-a[i+2],ans += a[n-i-1]-a[i+3];}else {for(int i=1;i<=n/2;i++)ans += a[n-i]-a[i];for(int i=3;i<=n/2;i++)ans += a[n-i+2]-a[i];}cout << "Case " << x << ": " << ans << endl;}
}

以后我还是很少玩数学为好。。。。。。

STD.CPP

#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;int n,t,ans=0;
int a[200];int main()
{//freopen("sequence.in","r",stdin);//freopen("sequence.out","w",stdout);cin >> t;for(int x=1;x<=t;x++){ans = 0;memset(a,0,sizeof(a));cin >> n;for(int i=1;i<=n;i++)   cin >> a[i];sort(a+1,a+n+1);if(n==1)ans = 0;else if(n%2==0){for(int i=1;i<=n/2;i++)ans += 2*(a[n-i+1]-a[i]);   ans += a[n/2]-a[n/2+1];}else {int c1 = abs(2*a[n/2+2]-a[n/2+1]-a[n/2]);int c2 = abs(a[n/2+2]+a[n/2+1]-2*a[n/2]);for(int i=1;i<=n/2-1;i++)ans += 2*(a[n-i+1]-a[i]);  ans += max(c1,c2);}cout << "Case " << x << ": " << ans << endl;}
}

Cut

题目背景
SOURCE:NOIP2015-SHY-7

题目描述
今天是ABC的生日,他制作了一个巧克力蛋糕!你可以把它理解成一个有 R×C 个小格子组成的矩形。每个格子上都有一些巧克力 chips ,第 i 行,第 j 列的格子上有 A[i][j] 个巧克力 chips 。

有 A×B 个人要出席 ABC 的生日晚会(包括ABC自己),每个人都想得到一块蛋糕。于是他想要把他的蛋糕切成 A×B 个小块。首先,他先横着切(A-1)刀,蛋糕就变成了 A 条,然后,对于每一条,他都纵着切(B-1)刀,就的到了(A×B)个小块。为了体现自己的大度, ABC 决定最后选蛋糕,而 ABC 的朋友就不会这么想了,他们总是拿走巧克力最多的蛋糕,所以,ABC 得到的蛋糕永远是巧克力最少的那一块。

聪明的 ABC 很喜欢吃巧克力,他想得到更多的巧克力,但是他正忙着准备自己的生日晚会,于是他来寻求你的帮助,希望你不要让他失望。

输入格式
第一行一个四个整数 R,C,A,B 。
接下来 R 行,每行 C 个数,描述每个格子上的巧克力数。

输出格式
输出一个整数,表示 ABC 最多能得到的巧克力数。

样例数据 1
输入  [复制]
5 4 4 2
1 2 2 1
3 1 1 1
2 0 1 3
1 1 1 1
1 1 1 1

输出
3

备注
【样例说明】

1 2 | 2 1

———

3 | 1 1 1

———

2 0 1 | 3

———

1 1 | 1 1

1 1 | 1 1

【数据范围】
对 30% 的输入数据: 1≤R,C≤100,1≤A≤R,1≤B≤C;
对 100% 的输入数据:1≤R,C≤500,1≤A≤R,1≤B≤C,A[i][j]≤4000

我在如何判断是否且这一刀时是直接取区间和和平均值相差最小的。。。后来才发现这种情况应该二分。。。所以我的没参考价值。

STD.CPP


###include<iostream>
#include<iomanip>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;const int kkk=505;
const int inf=999999999;int r,c,a,b,x,ans;
int sum[kkk],hihi[kkk];
int cake[kkk][kkk];
int f[kkk][kkk];
double midd=0,mid[505];
void check();bool check(int x)
{int cr=1,xr=0;for(int i=1;i<=r;i++){int xc=0,jud=0;for(int j=1;j<=c;j++){jud += f[i][j] - f[cr-1][j];if(jud>=x) jud=0,++xc;if(xc==b)break;}if(xc<b) continue;else cr=i+1,++xr;if(xr==a)return true;}return false;
}int main()
{//freopen("cut.in","r",stdin);//freopen("cut.out","w",stdout);cin >> r >> c >> a >> b;for(int i=1;i<=r;i++){for(int j=1;j<=c;j++){cin >> x;cake[i][j] = x;f[i][j] = f[i-1][j]+cake[i][j];}}int left=0,rait=1000000000;while(left+1<rait){int miid = (left+rait)/2;if(check(miid))left = miid;else    rait = miid;}cout << left << endl;
}

Xor

题目背景
OURCE:NOIP2015-SHY-7

题目描述
求一棵带边权的树的一条最大 Xor 路径的值。这里的“路径”不一定从根到叶子结点,中间一段路径只要满足条件也可以。

输入格式
第一行,一个整数 N ,表示一颗树有 N 个节点,接下来 N-1 行,每行三个整数 a,b,c 表示节点 a 和节点 b 之间有条权值为 c 的边。

输出格式
输出仅一行,即所求的最大值。

样例数据 1
输入  [复制]

4
1 2 3
1 3 4
1 4 7
输出

7
备注
【数据范围】
对 40% 的输入数据 :数据退化为一条链;
另对 10% 的输入数据 :N≤1000;
对 100% 的输入数据 :1≤N≤100000, c≤2^31-1。

MY.CPP

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<string>
#include<cstring>
#include<queue>
using namespace std;int n,m,x,y,u,v;
long long val;
struct node{int u,v,val;long long next;
}side[200010];int hh[100010];int cnt=0,first[100010];
void addedge(int u,int v,long long val)
{cnt += 1;side[cnt].u = u;side[cnt].v = v;side[cnt].val = val;side[cnt].next = first[u];first[u] = cnt;
}bool visit[100010];
int dep[100010];
long long dis[100010];
int f[100010][32];
void dfs(int root,long long loc)
{visit[root] = true;for(int i=first[root];i;i=side[i].next){int u = side[i].u;    int v = side[i].v;if(!visit[v]){f[v][0] = u;dep[v] = dep[u] + 1;dis[v] = (dis[u] ^ side[i].val);dfs(v,dis[v]);}}
}#define maxx 100005
void initi(int root)
{memset(dep,0,sizeof(dep));dis[root] = 1;dep[root] = 0;dfs(root,1);for(int i=1;i<=32;i++)for(int j=1;j<=maxx;j++)if(f[j][i-1])   f[j][i] = f[f[j][i-1]][i-1];
}int main()
{//freopen("xor.in","r",stdin);//freopen("xor.out","w",stdout);    cin >> n;for(int i=1;i<n;i++){cin >> u >> v >> val;addedge(u,v,val);addedge(v,u,val);}initi(1);long long ans = 0;for(int i=1;i<n;i++)for(int j=i+1;j<=n;j++)     ans = max(ans,(dis[i]^dis[j]));cout << ans << endl;
}

好像f[i][j]没有卵用。。。
就是一个dfs然后大爆搜。。
题解用到了字典树。。还得学着打熟。。马上要考试了。。。

STD.CPP

#include<cstdlib>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#include<queue>
using namespace std;int c[33];
int n,ans,cnt;
int dis[100010],first[100010];
bool vis[100010];
int x,y,z;struct node{int to,next,w;}edge[200020];
struct Trie{int cnt;int ch[4000040][2];void insert(int x){int now=0;for(int i=30;i>=0;--i){int t = x&c[i];t >>= i;if(!ch[now][t]) ch[now][t] = ++cnt;now = ch[now][t];}}void query(int x){int temp = 0;int now = 0;for(int i=30;i>=0;--i){int t = x&c[i];t >>= i;if(ch[now][t^1]) now = ch[now][t^1],temp += c[i];else now = ch[now][t];}ans = max(temp,ans);}
}trie;void add(int x,int y,int z)
{edge[++cnt].to=y;edge[cnt].w=z;edge[cnt].next=first[x];first[x]=cnt;
}void dfs(int x)
{vis[x]=true;for(int i=first[x];i;i=edge[i].next){if(!vis[edge[i].to]){dis[edge[i].to]=dis[x]^edge[i].w;dfs(edge[i].to);}}
}int init()
{c[0]=1;for(int i=1;i<=30;++i) c[i] = c[i-1]<<1;
}int main()
{init();cin >> n;for(int i=1;i<n;++i){cin >> x >> y >> z;add(x,y,z);add(y,x,z);}dfs(1);for(int i=1;i<=n;++i) trie.insert(dis[i]);for(int i=1;i<=n;++i) trie.query(dis[i]);cout << ans << endl;return 0;
}

感想

。。。。。。
平时多做些的题。。。还要搞搞二分和字典树。。。

*TEST 1 for NOIP相关推荐

  1. NOI.AC NOIP模拟赛 第六场 游记

    NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...

  2. [OI]Noip 2018 题解总结(普及)

    考砸了,还有原谅我代码十分有限的可读性. 一个人的真正伟大之处就在于他能够认识到自己的渺小.--保罗 从一年前初一九月到现在18年10月接触OI已经有一年了.几次模拟赛也自我感觉良好,都过了一等的线, ...

  3. Noip前的大抱佛脚----字符串

    目录 字符串 经验 用FFT求解字符串匹配问题 两(多)串DP时状态合并 最长公共子序列转LIS 位运算最大值 挂链哈希 哈希处理回文串 树哈希 字符串模板库 KMP 最小循环表示 Mancher A ...

  4. NOIp 图论算法专题总结 (1):最短路、最小生成树、最近公共祖先

    系列索引: NOIp 图论算法专题总结 (1) NOIp 图论算法专题总结 (2) NOIp 图论算法专题总结 (3) 最短路 Floyd 基本思路:枚举所有点与点的中点,如果从中点走最短,更新两点间 ...

  5. python能参加奥赛吗-家长们注意了!关于信息学奥赛(NOIP),你需要知道这些...

    原标题:家长们注意了!关于信息学奥赛(NOIP),你需要知道这些 导读:获得全国青少年信息学奥林匹克联赛(NOIP)一等奖的应届高中毕业生,均具有保送进入高校就读的资格.部分地区一等奖获奖选手还享有高 ...

  6. python期末考试题及答案翻译-用 python 解 NOIP 竞赛题

    以下为2017年全国 NOIP 提高组复赛的第1题: image.png image.png --------------------------------------- 问题展示完毕 ------ ...

  7. 过河 2005年NOIP全国联赛提高组(离散化+dp)

    1105 过河 2005年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond       题目描述 Description 在河上有一 ...

  8. 【游记】NOIP 2017

    时间:2017.11.11~2017.11.12 地点:广东省广州市第六中学 Day1 T1:看到题目,心想这种题目也能放在T1? 这个结论我之前遇到过至少3次,自己也简单证明过.初见是NOIP200 ...

  9. [NOIP 2015]运输计划-[树上差分+二分答案]-解题报告

    [NOIP 2015]运输计划 题面: A[NOIP2015 Day2]运输计划 时间限制 : 20000 MS 空间限制 : 262144 KB 问题描述 公元 2044 年,人类进入了宇宙纪元. ...

  10. 2019.08.17【NOIP?提高组】模拟 A 组 总结

    (今天标题验证NOIP取消了吗...) 心态巨崩 考场:\(50 + 20 + 0 = 70\) T1: 考场上推式子,看能否有仅包含一个点的值. 然后推到后面推出来一个用\(abs(Q(y1-y2) ...

最新文章

  1. SPRING3.X JSON 406 和 中文乱码问题
  2. 分段函数是不是一定初等函数_查漏补缺问题64:一个含多参数分段函数的连续性与可导性讨论...
  3. 【Crash Course Psychology】1. Intro to psychology笔记
  4. SharedSDK微信分享不成功,分享之后没有反应
  5. oracle的导出参数statistic,使用expdp导出时评估所需存储容量大小
  6. 关闭共享的DOS命令
  7. 一些忘记了的....
  8. DIgSILENT出图到Matlab画图到Visio画图全过程
  9. Struts的增删改查
  10. 计算机系统基础第一章·CPI、MIPS
  11. EcmaScript 2022中的新特性
  12. 《项梵自述》分享我的心酸经历
  13. 汉堡式折叠html,CSS/HTML - 带CSS的汉堡菜单
  14. 国产台式电子计算机,国产十大台式电子管名机6——东方红82-Y型收音机(一)
  15. window10快捷键
  16. 解决签名无法校验通过的问题
  17. P17-Windows与网络基础-Windows文件共享
  18. Xcode的几个编译设置
  19. ps基础学习:邮票效果制作
  20. html弹出窗口是浮动,JS实现弹出浮动窗口(支持鼠标拖动和关闭)实例详解

热门文章

  1. macOS Monterey 12.3 (21E230) 正式版 ISO、IPSW、PKG 下载
  2. image not loaded  try to open it externally to fix format problem
  3. 八行代码一键照片转漫画
  4. 微信小程序样式Flex Box精通课程-Flex容器的属性-justify-content内容对齐(左中右)
  5. TLF 使用详解!!
  6. TLF80511TC 是一款线性低压差稳压器—科时进商城
  7. Sci-hub最新变种网址
  8. uchome的Ajax
  9. 脑机接口专栏 | 如何分析静息状态的fMRI数据?(二)
  10. 解决windows2003 sp1“数据执行保护”惹的祸