csp
总网页:https://www.cspro.org/
http://118.190.20.162/home.page
介绍
https://www.bilibili.com/video/BV1oK411W7st?from=search&seid=3385498905670966399
题型
set: https://blog.csdn.net/changjiale110/article/details/79108447
vector:http://c.biancheng.net/view/6749.html
c++用标准输入输出流测试数据:https://blog.csdn.net/sunlanchang/article/details/70207749
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n;
freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
freopen("out.txt", "w", stdout); //输出重定向,输出数据将保存在out.txt文件中
cin>>n;
cout<<n;
fclose(stdin);//关闭文件
fclose(stdout); //关闭文件
return 0;
}
进阶
知识点
循环用while比for好
万能头文件 #include<bits/stdc++.h>
创建动态数组
二维
//n=行;m=列
int **p=new int*[n];//开辟一块存放每一行的地址
for(int i=0;i<n;i++)//为每一行开辟
p[i]=new int[m];
//删除
for(int i=0;i<n;i++)//删除每一行空间
delete [] p[i];
delete [] p;//删除行指针
p=NULL;
函数
排序
sort(start, end, cmp)
cmp 可不写,默认升序
头文件 #include
https://www.cnblogs.com/junbaobei/p/10776066.html
最大最小
头#include
min()
max()
拓展 C++ 头文件 https://blog.csdn.net/liuweiyuxiang/article/details/51865991
swap
STL
vector
https://blog.csdn.net/weixin_41743247/article/details/90635931?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163036805016780265467779%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=163036805016780265467779&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-90635931.first_rank_v2_pc_rank_v29&utm_term=vector&spm=1018.2226.3001.4187
count
https://blog.csdn.net/lyj2014211626/article/details/69615514
题目
1
202012-1 期末预测之安全指数
https://blog.csdn.net/Houstox/article/details/113806001
https://blog.csdn.net/zy440458/article/details/113753329
c语言
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int flag;
int score;
}Course;
int main()
{
int n, sum = 0;
scanf_s("%d", &n);
Course course[n];//??
for (int i = 0; i < n; i++)
scanf_s("%d %d", &course[n].flag, &course[n].score);
for (int i = 0; i < n; i++)
sum += &course[i].flag * &course[i].score;
if (sum <= 0)
printf("0");
else
printf("%d", sum);
return 0;
}
分割线
c++
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
int n, w, score,sum = 0;
cin >> n;
while (n--) {
cin >> w >> score;
sum += w * score;
}
if (sum > 0)
cout << sum;
else
cout << "0";
return 0;
}
#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
struct N{
int w,s;
};
int main()
{
//freopen("in.txt","r",stdin);
int n;
cin>>n;
vector<N> nn(n);
int w,s;
long long sum=0;
_for(i,0,n)
{
cin>>w>>s;
// nn[i].w=w;
// nn[i].s=s;
sum+=w*s;
}
if(sum>=0)
{
cout<<sum;
}
else
{
cout<<"0";
}
//fclose(stdin);
return 0;
}
202104-1 灰度直方图
https://blog.csdn.net/CS_Kevin_1/article/details/115605311
new的用法
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int n, m, L, i;
cin >> n >> m >> L;
int num = n * m;
int* res = new int[L];//动态分配
for ( i = 0; i < L; i++)
res[i] = 0;
for (i = 0; i < num; i++)
{
int data;
cin >> data;
res[data]++;
}
for (i = 0; i < L ; i++)
cout << res[i] << " ";
return 0;
}
202009-1 称检测点查询
c
https://blog.csdn.net/qq_33439662/article/details/110681128
c++
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
int n, X, Y, i, j;
int x, y, t, k;
cin >> n >> X >> Y;
int* di = new int[n];//记录各个市民的距离
int* num = new int[n];//编号
for (i = 0; i < n; i++)
{
num[i] = i + 1;
}
for (i = 0; i < n; i++)
{
cin >> x >> y;
di[i] = (X - x) * (X - x) + (Y - y) * (Y - y);
}
//冒泡排序
for (i = 0; i < n; i++)
{
for (j = 0; j < n - 1 - i; j++)
{
if (di[j] > di[j + 1])
{
//距离
t = di[j];
di[j] = di[j + 1];
di[j + 1] = t;
//编号
k = num[j];
num[j] = num[j + 1];
num[j + 1] = k;
}
}
}
for (i = 0; i < 3; i++)
{
cout << num[i];
if (i != 2)//注意输入格式
cout << "\n";
}
return 0;
}
202006-1 线性分类器
题目意思:判断测定的线能否区分AB两个区域
//参考
#include <iostream>
#include <stdio.h>
using namespace std;
struct node
{
int x, y;
char id;
}node[1001];
int main()
{
int n, m, i, j;
cin >> n >> m;
for (i = 0; i < n; i++)
cin >> node[i].x >> node[i].y >> node[i].id;
int q0, q1, q2;
int t, f1, f2, f;
for (i = 0; i < m; i++)
{
cin >> q0 >> q1 >> q2;
f = 1;
f1 = f2 = -1;
for (j = 0; j < n; j++)
{
t = (q0 + q1 * node[j].x + q2 * node[j].y) > 0 ? 1 : 0;
if (node[j].id == 'A')//分类
{
if (f1 == -1)
f1 = t;
else if (f1 != t)
{
f = 0;
break;
}
}
else if (node[j].id == 'B')
{
if (f2 == -1)
f2 = t;
else if(f2 != t)
{
f = 0;
break;
}
}
if (f1 == f2)//全部点都在线上
{
f = 0;
break;
}
}
if (f == 0)
cout << "No\n";
else
cout << "Yes\n";
}
return 0;
}
201912-1 报数
https://blog.csdn.net/weixin_45884316/article/details/103603660
#include<iostream>
using namespace std;
int main()
{
int n;
//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
cin>>n;
int ans=0,count=0;
int a[4]={0};
while(count!=n)
{
ans++;
int f=1;
if(ans%7==0)
{
a[ans%4]++;
f=0;
}
else //含有7的
{
int y=ans;
while(y>=1)
{
int x=y%10;
if(x==7)
{
a[ans%4]++;
f=0;
break;
}
y/=10;
}
}
if(f==1)
count++;
}
cout<<a[1]<<endl;
cout<<a[2]<<endl;
cout<<a[3]<<endl;
cout<<a[0]<<endl;
//fclose(stdin);
return 0;
}
201909-1 小明种苹果
#include<iostream>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
int main()
{
int n,m,x;
//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
cin>>n>>m;
int *a=new int[m+1];
int *b=new int[n];//存每棵放疏果的总个数
int ke=0,k=0;
while(k!=n)
{
_for(i,0,m+1)
{
cin>>a[i];
if(i!=0)
b[k]+=a[i];
else
{
ke+=a[i];//a[0]
b[k]=0;
}
}
k++;
}
int min=b[0],sub=0;
_for(i,0,n)
{
ke+=b[i];
if(min>b[i])
{
min=b[i];
sub=i;
}
}
delete []a;
delete []b;
cout<<ke<<" "<<sub+1<<" "<<-min;
//fclose(stdin);
return 0;
}
201812-1 小明上学
k=0,k=1时加上t,k=2时加上t+r,k=3时加上0。
#include<iostream>
using namespace std;
int main()
{
int r,y,g,n;
// freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
cin>>r>>y>>g>>n;
int sum=0,k,t;
while(n)
{
cin>>k>>t;
if(k==0||k==1)
sum=sum+t;
if(k==2)
sum=sum+t+r;
n--;
}
cout<<sum;
// fclose(stdin);
return 0;
}
201809-1 卖菜
#include<iostream>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
int main()
{
int n;
//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
cin>>n;
int *a=new int[n];
int *b=new int[n];
_for(i,0,n)
cin>>a[i];
_for(i,0,n)
{
if(i==0)
b[i]=(a[0]+a[1])/2;
else if(i==n-1)
b[n-1]=(a[n-1]+a[n-2])/2;
else
b[i]=(a[i-1]+a[i]+a[i+1])/3;
}
_for(i,0,n)
cout<<b[i]<<" ";
delete []a;
delete []b;
// fclose(stdin);
return 0;
}
201712-1 最小差值
#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
int main()
{
int n;
//freopen("in.txt","r",stdin);
cin>>n;
int *a=new int[n];
_for(i,0,n)
cin>>a[i];
sort(a,a+n);
int min=10010;
_for(i,1,n)
{
int x=a[i]-a[i-1];
if(x<min)
min=x;
}
cout<<min;
delete []a;
//fclose(stdin);
return 0;
}
201709-1 打酱油
#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
int main()
{
int N;
//freopen("in.txt","r",stdin);
cin>>N;
int ans=0;
int wu=N/50;
if(wu)
{
N-=wu*50;
ans=7*wu;
}
int san=N/30;
if(san)
{
N-=san*30;
ans+=san*4;
}
ans+=N/10;
cout<<ans;
//fclose(stdin);
return 0;
}
201703-1 分蛋糕
#include<iostream>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
int main()
{
int n,k;
//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
cin>>n>>k;
int *a=new int[n];
_for(i,0,n)
{
cin>>a[i];
}
int sum=0,ans=0;
_for(i,0,n)
{
sum+=a[i];
if(sum>=k)
{
ans++;
sum=0;
}
if(i==n-1 && sum<k && sum!=0)//到最后一块,然后还不够重的情况
{
ans++;
}
}
cout<<ans;
delete []a;
//fclose(stdin);
return 0;
}
201609-1 最大波动
#include<iostream>
//#include<cstdio>
#include<math.h>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
int main()
{
int n;
//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
cin>>n;
int *a=new int[n];
_for(i,0,n)
{
cin>>a[i];
}
int ans=0;
_for(i,1,n)
{
int x=fabs(a[i]-a[i-1]);
if(ans<x)
ans=x;
}
cout<<ans;
delete []a;
//fclose(stdin);
return 0;
}
201612-1 中间数
#include<iostream>
//#include<cstdio>
#include<algorithm>
//#include<math.h>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
int main()
{
int n;
//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
cin>>n;
int *a=new int[n];
_for(i,0,n)
{
cin>>a[i];
}
int ans=-1;
sort(a,a+n);//先排序,然后计算自由两边的数
int x=0,y=0;
int mid=n/2;
_for(i,0,n)
{
if(a[i]<a[mid])
x++;
else if(a[i]>a[mid])
y++;
}
if(x==y)
ans=a[mid];
cout<<ans;
delete []a;
//fclose(stdin);
return 0;
}
201604-1 折点计数
折点前后的数字
a b c
(b-a)*(c-b)<0
#include<iostream>
//#include<cstdio>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
int main()
{
int n;
//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
cin>>n;
int *a=new int[n];
_for(i,0,n)
{
cin>>a[i];
}
int ans=0;
_for(i,1,n-1)
{
int x=(a[i]-a[i-1])*(a[i+1]-a[i])>0?0:1;
if(x)
ans++;
}
delete []a;
cout<<ans;
//fclose(stdin);
return 0;
}
201512-1 数位之和
#include<iostream>
using namespace std;
int main()
{
long long x;
int sum=0;
cin>>x;
while(x)
{
int y=x%10;
sum+=(y);
x=x/10;
if(x<0)
x=0;
}
cout<<sum;
return 0;
}
201509-1 数列分段
#include<iostream>
using namespace std;
int main()
{
int n,i;
cin>>n;
int *a=new int[n];
for(i=0;i<n;i++)
cin>>a[i];
int ans=0;
for(i=1;i<n;i++)
{
if(a[i]!=a[i-1])//遇到与前面不同的数 次数加一
ans++;
}
delete []a;
cout<<ans+1;
return 0;
}
201503-1 图像旋转
#include<iostream>
using namespace std;
int a[1010][1010],b[1010][1010];//注意,如果定义的数组所需内存较大,应放在main函数之外,否则可能因为main函数内的内存不足导致停止工作
int main()
{
int n,m,i,j;
cin>>n>>m;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
cin>>a[i][j];
}
//规律:第x行倒着数=第x列正着数
int x=0,y=0;
for(i=0;i<n;i++)
{
x=0;
for(j=m-1;j>=0;j--)
{
b[x][y]=a[i][j];
x++;
}
y++;
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
cout<<b[i][j]<<" ";//注意格式
cout<<endl;
}
return 0;
}
201412-1 门禁系统
#include<iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int x;
int b[1010]={0};//记录次数
for(int i=0;i<n;i++)
{
cin>>x;
b[x]++;
cout<<b[x]<<" ";
}
return 0;
}
201409-1 相邻数对
注意题目,不同的非整数
排序然后相邻的相减
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
int *a=new int[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int c=0;
sort(a,a+n);
for(int i=1;i<n;i++)
{
int x=a[i]-a[i-1];
if(x==1)
c++;
}
cout<<c;
delete []a;
return 0;
}
201403-1 相反数
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
int *a=new int[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
sort(a,a+n);//排序
int c=0;
for(int i=1;i<n;i++)
{
while(a[i]<0)//找到正数
i++;
for(int j=0;j<i && a[i]>0;j++)//负数与正数一一比较
{
if(a[j]==(-a[i]))
c++;
}
}
cout<<c;
delete []a;
return 0;
}
//直接暴力也可
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
int *a=new int[n];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int c=0;
for(int i=0;i<n;i++)
{
for(int j=i;j<n;j++)
{
if(a[i]==-a[j])
c++;
}
}
cout<<c;
delete []a;
return 0;
}
https://blog.csdn.net/CS_Kevin_1/article/details/115605466
201903-1 小中大
https://blog.csdn.net/Jessica_zhu1/article/details/100905394
https://blog.csdn.net/qq_41318400/article/details/89453376?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.essearch_pc_relevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-2.essearch_pc_relevant
#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
int main()
{
//freopen("in.txt","r",stdin);
int n;
cin>>n;
vector<int> a(n);
_for(i,0,n)
cin>>a[i];
sort(a.begin(),a.end());
cout<<a[n-1]<<" ";
if(n==1)
{
cout<<a[0]<<" ";
}
else if(n%2!=0)
{
cout<<a[(n-1)/2]<<" ";
}
else
{
float mid=(a[n/2]+a[n/2-1])*1.0/2;
if(mid-(int)mid!=0)
cout<<setiosflags(ios::fixed)<<setprecision(1) << mid <<" ";
else
cout<<setiosflags(ios::fixed)<<setprecision(0) << mid <<" ";
}
cout<<a[0];
//fclose(stdin);
return 0;
}
2
202104-2 邻域均值
https://www.cnblogs.com/fxh0707/p/14907758.html
//前缀和 https://blog.csdn.net/qq_34990731/article/details/82807870
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=610;
int a[N][N]={0},b[N][N]={0};
int main()
{
int n,L,r,t;
//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
cin>>n>>L>>r>>t;
int i,j,k;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
cin>>a[i][j];
b[i][j]=b[i][j-1]+b[i-1][j]-b[i-1][j-1]+a[i][j];
}
}
int sum=0,cnt=0,ans=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
int a1=max(1,i-r);//左 a
int a2=min(n,i+r);//右 c
int a3=max(1,j-r);//上 b
int a4=min(n,j+r);//下 d
sum=b[a2][a4]-b[a1-1][a4]-b[a2][a3-1]+b[a1-1][a3-1];
cnt=(a2-a1+1)*(a4-a3+1);
if(sum<=t*cnt) ans++;
}
}
cout<<ans<<endl;
return 0;
}
201912-2 回收站选址
https://blog.csdn.net/tigerisland45/article/details/104213820
#include<bits/stdc++.h>//万能头文件
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
const int N=1000;
pair<int,int> p[N];
int main()
{
int n;
map<pair<int,int>,int> ps;
//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
cin>>n;
for(int i = 0; i < n; i++)
{
int x, y;
scanf("%d%d", &x, &y);
p[i] = make_pair(x, y);
ps[p[i]] = 1;
}
int cnt[5]={0};
_for(i,0,n)
{
int x=p[i].first;
int y=p[i].second;
if( ps[make_pair(x, y -1)] && ps[make_pair(x, y + 1)] &&
ps[make_pair(x - 1, y)] && ps[make_pair(x + 1, y)] )
cnt[ps[make_pair(x - 1, y - 1)] + ps[make_pair(x - 1, y + 1)] +
ps[make_pair(x + 1, y - 1)] + ps[make_pair(x + 1, y + 1)]]++;
}
_for(i,0,5)
cout<<cnt[i]<<endl;;
//fclose(stdin);
return 0;
}
202012-2 期末预测之最佳阈值 ??
https://blog.csdn.net/qq_45985728/article/details/114903481
https://www.cnblogs.com/zhangzizi/p/14307323.html
https://blog.csdn.net/qq_45985728/article/details/114903481
https://blog.csdn.net/qq_43464088/article/details/112080044
6
0 0
1 0
1 1
3 1
5 1
7 1
//#include<iostream>
#include<bits/stdc++.h>
//#include<cstdio>
//#include<algorithm>
//#include<math.h>
//#include<vector>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
const int N=100010;
bool cmp1(pair<int,int>a,pair<int,int>b)
{
return a.first>b.first;//升值排序
}
int main()
{
int m;
freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
cin>>m;
vector<pair<int,int> > p(m);
_for(i,0,m)
{
int a,b;
p[i]=make_pair(a,b);
}
sort(p.begin(),p.end(),cmp1);
int f0[N]={0};//记录小于每个位置点阈值的result=0的个数
int f1[N]={0};//记录大于每个位置点阈值的result=0的个数
int i=0,j=0;
while(i<m)
{
int x=p[i].first;
while(j<m)
{
if(p[j].first<x)
{
if(p[j].second==0)
cout<<"p[j].:"<<p[j].first<<endl;
f0[p[j].first]++;
}
else
{
if(p[j].second==1)
f0[p[j].first]++;
}
j++;
}
i++;
}
cout<<0;
int ans=0,sum=0;
for(i=0;i<N;i++)
{
int y=f0[i]+f1[i];
if(y>=sum)
{
sum=y;
ans= i;
}
}
cout<<ans;
fclose(stdin);
return 0;
}
201909-2 小明种苹果(续)
https://blog.csdn.net/qq_45228537/article/details/102080630
#include<iostream>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
int main()
{
int n;
//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
cin>>n;
int *drop=new int[n];
int total=0,sum=0,cnt=0;
_for(i,0,n)
{
int m,num,a;
cin>>m>>num;
drop[i]=0;
_for(j,0,m-1)
{
cin>>a;
if(a<=0)
num+=a;
else if(num!=a)
{
drop[i]=1;
num=a;
}
}
total+=num;
}
_for(i,0,n)
{
sum+=drop[i];
if(drop[i]&&drop[(i+2)%n]&&drop[(i+1)%n]) cnt++;//取余的方法
}
cout<<total<<" "<<sum<<" "<<cnt;
delete []drop;
//fclose(stdin);
return 0;
}
201812-2 小明放学
https://blog.csdn.net/weixin_44778155/article/details/101158855
201809-2 买菜
https://blog.csdn.net/weixin_43597126/article/details/107964185
201803-2 碰撞的小球
https://blog.csdn.net/tigerisland45/article/details/81660041
https://blog.csdn.net/SongBai1997/article/details/81175312?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.essearch_pc_relevant&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.essearch_pc_relevant
202009-2 风险人群筛查 ??
#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
const int N=1005;
int main()
{
int n,k,t,x1,x2,y1,y2;
//freopen("in.txt","r",stdin);
cin>>n>>k>>t>>x1>>y1>>x2>>y2;
int p=0,pass=0,stay=0,s=0,ss=0;
int count=n*t;
while(n--)
{
int x,y;
_for(i,0,t)
{
cin>>x>>y;
if(x>=x1 && x<=x2 && y>=y1 && y<=y2)
{
//cout<<x<<" "<<y<<endl;
s++;
p=1;
if(s==k)//为什么>=不对?
{
//cout<<n<<" "<<x<<" "<<y<<endl;
ss=1;
}
}
else
s=0;
}
stay+=ss;
pass+=p;
ss=0;
p=0;
//cout<<n<<" "<<stay<<endl;
}
cout<<pass<<endl<<stay;
//fclose(stdin);
return 0;
}
201712-2 游戏
https://blog.csdn.net/weixin_43597126/article/details/108694133
202006-2 稀疏向量 ??
注意大小 用long long
不用排序
#include<iostream>
#include<vector>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
typedef struct Piont
{
int x;
int y;
}P;
int main()
{
int n,a,b;
//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
cin>>n>>a>>b;
vector<P> u(a);
vector<P> v(b);
_for(i,0,a)
{
cin>>u[i].x>>u[i].y;
}
_for(i,0,b)
{
cin>>v[i].x>>v[i].y;
}
int maxn=max(a,b);
int k=0,l=0;
long long sum=0;
while(k<a && l<b)//注意
{
if(u[k].x>v[l].x)
{
l++;
}
else if(u[k].x<v[l].x)
{
k++;
}
else
{
//cout<<u[k].y<<" "<<v[l].y<<endl;
sum+=u[k].y*v[l].y;
k++;
l++;
}
}
cout<<sum;
//fclose(stdin);
return 0;
}
//错了
#include<iostream>
//#include<cstdio>
#include<algorithm>
//#include<math.h>
#include<vector>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
typedef struct Piont
{
int x;
int y;
}P;
int main()
{
int n,a,b;
//freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取
cin>>n>>a>>b;
vector<P> u(a);
vector<P> v(b);
_for(i,0,a)
{
cin>>u[i].x>>u[i].y;
}
_for(i,0,b)
{
cin>>v[i].x>>v[i].y;
}
int maxn=max(a,b);
int k=0,l=0;
long long sum=0;
_for(i,0,maxn+1)
{
if(k==a-1||l==b-1)
{
break;
}
if(u[k].x>v[l].x)
{
l++;
}
else if(u[k].x<v[l].x)
{
k++;
}
else
{
//cout<<u[k].y<<" "<<v[l].y<<endl;
sum+=u[k].y*v[l].y;
k++;
l++;
}
}
cout<<sum;
//fclose(stdin);
return 0;
}
30分的,超时了
#include<iostream>
using namespace std;
int main()
{
int
n,a,b,i,j;
cin>>n>>a>>b;
//创建动态二维数组
int
**a2=new int*[a];
for(i=0;i<a;i++)
{
a2[i]=new
int[2];
}
for(i=0;i<a;i++)
{
for(j=0;j<2;j++)
{
cin>>a2[i][j];
}
}
long
long sum=0;
int
b1,b2;
while(b--)
{
cin>>b1>>b2;
for(i=0;i<a;i++)
{
if(a2[i][0]==b1)
{
sum+=a2[i][1]*b2;
break;
}
}
}
//删除动态二维数组
for(i=0;i<2;i++)
{
delete[]
a2[i];
}
delete
[]a2;
cout<<sum;
return
0;
}
201903-2 二十四点 ??
https://www.cnblogs.com/huangming-zzz/p/11370052.html
#include<bits/stdc++.h>
using namespace std;
#define _for(i,a,b) for(int i=a;i<b;i++)
int main()
{
//freopen("in.txt","r",stdin);
int n;
cin>>n;
string s;
queue<int> num;
queue<char> op;
//算式后面多个+0,因为i会超出来
while(n--)
{
cin>>s;
s.push_back('+');
for(int i=1;i<s.size();i+=2)
{
int t=s[i-1]-'0';
for(;i<s.size() && s[i]=='x' || s[i]=='/';i+=2)
{
t=(s[i]=='x') ? t*(s[i+1]-'0') : t/(s[i+1]-'0');
}
num.push(t);
op.push(s[i]);
}
num.push(0);
int ans=num.front();
num.pop();
while(!op.empty())
{
char opr=op.front();
op.pop();
ans=(opr=='+') ? ans+num.front() : ans-num.front();
num.pop();
}
cout<<(ans==24? "Yes":"No")<<endl;
}
//fclose(stdin);
return 0;
}