POJ2511(今天是个失败的题解,未能AC,求帮忙纠正)

2024-02-05 08:38

本文主要是介绍POJ2511(今天是个失败的题解,未能AC,求帮忙纠正),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目就是类似背包问题,给容量为10的书架选情感值较大的书,并且这些书相邻的是不能在相同位置是相同的字母。

TLE超时了,今天是个失败的题解,求帮忙呀!

#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
struct node {int val;char pre[101];char cur[101];
}a[2501];
bool cmp(node a, node b)
{if (strcmp(a.cur, b.cur) < 0)return 1;elsereturn 0;
}
bool del(char* a, char* b)
{   int i=0;while (a[i] != '\0' && b[i] != '\0'){if (a[i] == b[i])return true;i++;}return false;
}
int main()
{int n;scanf("%d", &n);for (int i = 0; i < n; i++){scanf("%d",&a[i].val); int sub = 0; int  sub1 = 0;char ch;ch = getchar();cin.getline(a[i].pre,100);while((ch=a[i].pre[sub++])!='\0'){if(ch!='\''&&ch!=' '){   if(ch>='A'&&ch<='Z')a[i].cur[sub1++]=ch+32;elsea[i].cur[sub1++]=ch;}}}sort(a, a + n, cmp);vector<node>ans[2501][11];int data[2501][11] = { 0 };for (int i = 1; i <= n; i++){   for (int j = 1; j <= 10; j++){int k = i-1;while (ans[k][j - 1].size() != 0 && del(a[i - 1].cur, ans[k][j - 1][ans[k][j - 1].size() - 1].cur)){   k -= 1;if (k == 0)break;}data[i][j] = data[k ][j - 1] + a[i - 1].val;ans[i][j] = ans[k][j - 1];ans[i][j].push_back(a[i - 1]);if (data[i][j] < data[i - 1][j]){data[i][j] = data[i - 1][j];ans[i][j] = ans[i - 1][j];}}}printf("%d\n%d\n", ans[n][10].size(), data[n][10]);for (int i = 0; i < ans[n][10].size(); i++){printf("%s\n", ans[n][10][i].pre);}return 0;
}

这篇关于POJ2511(今天是个失败的题解,未能AC,求帮忙纠正)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/680344

相关文章

Xshell远程连接失败以及解决方案

《Xshell远程连接失败以及解决方案》本文介绍了在Windows11家庭版和CentOS系统中解决Xshell无法连接远程服务器问题的步骤,在Windows11家庭版中,需要通过设置添加SSH功能并... 目录一.问题描述二.原因分析及解决办法2.1添加ssh功能2.2 在Windows中开启ssh服务2

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

hdu 3065 AC自动机 匹配串编号以及出现次数

题意: 仍旧是天朝语题。 Input 第一行,一个整数N(1<=N<=1000),表示病毒特征码的个数。 接下来N行,每行表示一个病毒特征码,特征码字符串长度在1—50之间,并且只包含“英文大写字符”。任意两个病毒特征码,不会完全相同。 在这之后一行,表示“万恶之源”网站源码,源码字符串长度在2000000之内。字符串中字符都是ASCII码可见字符(不包括回车)。

zoj 3228 ac自动机

给出一个字符串和若干个单词,问这些单词在字符串里面出现了多少次。单词前面为0表示这个单词可重叠出现,1为不可重叠出现。 Sample Input ab 2 0 ab 1 ab abababac 2 0 aba 1 aba abcdefghijklmnopqrstuvwxyz 3 0 abc 1 def 1 jmn Sample Output Case 1 1 1 Case 2

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

D4代码AC集

贪心问题解决的步骤: (局部贪心能导致全局贪心)    1.确定贪心策略    2.验证贪心策略是否正确 排队接水 #include<bits/stdc++.h>using namespace std;int main(){int w,n,a[32000];cin>>w>>n;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+n+1);int i=1

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

C - Word Ladder题解

C - Word Ladder 题解 解题思路: 先输入两个字符串S 和t 然后在S和T中寻找有多少个字符不同的个数(也就是需要变换多少次) 开始替换时: tips: 字符串下标以0开始 我们定义两个变量a和b,用于记录当前遍历到的字符 首先是判断:如果这时a已经==b了,那么就跳过,不用管; 如果a大于b的话:那么我们就让s中的第i项替换成b,接着就直接输出S就行了。 这样

STM32 ADC+DMA导致写FLASH失败

最近用STM32G070系列的ADC+DMA采样时,遇到了一些小坑记录一下; 一、ADC+DMA采样时进入死循环; 解决方法:ADC-dma死循环问题_stm32 adc dma死机-CSDN博客 将ADC的DMA中断调整为最高,且增大ADCHAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, ADC_Buffer_Size); 的ADC_Bu