首页 > TAG信息列表 > 1005
CCF 201503-1 图像旋转(C++)
好像旋转矩阵有更好的做法,但是我觉得这样也足够了,如果需要更好的做法,大家得自己在去找一下。 我主要是找了下规律,然后做出来的 #include<iostream> #include<bits/stdc++.h> #include<cstdio> using namespace std; int num1[1005][1005]; int num2[1005][1005]; int n, m;AT2286 题解
题目传送门 小学生又双叒叕来写题解啦! 这题要用到因数个数定理,没学过的童鞋自己了解一下。 由于和质数有关,我使用质数筛法。 我使用较快的欧拉筛法算质数(想学就做这题)。 事实上,由于范围不大,使用普通的埃氏筛也行。 最后一个问题是:枚举质因数个数。 相信这不难,只需暴力分解质因数即P7074 [CSP-J2020] 方格取数
题目描述 题目传送门() 点击查看题目 题目描述 设有 n * m 的方格图,每个方格中都有一个整数。现有一只小熊,想从图的左上角走到右下角, 每一步只能向上、向下或向右走一格,并且不能重复经过已经走过的方格,也不能走出边界。小熊会 取走所有经过的方格中的整数,求它能取到的整数之和Coast Length——奇奇怪怪的OJ
Hi,我是OIer一枚。 我太弱了 题目链接: Kattis 官网 VJudge 镜像题 题面 问海岸的长度和。 其中,岛中湖,岛中湖中岛……不算。 思路 我们在整个图外面加一圈 $ 0 $,这样我们就能轻松处理岛了。 从最外圈遍历 $ 0 $ ,遍历到的都是海。 然后,对于每块海,看它周围有几个陆地。 每一个陆地调度问题
调度问题 dp[i][j]表示处理第i个作业且A的总工作时间为j时B的总工作时间 则对于每一个i,如果j<a[i](A的总时间还不能处理i),因为不得不处理,因此只能由B处理 dp[i][j]=dp[i-1][j]+b[i] 否则A,B都可以处理 dp[i][j]=min(dp[i-1][j]+b[i],dp[i-1][j-a[i]]) dp[i-1][j]+b[i]DP の 百题大过关
NO.1 调度问题 dp[i][j]表示处理第i个作业且A的总工作时间为j时B的总工作时间 则对于每一个i,如果j<a[i](A的总时间还不能处理i),因为不得不处理,因此只能由B处理 dp[i][j]=dp[i-1][j]+b[i] 否则A,B都可以处理 dp[i][j]=min(dp[i-1][j]+b[i],dp[i-1][j-a[i]]) dp[i-1][j]+b[i]:如果第i个Acwing 798.差分矩阵
题目链接:https://www.acwing.com/problem/content/800/ 要睡觉了今早要早起,今晚再写关于二位差分的内容吧 放AC代码 1 #include<bits/stdc++.h> 2 using namespace std; 3 int a[1005][1005],b[1005][1005];//a前缀和数组,b差分数组 4 int n,m,q; 5 6 void insert(int1005 Forsaken喜欢数论 素数筛性质 数论
链接:https://ac.nowcoder.com/acm/contest/26656/1005来源:牛客网 题目描述 Forsaken有一个有趣的数论函数。对于任意一个数xx,f(x)f(x)会返回xx的最小质因子。如果这个数没有最小质因子,那么就返回0。 现在给定任意一个nn,Forsaken想知道\sum_{i = 1}^{n}{f(i)}∑1005:地球人口承载力估计
时间限制: 1000 ms 内存限制: 65536 KB提交数: 108017 通过数: 60898 【题目描述】 假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资源加上新生资源可供xx亿人生活aa年,或供yy亿人生活bb年。 为了能够实现可持续发展,避免资源枯竭,地球最多能够养活leedcode 115. 不同的子序列
思路分析: dp[i][j] 表示 s 串中使用了 i 个字符,t 串中使用了 j 个字符,s 包含 t 中子序列的个数 当 s[i] == t[j] 时,考虑当前字符是否要匹配,若匹配,方案数则是由 i-1 和 j-1 往过累加,若不匹配,则是由 dp[i-1][j] 这个状态去累加 代码示例: class Solution { public: int nu经典dp
数字三角形 #include<bits/stdc++.h> using namespace std; int r; int a[1005][1005]; int dp[1005][1005]; int main() { cin >> r; for(int i=1;i<=r;i++) for(int j=1;j<=i;j++) cin >> a[i][j]; for(int i=r;i>=1;i--) { for(int j=1;jybt 1258 数塔
#include <iostream> #include <algorithm> #include<cstdio> using namespace std; int a[1005][1005],b[1005][1005]; int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++) scanf("%d&【pk赛】菜地
题目 给你一块nxm的菜地,菜地的内容只由0和1组成 求最大的一块全为1的矩形子菜地 n,m<=1000 思路 首先可以预处理出每一行/每一块矩阵内1的个数 暴力枚举每一个矩阵的左上角、右下角 时间复杂度\(O(n^2m^2)\) 枚举矩阵的起始两列位置,再用类似求最大子段和的思想dp in5月19日:1005:地球人口承载力估计
方法一#include<iostream>#include<iomanip>using namespace std;int main(){int a,x,b,y;double z;cin>>x>>a>>y>>b;z=(a*x-b*y)/(a-b);cout<<fixed<<setprecision(2)<<z;return 0;}方法二#include<iostream>#includeLeetcode 1005. K 次取反后最大化的数组和(终于解决)
给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组: 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后,返回数组 可能的最大和 。 示例 1: 输入:nums = [4,2,3], k = 1 输出:5 解释:选择下标 1 ,num1005:地球人口承载力估计
【题目描述】 假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资源加上新生资源可供xx亿人生活aa年,或供yy亿人生活bb年。 为了能够实现可持续发展,避免资源枯竭,地球最多能够养活多少亿人? 【输入】 一行,包括四个正整数x,a,y,bx,a,y,b,两个整数之间用单个空格隔开。x>y,a<b,ax<byxP4206 [NOI2005] 聪聪与可可
预处理 nxt[i,j] 表示i到j最近距离i的下一个位置 最后记忆化搜索就好 #include<cstdio> #include<queue> #include<cstring> #include<iostream> using namespace std; int cur,n,m,s,t; int head[1005],p[1005]; int dis[1005][1005],nxt[1005][1005]; bool vis[1005],visit[蓝桥杯[省赛][B组]-全球变暖
这题在当时的环境下不能使用c++11标准,因此一些写法会有编译错误和警告. 题目的思路还是很明确的,可以先深度搜索得到岛上所有点,把它们记录在map中对应一个值,然后遍历二维数组 标记淹没点,在下一轮遍历中数组和map去掉对应点,最后看还有哪些岛还没被完全淹没 #include<bits/std蓝桥杯[第四届][B组]-翻硬币
开始还觉得似乎并不太容易,但是其实这其实是一个推箱子消消乐的游戏。 #include <bits/stdc++.h> using namespace std; char s1[1005]={0}; char s2[1005]={0}; int main() { cin>>s1; cin>>s2; int ans=0; int p=0; while(p<strlen(s1)){ iP2216 [HAOI2007]理想的正方形
题面 有一个 \(a \times b\) 的整数组成的矩阵,现请你从中找出一个 \(n \times n\) 的正方形区域,使得该区域所有数中的最大值和最小值的差最小。 输入格式 第一行为 \(3\) 个整数,分别表示 \(a,b,n\) 的值。 第二行至第 \(a+1\) 行每行为 \(b\) 个非负整数,表示矩阵中相应位置上的数最长上升子序列
输入n个各不相同的数,求其最长上升子序列,例如n = 6,3 2 6 1 4 5,其最长上升子序列为1 4 5长度为3 #include<iostream> using namespace std; #include<vector> int a[1005]; int dp[1005]; int main() { int n; cin >> n; for (int i = 1; i <= n; ++i) { cin >> a[i]; }leetcode 1005. K 次取反后最大化的数组和
将数组按照绝对值的方法排序,从后往前,把绝对值大的负数变正即可。 java中自定义排序int[]比较麻烦,故我用的直接排序,用两个指针比较绝对值遍历。 class Solution { public int largestSumAfterKNegations(int[] nums, int k) { Arrays.sort(nums); int n=nums.最佳加法表达式
首先子问题是啥??其实就是要找最右边的加号。上面这段其实就体现了这个子问题。 解题思路: 把在n个数字中插入m个加号的问题化为前i个数字中插入m-1个加号再加上从第i+1个数到第n个数字所组成的数。i的范围是从m一直到n-1,这个范围内取最小值。 这个预处理其实也求子矩阵最大累加和
题目如下: 输入在一行给出两个数n,m,代表矩阵的行和列。而后n行,每一行给出m个数,数值有正有负,也可能是0。 输出在一行给出子矩阵的最大累加和。 给出一个案例。 输入: 3 3 -90 48 78 64 -40 64 -81 -7 66 输出: 209 (48+78-40+64-7+66=209) 整体思路是定义一个起始行,对该行开始往后的P7835 「Wdoi-3」夜雀 dreaming 题解
题目的意思在题目中有化简版。 首先看到数据,这么大直接放弃吧发现可以从 \(k\) 入手,可以做到 \(O(k^2)\)。 我们就可以想到枚举每两个 \(x_i,y_i\) 和 \(x_j,y_j\),可能在同一个时刻第一次必然是 \(L=\text{lcm}(t_i , t_j)\)。这个时候,两个球的编号是 \(x_i + ( \frac{L}{t_i} - 1