核心内容摘要
StructBERT中文情感分析实战:结合关键词提取,生成‘好评理由TOP5’报告
P1047 [NOIP 2005 普及组] 校门外的树题目描述某校大门外长度为 l 的马路上有一排树每两棵相邻的树之间的间隔都是 1 米。
我们可以把马路看成一个数轴马路的一端在数轴 0 的位置另一端在 l 的位置数轴上的每个整数点即 0,1,2,…,l都种有一棵树。
由于马路上有一些区域要用来建地铁。
这些区域用它们在数轴上的起始点和终止点表示。
已知任一区域的起始点和终止点的坐标都是整数区域之间可能有重合的部分。
现在要把这些区域中的树包括区域端点处的两棵树移走。
你的任务是计算将这些树都移走后马路上还有多少棵树。
输入格式第一行有两个整数分别表示马路的长度 l 和区域的数目 m。
接下来 m 行每行两个整数 u,v表示一个区域的起始点和终止点的坐标。
输出格式输出一行一个整数表示将这些树都移走后马路上剩余的树木数量。
输入输出样例输入 #1复制500 3 150 300 100 200 470 471输出 #1复制298说明/提示【数据范围】对于 20% 的数据保证区域之间没有重合的部分。
对于 100% 的数据保证 1≤l≤1041≤m≤1000≤u≤v≤l。
【题目来源】NOIP 2005 普及组第二题由题目观察就得到差分数组的第一项是一后面都是零。
有一个要注意的从0号开始种树。
#includeiostream using namespace std; const int N1e410; typedef long long LL; LL f[N];//前缀和数组 LL len,m,l,r; int main() { f[1]1; cinlenm; len; int d-1; while(m--) { cinlr; l; r; f[l]d; f[r1]-d; } for(int i1;ilen;i) f[i]f[i-1]; int cnt0; for(int i1;ilen;i) { if(f[i]
cnt; } coutcntendl; return 0; }
枚举 · 例7-【模板】差分略。
P1003 [NOIP 2011 提高组] 铺地毯题目描述为了准备一个独特的颁奖典礼组织者在会场的一片矩形区域可看做是平面直角坐标系的第一象限铺上一些矩形地毯。
一共有 n 张地毯编号从 1 到 n。
现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设后铺的地毯覆盖在前面已经铺好的地毯之上。
地毯铺设完成后组织者想知道覆盖地面某个点的最上面的那张地毯的编号。
注意在矩形地毯边界和四个顶点上的点也算被地毯覆盖。
输入格式输入共 n2 行。
第一行一个整数 n表示总共有 n 张地毯。
接下来的 n 行中第 i1 行表示编号 i 的地毯的信息包含四个整数 a,b,g,k每两个整数之间用一个空格隔开分别表示铺设地毯的左下角的坐标 (a,b) 以及地毯在 x 轴和 y 轴方向的长度。
第 n2 行包含两个整数 x 和 y表示所求的地面的点的坐标 (x,y)。
输出格式输出共 1 行一个整数表示所求的地毯的编号若此处没有被地毯覆盖则输出-1。
输入输出样例输入 #1复制3 1 0 2 3 0 2 3 3 2 1 3 3 2 2输出 #1复制3输入 #2复制3 1 0 2 3 0 2 3 3 2 1 3 3 4 5输出 #2复制-1说明/提示【样例解释 1】如下图1 号地毯用实线表示2 号地毯用虚线表示3 号用双实线表示覆盖点 (2,
的最上面一张地毯是 3 号地毯。
【数据范围】对于 30% 的数据有 n≤2。
对于 50% 的数据0≤a,b,g,k≤100。
对于 100% 的数据有 0≤n≤104, 0≤a,b,g,k≤105。
noip2011 提高组 day1 第 1 题。
#includeiostream typedef long long LL; const int N1e410; LL a[N],b[N],g[N],k[N],n; LL x,y; using namespace std; int solve() { cinn; for(int i1;in;i) cina[i]b[i]g[i]k[i]; cinxy; for(int in;i1;i--) { if(xa[i] xa[i]g[i] yb[i] yb[i]k[i]) return i; } return -1; } int main() { LL retsolve(); coutretendl; return 0; }
P1014 [NOIP 1999 普及组] Cantor 表题目描述现代数学的著名证明之一是 Georg Cantor 证明了有理数是可枚举的。
他是用下面这一张表来证明这一命题的我们以 Z 字形给上表的每一项编号。
第一项是 1/1然后是 1/22/13/12/2…输入格式整数 N1≤N≤107。
输出格式表中的第 N 项。
输入输出样例输入 #1复制7输出 #1复制1/4说明/提示
0:30 数据中加入了样例放在不计分的子任务 2 中。
这一题就是观察规律分别计算出行和列。
我是观察的分母发现分母存在上图的规律。
有了分母之后能发现在一行里面分母跟分子相加得到的是特定的数这个数就是行数加一从而能算出分子。
如果行是偶数的话就会反着最后要交换一下。
#includeiostream #includecmath using namespace std; int main() { int an; cin an; int row, col; row sqrt(an *
; if (row*(row
/2an) row; int last row * (row
/ 2; col row - (last - an); int mom col; int son row - col 1; if (row % 2
{ int tmp mom; mom son; son tmp; } cout son / mom endl; return 0; }
P3650 [USACO
3] 滑雪课程设计Ski Course Design题目描述农民约翰的农场里有 n 座山峰每座山都有一个在 0 到 100 之间的整数的海拔高度。
在冬天,因为山上有丰富的积雪约翰经常开办滑雪训练营。
不幸的是约翰刚刚得知税法在滑雪训练营方面有新变化明年开始实施。
在仔细阅读法律后他发现如果滑雪训练营的最高和最低的山峰海拔高度差大于 17 就要收税。
因此如果他改变山峰的高度使最高与最低的山峰海拔高度差不超过 17 约翰可以避免支付税收。
如果改变一座山 x 单位的高度成本是 x2 单位约翰最少需要付多少钱才能使海拔最高的山峰与海拔最低的山峰的高度之差不超过 17。
约翰只愿意改变整数单位的高度。
输入格式输入的第一行是一个整数代表山峰的数量 n。
第 2 行到(n
行每行一个整数。
第 i 行的整数 ai 代表第 i 座山的海拔高度。
输出格式输出一行一个整数代表约翰需要支付修改山海拔高度的总金额。
输入输出样例输入 #1复制5 20 4 1 24 21输出 #1复制18说明/提示样例输入输出 1 解释约翰保持高度为
20 和 21 的山的高度。
他增高高度为 1 的山变成高度 4 花费 329。
他降低了高度为 24 的山变成高度 21也花费 329。
因此总共花费 9918。
数据规模与约定对于 100% 的数据1≤n≤10000≤ai≤100。
这一题我就是枚举的所有可能的最低点再计算以这个点为最低点所需要的花费。
因为以这个点为最低点的话它就会有一个最低点最高点如果超出了最低点最高点然后就要加上花费。
然后计算好之后就求最小的输出最小的花费就行。
#includeiostream using namespace std; int h[10010]; int calc(int low, int h[], int n) { int sum 0; int high low 17; for (int i 1;i n;i) { if (h[i] low) sum (low - h[i]) * (low - h[i]); if (h[i] high) sum (h[i] - high) * (h[i] - high); } return sum; } int main() { int n; cin n; for (int i 1;i n;i) cin h[i]; int min_cost calc(1, h, n); for (int low 2;low 73;low) min_cost min(min_cost, calc(low, h, n)); cout min_cost endl; return 0; }
P1618 三连击升级版题目描述将 1,2,…,9 共 9 个数分成三组分别组成三个三位数且使这三个三位数的比例是 A:B:C试求出所有满足条件的三个三位数若无解输出No!!!。
//感谢黄小U饮品完善题意输入格式三个数A,B,C。
输出格式若干行每行 3 个数字。
按照每行第一个数字升序排列。
输入输出样例输入 #1复制1 2 3输出 #1复制192 384 576 219 438 657 273 546 819 327 654 981说明/提示保证 0≤ABC≤999。
upd
2022.
3新增加二组 Hack 数据。
这一题其实一开始我也是没有过几个测试点主要就是a等于零或者i不能被a整除还有排除j和k超出范围的情况也就是我注释那两行我没有考虑到。
我开了一个st数组来表示状态分别把i、j、k的个位、十位、百位都累计进去。
#includeiostream using namespace std; //累计i、j、k的个位、十位、百位 bool check(int a,int b,int c,int i,int j,int k) { int st[10]{0,0,0,0,0,0,0,0,0,0}; st[i/100]; st[j/100]; st[k/100]; st[i/10%10]; st[j/10%10]; st[k/10%10]; st[i%10]; st[j%10]; st[k%10]; if(st[0]!