目录
题目一(日期统计 纯暴力):
代码:
题目二(01串的熵 模拟):
代码:
题目三(治炼金属):
代码:
题目四(飞机降落 深度搜索):
代码:
题目五(接龙数列 动态规划):
代码:
题目六(岛屿个数 广度优先):
代码:
题目七(子串简写 尺取法):
代码:
题目八(整数删除):
代码:
题目一(日期统计 纯暴力):
代码:
#include
using namespace std;
int main()
{
int array[100] =
{
5, 6, 8, 6, 9, 1, 6, 1, 2, 4, 9, 1, 9, 8, 2, 3, 6, 4, 7, 7,
5, 9, 5, 0, 3, 8, 7, 5, 8, 1, 5, 8, 6, 1, 8, 3, 0, 3, 7, 9,
2, 7, 0, 5, 8, 8, 5, 7, 0, 9, 9, 1, 9, 4, 4, 6, 8, 6, 3, 3,
8, 5, 1, 6, 3, 4, 6, 7, 0, 7, 8, 2, 7, 6, 8, 9, 5, 6, 5, 6,
1, 4, 0, 1, 0, 0, 9, 4, 8, 0, 9, 1, 2, 8, 5, 0, 2, 5, 3, 3
};
int Month[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int ans = 0;
for (int month = 1; month
题目二(01串的熵 模拟):
代码:
#include //H(s)= -(0的个数)/(总长度)*log2((0的个数)/(总长度))*0的个数-(1的个数)/(总长度)*log2((1的个数)/(总长度))*1的个数
#include
#include
using namespace std;
int main()
{
int n = 23333333;//0出现的次数更少
for (int i = 1; i
题目三(治炼金属):
代码:
#include
#include
using namespace std;
struct node
{
int x, s;
};
bool cmp(node a, node b)//v小的排前
{
return a.x / a.s > n;
int maxx = 1e9;
node a[10100];
for (int i = 1; i > a[i].x >> a[i].s;
}
sort(a + 1, a + 1 + n, cmp);//能满足所有的,且v为最大
maxx = a[1].x / a[1].s;
int minn = 0;
for (int z = maxx; z >= 1; z--)//由最大的往前算,递减,直到有一个不满足
{
int flag = 0;
for (int i = 1; i a[i].s)
{
flag = 1;
minn = z;
break;
}
}
if (flag == 1)
break;
}
cout
题目四(飞机降落 深度搜索):
代码:
#include
#include
using namespace std;
struct plane// 创建飞机结构体变量
{
int t, d, l;
};
bool vis[15]; // true表示飞机降落,false表示飞机未降落
bool flag; // 标记是否全部安全降落
vector p(15);
int m, cnt;
void dfs(int cnt,int last) // lasttime表示此前所有飞机降落所需的单位时间
{
if (cnt == m)//所有飞机都可降落
{
flag = true;
return;
}
for (int i = 0; i = last) // 还未降落且只有最迟降落时间(来的时刻+盘旋时间) > lasttime 的飞机才可以安全降落
{
vis[i] = true;
dfs(cnt + 1, max(last, p[i].t) + p[i].l);
vis[i] = false;
}
}
}
int main()
{
int T;
cin >> T;
while (T--)
{
cin >> m;
for (int i = 0; i > p[i].t >> p[i].d >> p[i].l;
flag = false;
dfs(0, 0);
if (flag)
cout
题目五(接龙数列 动态规划):
代码:
#include //动态规划,类0、1背包问题
#include
using namespace std;
int dp[10];//第n个时以i结尾的最长接龙序列
int main()
{
int n;
cin >> n;
string s;
int m = 0;
for (int i = 0; i > s;
int x = s[0] - '0', y = s.back() - '0';//x表示该数的首字母,y表示该数的最后一个字母
//除了以y结尾的,其它不变
dp[y] = max(dp[x] + 1, dp[y]);//dp[x]+1表示选该数字时的最长序列,dp[y]表示不选该数字时的最长序列,继承
m = max(m, dp[y]);//每次比较,记录最大值
}
cout
题目六(岛屿个数 广度优先):
代码:
#include
#include
#include
using namespace std;
const int N = 77;
string s[N];
int book[N][N];
int m, n, ans=0;
int dx[8] = { 0,0,1,-1,1,1,-1,-1 };
int dy[8] = { 1,-1,0,0,1,-1,1,-1 };
int check(int x,int y)//通过海水(0)是否能到达边界判断这个岛屿是否在环岛内
{
queue>q;
q.push({ x, y });
int vis[N][N];
memset(vis, 0, sizeof(vis));//访问数组,初始化为0
while (!q.empty())
{
x = q.front().first, y = q.front().second;
q.pop();
if (x == 1 || x == n || y == 1 || y == m)//到边界,则不在环岛内
return 1;
for (int i = 0; i >q;
q.push({ x,y });
book[x][y] = 1;
while (!q.empty())
{
x = q.front().first, y = q.front().second;
q.pop();
for (int i = 0; i n || ty>m || book[tx][ty] == 1 || s[tx][ty] == '0')//边界条件
continue;
book[tx][ty] = 1;
q.push({ tx,ty });
}
}
}
void solve()
{
memset(book, 0, sizeof(book));//访问数组,初始为0
cin >> n >> m;
for (int i = 1; i > s[i], s[i] = " " + s[i];
for(int i=1;i> T;
while (T--)
{
ans = 0;
solve();
}
}
题目七(子串简写 尺取法):
代码:
#include //尺取法
using namespace std;
int k, t;
string s;
long long sum = 0;
int main()
{
char c1, c2;
cin >> k >> s >> c1 >> c2;
for (int j = 0; j
题目八(整数删除):
代码:
#include
#include
#include
#include//greater降序排序,less升序排序
#define int long long
using namespace std;
typedef pair pii;
const int N = 5e5 + 10;
int a[N], l[N], r[N], st[N];//l存左下标,r存右下标
signed main()
{
int n, k;
cin >> n >> k;
priority_queue, greater> q;//最小堆排序
for (int i 服务器托管= 0; i > a[i];
q.push({ a[i],i });//存值和下标
st[i] = a[i];//存值
l[i] = i - 1;
服务器托管 r[i] = i + 1;
if (r[i] == n)
r[i] = -1;
}
while (k)//k次操作
{
pii t = q.top();//取对顶
q.pop();
if (t.first != st[t.second])//值与之前不相等,则把新值,下标存入,重新排序
{
q.push({ st[t.second],t.second });
continue;
}
k--;
int pos = t.second;//取该次的下标
if (l[pos] >= 0) st[l[pos]] += t.first;//左加值
if (r[pos] >= 0) st[r[pos]] += t.first;//右加值
if (l[pos] >= 0) r[l[pos]] = r[pos];//该左边值的右下标
if (r[pos] >= 0) l[r[pos]] = l[pos];//该右边值的左下标
st[pos] = -1;//标记为-1,表示移除队列
}
for (int i = 0; i
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: 酷开系统让用户和电视双向传递,酷开科技实现商业变现
电视在我们的日常生活中扮演着重要的角色。虽然,作为客厅C位的扛把子——电视的娱乐作用深入人心,但是,它的涵义和影响力却因我们每个人的具体生活环境而存在着种种差异,而我们的生活环境又受到我们所处的社会及文化环境的影响。 目前智能运用已经触达到各个层面,酷开系统超…