- 博客(71)
- 收藏
- 关注
原创 codeforces724B Batch Sort
题意:对于每一行最多只能交换2个数也可以不交换,或者交换某2列操作。最多只能有n+1次操作。问能不能使得最后每行的数都是1-m递增的。#include<bits/stdc++.h>using namespace std;int n,m,a[21][21];bool check(){ for(int i=1;i<=n;i++) { int cnt=0; for(int j=1;j<=m;j++) { if(a[i][j]!=j)cnt++; }.
2020-09-14 09:25:42
195
原创 1314:【例3.6】过河卒(Noip2002)
思路:刚开始dfs会超时,卒只能向下或者向右走。可递推出路径数的总和f[i][j]=f[i-1][j]+f[i][j-1]。超时代码#include<bits/stdc++.h>using namespace std;int a[21][21],vis[21][21],n,m,xx,yy,cnt=0;int dir[8][2]={{-2,-1},{-1,-2},{2,-1},{1,-2},{2,1},{1,2},{-1,2},{-2,1}};int dr[2][2]={{0,1},.
2020-09-03 19:50:03
412
原创 位数问题
思路:暴力肯定会超时。开一个二维数组f[1000][2],用f[i][0]表示前i位中含偶数个3的个数,f[i][1]表示前i位中含奇数个3的个数。 注意到首位的时候要去掉前导0的情况。#include<bits/stdc++.h>using namespace std;int main(){ int n,f[1001][2];cin>>n; //f[i][0]表示前i位含偶数个3 //f[i][1]表示前i位含有奇数个3 f[1][0]=8;f[1][1]=1;.
2020-09-03 15:53:10
231
原创 CodeForces - 1030C Vasya and Golden Ticket(思维题)
题意:给你一个字符串。问你能不能划分成几段 使得每段的数字和相等 最少有2段。思路:算出每位的前缀和 相等的数字和肯定是某位的前缀和 枚举每一位前缀和#include<iostream>#include<string.h>using namespace std;int main(){ int n,a[101],t=0; string s; cin>>n>>s; for(int i=0;i<s.length();i++) a[.
2020-06-10 16:12:25
409
原创 codeforces817B Makes And The Product(思维)
题意:给你一个数组。找到三个数乘积最小 问有多少种方式取这三个数思路:对数组进行排序,找到最前面三个数然后进行分类讨论#include<bits/stdc++.h>using namespace std;int a[100005],b[100005];int main(){ int n; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; b[i]=a[i]; } sort(b+1,b+n+1)..
2020-06-10 14:46:19
173
原创 codeforces425A Sereja and Swaps(暴力)
思路:枚举所有的区间,找到i到j里的最小值和区间外的最大值做比较。如果区间内的最小值比区间外的最大值小就交换#include<bits/stdc++.h>#define inf 0x3f3f3f3f;using namespace std;int n,k,a[201];bool cmp(int a,int b){ return a>b;}int summax(int l,int r){ vector<int>A,B; for(int i=1;i<.
2020-06-09 22:33:45
344
原创 一本通1231(最小新整数)
#include<bits/stdc++.h>using namespace std;int main(){ int t;cin>>t; while(t--) { char s[50]; int k,l; cin>>s>>k; l=strlen(s); while(k--) { for(int i=0;i<l-1;i++) { if(s[i]>s[i+1]) { for(i.
2020-05-30 10:53:00
354
原创 codeforces1339B Sorted Adjacent Differences(排序 差值)
题意:根据数字前后2个值的差值的绝对值排序思路:sort从小到大排序一遍,之后从中间开始取值左一个右一个输出,离得越远的差值越大#include<bits/stdc++.h>using namespace std;int a[100005];int main(){ int t;cin>>t; while(t--) { int n;cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; sort(a..
2020-05-26 19:19:53
242
原创 codeforces1352C K-th Not Divisible by n(数学思维)
题意:给你n和k,求从1开始不能被n整除的第k个整数思路:分段求 如 n=3,k=7时。1 2|4 5|7 8| 10 11显然答案是10 n-1个数为一段 求出有几段|再加上k就是答案#include<bits/stdc++.h>using namespace std;int main(){ int t;cin>>t; while(t--) { int n,k;cin>>n>>k; int zu; if(k%(n-1)==0).
2020-05-23 12:51:03
399
原创 codeforces1352B Same Parity Summands(思维)
题意:给你一个合为n,个数为k,问能不能用k个全偶数或者全奇数加起来和为n,可以的话输出案例思路:先判断k-1个1+一个奇数能不能为n或者k-1个2+一个偶数能不能为n#include<bits/stdc++.h>using namespace std;int main(){ int t;cin>>t; while(t--) { int n,k;cin>>n>>k; int t=k-1; int sum1=n-t,sum2=n-..
2020-05-22 22:36:37
302
原创 Ternary String(包含1,2,3最短串长度)
题意:给你一个字符串求出包含1,2,3最短的子串长度思路:求出1,2,3字符的每个位置,当三个字符都在的时候,求子串的长度。如果有更小的则更新答案#include<bits/stdc++.h>using namespace std;int main(){ int t;cin>>t; while(t--) { string s;cin>>s; int a=-1,b=-1,c=-1; int sum=0x3f3f3f3f,ans=0x3f3f3f.
2020-05-19 19:07:02
627
原创 昆虫繁殖(地铁)
#include<bits/stdc++.h>using namespace std;long long a[51],b[51];int x,y,z;int main(){ cin>>x>>y>>z; for(int i=1;i<=x;i++) a[i]=1,b[i]=0;//1月到x月,成虫数量为1,卵数量为0 for(int i=x+1;i<=z+1;i++) { b[i]=a[i-x]*y;//第i个月卵的数量是.
2020-05-14 20:22:16
290
原创 方格取数
四维dp,2个人同时一起走 dp[i][j][k][l]表示第一个人走到i,j 第二个人走到k,l位置的最短路径和#include<bits/stdc++.h>using namespace std;int a[15][15],dp[15][15][15][15];int main(){ int n;cin>>n; memset(a,0,sizeof(a)); int x,y,d; while(scanf("%d%d%d",&x,&y,&am..
2020-05-10 14:41:19
312
原创 股票买卖
问题相当于:一个数组 i<=j<=k<=l 求a[j]-a[i]+a[l]-a[k]的最大值思路:以某一个数位节点,求出这个数之前的利润最大值和这个数之后的利润最大值#include<bits/stdc++.h>#define inf 0x3f3f3f3f;using namespace std;int a[100005],minl[100005],maxr[100005],dp1[100005],dp2[100005];int main(){ int t..
2020-05-10 12:58:59
418
原创 codeforces 961B Lecture Sleep(前缀和)
题意:有n分钟,和能保持注意力的k分钟。选定1到n-k+1钟的任意一个位置可连续保持注意力k分钟记录数组a[i]的值。 t=0睡着,t=1清醒。求最大保持记录的a[i]值的和思路:找到t=0时的保持k分钟的最大和#include<bits/stdc++.h>using namespace std;int a[100005],t[100005];long long pre[1...
2020-04-19 16:51:48
206
原创 Hdu-4525 魔法串
#include<bits/stdc++.h>using namespace std;int main(){ int t,cnt=0; cin>>t; while(t--) { string s1,s2; cin>>s1>>s2; int m,mark[27][27]; cin>>m; mems...
2020-04-18 20:06:18
156
原创 Maximum sum
思路:先dp求出左边和右边的最大子序列和。再求出每个位置左边和右边最大的和#include<bits/stdc++.h>using namespace std;int dp1[50001],dp2[50001],a[50001],lmax[50001],rmax[50001];int main(){ int t; cin>>t; while(t--) {...
2020-04-18 16:10:32
168
原创 CodeForces-960B Minimize the error
题意:要使2个数组分别对应的值的差尽可能的小。思路:把他们的差存入c数组 再把c数组里面绝对值最大的数进行改变,如果大于0就-- 小于0就++ 注意要用long long 会卡范围#include<bits/stdc++.h>using namespace std;long long a[1001],b[1001],c[1001];int n,k1,k2;bool cm...
2020-04-17 21:50:56
238
原创 友好城市
思路:先将南岸的坐标按照升序排序,再根据所对应的北岸的坐标求出北岸的不下降序列的最长长度即是答案。#include<bits/stdc++.h>using namespace std;struct node{ int a,b;};node c[5010];bool cmp(node A,node B){ if(A.a==B.a)return A.b<B.b; ...
2020-04-15 22:47:13
204
原创 最低通行费
思路:需要推出dp[i][j]=min(dp[i-1][j],dp[i][j-1])+a[i][j]表示在i,j位置时的最短花费get新知识memset的赋值#include<bits/stdc++.h>using namespace std;int dp[101][101],a[101][101];int main(){ int n; cin>>n;...
2020-04-15 22:08:34
176
原创 怪盗基德的滑翔翼
#include<bits/stdc++.h>#define INF 0x3f3f3f3f;using namespace std;int n,a[101],dp[101][2],ans=-INF;int main(){ int t; cin>>t; while(t--) { cin>>n; memset(dp,0,sizeof(d...
2020-04-14 23:40:06
275
原创 最大上升子序列和
#include<bits/stdc++.h>#define INF 0x3f3f3f3f;using namespace std;int n,a[1010],dp[1010],ans=-INF;int main(){ cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;...
2020-04-14 23:18:30
169
原创 检查点(最短距离)
思路:要访问n-1个点,只有2大类 1到n-1或者2到n,再讨论pos先到1还是先到n-1或者pos先到n-1再到1,n-1到2的类似,四种里面最小值即可。注意:如果只有1个数直接输出0#include<bits/stdc++.h>#define INF 0x3f3f3f3f;using namespace std;int a[100005];int main(){ ...
2020-04-13 23:55:11
303
原创 键盘检查
#include<bits/stdc++.h>using namespace std;string ans[501];int main(){ int n=0; string s1,s2; map<char,int>m; cin>>s1>>s2; for(int i=0;i<s1.length();i++) { if(!...
2020-04-13 23:05:43
128
原创 zcy的总和
注意时间超限超限的代码#include<bits/stdc++.h>using namespace std;int main(){ int p,k,cnt=0; cin>>k>>p; long long i=11,ans=0; while(i) { string s1="",s2=""; s1=to_string(i); s2=...
2020-04-13 17:07:54
152
原创 合唱队形
#include<bits/stdc++.h>using namespace std;int main(){ int a[110],dp[110][2],n,maxx=-1; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; dp[i][0]=1; dp[i][1]=1; } for(in...
2020-04-12 17:00:47
282
原创 求最长不下降序列
#include<bits/stdc++.h>using namespace std;int main(){ int a[210],dp[210],n,maxx=-1,k,ans[210],pre[210]; cin>>n; memset(pre,0,sizeof(pre));//初始化全部为0,否则下面while循环里面跳不出来 for(int i=1;i...
2020-04-12 16:02:00
156
原创 Tea Queue(模拟)
题意大概:n组数 左边是开始等待时间,右边是结束时间,如果到了结束时间还没有接到茶就出列。!!!输入的数直接就是有序的#include<bits/stdc++.h>using namespace std;int main(){ int t; cin>>t; while(t--) { int n,time=1,l,r; cin>>n...
2020-03-30 22:13:17
219
原创 走迷宫的最少步数
#include<bits/stdc++.h>using namespace std;char a[41][41];int n,m,vis[41][41],ans;int dir[4][2]={{1,0},{0,1},{-1,0},{0,-1}};bool check(int x,int y){ if(x>=1&&x<=n&&...
2020-03-29 16:09:56
1404
原创 最少步数
#include<bits/stdc++.h>using namespace std;int dir[12][2]={{-2,-1},{-2,1},{2,-1},{2,1},{-1,-2},{-1,2},{1,-2},{1,2},{-2,-2},{-2,2},{2,-2},{2,2}};struct pace{ int x,y,step;};int vis[101][10...
2020-03-29 15:36:20
633
原创 组合的输出
#include<bits/stdc++.h>using namespace std;int tmp[22],mark[22];int n,r;map<string,int>m;void dfs(int dep){ if(dep==r) { string k=" "; for(int i=1;i<=r;i++) { k+=tmp[i]+...
2020-03-29 14:55:20
345
原创 N皇后问题
#include<bits/stdc++.h>using namespace std;int n,cnt;bool vis[3][50];void dfs(int x){ if(x==n)//x代表当前的行数 { cnt++; return ; } for(int i=1;i<=n;i++)//代表列 { if(!vis[0][i]&...
2020-03-29 14:09:02
140
1
原创 数的计数Noip2001
思路:递推每个扩展的数量#include<iostream>using namespace std;int h[1001];int main(){ int n; cin>>n; for(int i=1;i<=n;i++) //按递增顺序计算扩展出的自然数个数 { h[i]=1; ...
2020-03-28 23:00:01
208
原创 CodeForces-845B——Luba和门票
题意:每次可以任意变其中一个数的大小,求前3个数的和等于后3个数的和所需要最少的操作次数。```cpp#include<bits/stdc++.h>using namespace std;int main(){ string s; cin>>s; int sum1=s[0]-'0'+s[1]-'0'+s[2]-'0'; int sum2=s[3]-'...
2020-03-28 19:17:41
182
原创 分解因数
思路:#include<bits/stdc++.h>using namespace std;int sum;void f(int x,int y){ for(int i=x;i<y;i++) { if(y%i==0&&i<=y/i) { sum++; f(i,y/i); } if(i>y/i)return;...
2020-03-28 17:51:27
201
原创 扩号匹配问题
思路:找到第一个左括号时匹配与之对应的右括号#include<bits/stdc++.h>using namespace std;int main(){ char s[110]; while(scanf("%s",s)!=EOF) { int l=strlen(s); int a[l]; memset(a,0,sizeof(a)); for(int i=...
2020-03-28 12:08:02
222
原创 判断元素是否存在
#include<bits/stdc++.h>using namespace std;map<int,int>m;void f(int n){ if(n>=100000)return; m[2*n+1]=1; m[3*n+1]=1; f(2*n+1); f(3*n+1);}int main(){ int k,x; scanf("%d,%d...
2020-03-27 23:05:42
144
原创 放苹果
#include<bits/stdc++.h>using namespace std;int f(int m,int n){ if(m==0||n==1)return 1;//苹果数为0时对应一种情况,盘子数只有1个时对应一种情况 if(n>m)f(m,m);//如果盘子的数量大于苹果的数量 n-m必定为空盘 else return f(m,n-1)+f(m-n...
2020-03-27 22:47:13
133
2
原创 马走日
思路:直接dfs深搜注意回溯标记#include<bits/stdc++.h>using namespace std;int vis[10][10],n,m,cnt;bool check(int x,int y){ if(!vis[x][y]&&x>=0&&x<n&&y>=0&&y<m...
2020-03-27 22:14:54
171
原创 细胞
思路:找到一个非0的数字把周围非0的数字全都标记,遇到0就退回。看要标记几次,就有几个细胞解法一:bfs广搜#include<bits/stdc++.h>using namespace std;char a[1000][1000];int n,m,vis[1000][1000];int dir[4][2]={{0,1},{1,0},{-1,0},{0,-1}};bool...
2020-03-27 15:28:33
168
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人