cstring

蓝桥杯算法训练

时光毁灭记忆、已成空白 提交于 2021-02-16 11:07:58
算法训练 区间k大数查询 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。 输入格式 第一行包含一个数n,表示序列长度。 第二行包含n个正整数,表示给定的序列。 第三个包含一个正整数m,表示询问个数。 接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。 输出格式 总共输出m行,每行一个数,表示询问的答案。 样例输入 5 1 2 3 4 5 2 1 5 2 2 3 2 样例输出 4 2 数据规模与约定 对于30%的数据,n,m<=100; 对于100%的数据,n,m<=1000; 保证k<=(r-l+1),序列中的数<=106。 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn=5e3+ 10 ; 4 int dp[maxn][ 3 ]; 5 int a[ 1000 ]; 6 int b[ 1000 ]; 7 bool cmp( int a, int b){ 8 return a> b; 9 } 10 int main(){ 11 ios::sync_with_stdio( 0 ); 12 memset(b, 0 , sizeof (b)); 13 memset(a, 0 , sizeof (a));

CF 293E Close Vertices——点分治

独自空忆成欢 提交于 2021-02-16 10:22:40
题目: http://codeforces.com/contest/293/problem/E 仍旧是点分治。用容斥,w的限制用排序+两个指针解决, l 的限制就用树状数组。有0的话就都+1,相对大小不变。 切勿每次memset!!!会T得不行。add(sta[ l ].len)即可,但要判一下(l==r)以防不测。(真的有那种数据!) 最后注意树状数组的范围是L(即L+1),不是n。不然可以尝试: 2 10 12 1 5 #include<iostream> #include <cstdio> #include <cstring> #include <algorithm> #define ll long long using namespace std; const int N=1e5+ 5 ; int n,L,W,hd[N],xnt,to[N<< 1 ],nxt[N<< 1 ],w[N<< 1 ]; int mn,rt,f[N],l,r,siz[N],lm; ll ans; bool vis[N]; struct Sta{ int w,len;Sta( int w= 0 , int l= 0 ):w(w),len(l) {} bool operator < ( const Sta &b) const { return w==b.w?len<b.len:w< b.w;} }sta

记CRenderTarget:DrawText()绘制中文乱码的BUG及解决办法

走远了吗. 提交于 2021-02-15 03:55:11
原文: 记CRenderTarget:DrawText()绘制中文乱码的BUG及解决办法 转载请注明出处: http://www.cnblogs.com/Ray1024 一、 问题描述 在MFC中使用Direct2D有现成的方法,在Visual Studio 2010 SP1及以上环境中MFC封装了Direct2D,我们就可以更加方便、更加简洁地使用Direct2D来进行高效率绘图了,详细教程见msdn https://msdn.microsoft.com/zh-cn/library/gg482848.aspx 。 但是在实际项目中遇到一个问题:MFC项目编码方式为unicode时,CRenderTarget::DrawText()方法正常;但是编码方式为多字节编码时,CRenderTarget::DrawText()绘制中文出现乱码。如下图: 二、 问题分析 这个问题出现之后,我设置断点定位到CRenderTarget::DrawText()调用处,F11进入afxrendertarget.cpp文件中的函数CRenderTarget::DrawText() 内部,查看函数如下: void CRenderTarget::DrawText(const CString& strText, const CD2DRectF& rect, CD2DBrush*

loj #121. 「离线可过」动态图连通性

人盡茶涼 提交于 2021-02-14 16:02:26
#121. 「离线可过」动态图连通性 内存限制:512 MiB 时间限制:800 ms 标准输入输出 题目类型:传统 评测方式:文本比较 上传者: EtaoinWu 提交 提交记录 统计 讨论 1 测试数据 题目描述 这是一道被离线爆艹的模板题。 你要维护一张无向简单图。你被要求加入删除一条边及查询两个点是否连通。 0:加入一条边。保证它不存在。 1:删除一条边。保证它存在。 2:查询两个点是否联通。 输入格式 输入的第一行是两个数 N MN\ M N M。 N≤5000,M≤500000N \leq 5000,M \leq 500000 N ≤ 5 0 0 0 , M ≤ 5 0 0 0 0 0。 接下来 MM M 行,每一行三个数 op x y\text{op} \ x \ y o p x y。 op\text{op} o p 表示操作编号。 输出格式 对于每一个 op=2\text{op}=2 o p = 2 的询问,输出一行 Y 或 N ,表示两个节点是否连通。 样例 样例输入 1 200 5 2 123 127 0 123 127 2 123 127 1 127 123 2 123 127 样例输出 1 N Y N 样例输入 2 4 10 0 1 2 0 2 3 0 3 1 2 1 4 0 4 3 2 1 4 1 2 3 2 1 4 1 1 3 2 1 4 样例输出 2

2019年湘潭大学程序设计竞赛(重现赛)

谁都会走 提交于 2021-02-13 05:03:21
https://ac.nowcoder.com/acm/contest/893#question A:签到1 #include<algorithm> #include <cstring> #include <iostream> #include <math.h> #include < string > #include <stdio.h> #include <map> #include <queue> #define ll long long #define inf 0x3f3f3f3f using namespace std; int n1,n2,p1,p2,s1,s2; int main() { while (cin>>n1>>p1>>s1>>n2>>p2>> s2) { if (n1> n2) printf( " 1\n " ); else if (n1< n2) printf( " 2\n " ); else { if (p1< p2) printf( " 1\n " ); else if (p1> p2) printf( " 2\n " ); else { if (s1< s2) printf( " 1\n " ); else if (s1> s2) printf( " 2\n " ); else printf( " God\n " ); } } } return 0 ;

P1015回文数

我怕爱的太早我们不能终老 提交于 2021-02-13 03:43:50
传送 回文数的判断有个神奇的公式: g[i]==g[leng+ 1 -i] 其中leng为字符串长度,看每个g[i]是否都满足它,若满足,就是回文数 ps:洛谷的impossible有毒,必须得复制题干中的impossible 代码如下: #include<iostream> #include <cstdio> #include <cstring> using namespace std; char c[ 100001 ]; int t,k,lena,leng= 1 ,a[ 100001 ],b[ 100001 ],g[ 100001 ],n; void pd(); void jf() { int x= 0 ;leng= 1 ;g[ 1 ]= 0 ; while (leng<=lena+ 1 ) {g[leng] =a[leng]+a[lena+ 1 -leng]+ x; x =g[leng]/ n; g[leng] %= n; leng ++ ; }g[leng + 1 ]=x;t++; // cout<<t; while (g[leng]== 0 &&leng> 1 ) {leng -- ; } pd(); } void pd() { int o= 0 ; for ( int i= 1 ;i<=leng/ 2 ;i++ ) { if (g[i]==g[leng+ 1 - i])

洛谷P1012 拼数

怎甘沉沦 提交于 2021-02-13 02:12:10
题目描述 设有 nn n 个正整数 (n≤20)(n≤20) ( n ≤ 2 0 ) ,将它们联接成一排, 组成一个最大的多位整数。 例如: n=3 时, 3 个整数 13 , 312 , 343 联接成的最大整数为: 34331213 又如: n=4 时, 4 个整数 7 , 13 , 4 , 246 联接成的最大整数为: 7424613 输入输出格式 输入格式: 第一行,一个正整数 n 。 第二行, n 个正整数。 输出格式: 一个正整数,表示最大的整数 输入输出样例 输入样例#1: 复制 3 13 312 343 输出样例#1: 复制 34331213 快排或者冒泡 冒泡的原理是每次将一个无论和谁组合 都是将它放在后面最优的选出来,选n-1次最小的就可以了。 #include<iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; int n; string s[ 22 ]; bool cmp( string a, string b){ return a+b>b+ a; } int main(){ scanf( " %d " ,& n); for ( int i= 1 ;i<=n;i++)cin>> s[i]; sort(s + 1 ,s+n+ 1

拼数

随声附和 提交于 2021-02-13 01:49:31
题目描述 设有 n个正整数 ( n ≤ 2 0 ),将它们联接成一排,组成一个最大的多位整数。 例如: n=3 时, 3 个整数 1 3, 3 1 2, 3 4 3联接成的最大整数为: 3 4 3 3 1 2 1 3 又如: n = 4时, 4 个整数 7 , 13 , 4, 2 4 6联接成的最大整数为: 7 4 2 4 6 1 3 输入输出格式 输入格式: 第一行,一个正整数 n n。 第二行, n n个正整数。 输出格式: 一个正整数,表示最大的整数 样例: cin>> 3 13 312 343 cout<< 34331213 代码: #include<iostream> #include <cstdio> #include <cmath> #include <cstdlib> #include <iomanip> #include <algorithm> #include <cstring> using namespace std; struct num{ string s; }a[ 21 ]; bool cmp(num a,num b){ return a.s+b.s>b.s+ a.s; } int main(){ int n; cin >> n; for ( int i= 1 ;i<=n;i++ ) cin >> a[i].s; sort(a + 1 ,a+ 1 + n

nyoj 44-子串和(子串和最大问题)

爱⌒轻易说出口 提交于 2021-02-12 09:58:29
44-子串和 内存限制:64MB 时间限制:5000ms Special Judge: No accepted:12 submit:48 题目描述: 给定一整型数列{a 1 ,a 2 ...,a n },找出连续非空子串{a x ,a x+1 ,...,a y },使得该子序列的和最大,其中,1<=x<=y<=n。 输入描述: 第一行是一个整数N(N<=10)表示测试数据的组数) 每组测试数据的第一行是一个整数n表示序列中共有n个整数,随后的一行里有n个整数I(-100=<I<=100),表示数列中的所有元素。(0<n<=1000000) 输出描述: 对于每组测试数据输出和最大的连续子串的和。 样例输入: 复制 1 5 1 2 -1 3 -2 样例输出: 5 提示: 输入数据很多,推荐使用scanf进行输入 分析:   只有对正数才进行累加,但每一步都要判断该值与原先最大值间的最大值 步骤:   ①、判断第i-1个数如果大于0,就类加上第i个数(保证第i位通过前驱、或本身能够达到最大值)   ②、判断原先my_max 与 现在第i位数字的大小,保留大的数在my_max中 核心代码: 1 scanf( " %d " , &A[ 0 ]); 2 for ( int i = 1 ; i < n; ++ i) 3 { 4 if (A[i- 1 ] > 0 ) A[i] += A[i- 1

2019icpc-徐州网络赛

纵饮孤独 提交于 2021-02-12 09:11:14
B. hxc写的   AC code: #pragma GCC optimize(2) #include <cstdio> #include <queue> #include < string > #include <cstring> #include <algorithm> #include <cstdlib> #include <iostream> #include <iomanip> #include <cmath> #include <vector> #include < set > #include <map> #include <fstream> #include <cassert> #define ll long long #define R register int #define I inline void #define lc c[x][0] #define rc c[x][1] using namespace std; const int INF = 0x3f3f3f3f ; const int maxn = 1e6 + 10 ; int n,q; inline int read() { int x= 0 ,f= 0 ; char ch= 0 ; while (!isdigit(ch)) {f|=ch== ' - ' ;ch= getchar();}