A. Kirill And The Game+数组元素的目标和 (双指针)

题目链接:https://codeforces.com/contest/842/problem/A
题意:给出两个升序数组和一个k,求数组元素的比值是否能等于K
思路:两个指针同时指向两个数组,根据与K的比较移动指针

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
double l, r, x, y, k;
const double epl=1e-8;
int main(){
	cin>>l>>r>>x>>y>>k;
	for(double i=l, j=x;i<=r&&j<=y;)
	{
		if(abs(i/j-k)<=epl){
			puts("YES");
			return 0;
		}
		else if(i/j>k) j++;
		else if(i/j<k) i++;
	}
	puts("NO");
	return 0;
} 

题目链接:https://www.acwing.com/activity/content/problem/content/834/1/
题目:给定两个升序排序的有序数组A和B,以及一个目标值x。数组下标从0开始。请你求出满足A[i] + B[j] = x的数对(i, j)。
思路:与上面一样,用两个指针一个从前往后,一个从后往前

/*
    这个题巧妙的地方在于一个串从前往后遍历,另一个串从后往前遍历
*/
#include<iostream>
#include<algorithm>
using namespace std;
const int N=1e5+5;
int a[N], b[N];
int main(){
    int n,m,x;
    cin>>n>>m>>x;
    for(int i=0;i<n;i++) cin>>a[i];
    for(int i=0;i<m;i++) cin>>b[i];
    for(int i=0, j=m-1;i<n;i++){
        int val=x-a[i];
        while(b[j]>val&&j>0) j--;
        if(val==b[j]) cout<<i<<" "<<j;
    }
    return 0;
}

扩展:

  • 若要求积为k,则采用两个指针,一个从前往后一个从后往前
  • 若要求差,采用两个指针,都从前往后遍历
用C语言解决下列问题:Kirill wants to weave the very beautiful blanket consisting of n×m of the same size square patches of some colors. He matched some non-negative integer to each color. Thus, in our problem, the blanket can be considered a B matrix of size n×m consisting of non-negative integers. Kirill considers that the blanket is very beautiful, if for each submatrix A of size 4×4 of the matrix B is true: A11⊕A12⊕A21⊕A22=A33⊕A34⊕A43⊕A44, A13⊕A14⊕A23⊕A24=A31⊕A32⊕A41⊕A42, where ⊕ means bitwise exclusive OR Kirill asks you to help her weave a very beautiful blanket, and as colorful as possible! He gives you two integers n and m . Your task is to generate a matrix B of size n×m , which corresponds to a very beautiful blanket and in which the number of different numbers maximized. Input The first line of input data contains one integer number t (1≤t≤1000 ) — the number of test cases. The single line of each test case contains two integers n and m (4≤n,m≤200) — the size of matrix B . It is guaranteed that the sum of n⋅m does not exceed 2⋅105 . Output For each test case, in first line output one integer cnt (1≤cnt≤n⋅m) — the maximum number of different numbers in the matrix. Then output the matrix B (0≤Bij<263) of size n×m . If there are several correct matrices, it is allowed to output any one. It can be shown that if there exists a matrix with an optimal number of distinct numbers, then there exists among suitable matrices such a B that (0≤Bij<263) .
最新发布
03-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值