Daimayuan Online Judge #456. 选数(抽屉原理)

题目链接:选数 - 题目 - Daimayuan Online Judge 

题解链接:【算法Camp】【每日一题】Namomo Spring Camp 2022 Div1 第4天题解(前缀和、抽屉原理)_哔哩哔哩_bilibili

看到这道题第一反应是完全背包,看到n最大1e5,想到用bitset优化,但是发现要输出路径,就没法做了。(正常dp可记录路径但是复杂度太高)

这道题的重点是模数是n,而%n后的前缀和就是有n个。那么可以这样考虑:

  1. 假如至少有一个前缀和是0,那么结果就有了。
  2. 假如所有前缀和都不是0,即全都是1~n-1,那么根据抽屉原理,必有至少一个重复,那么就找到一段连续子序列满足题意,把它输出即可。
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define FOR(i, a, b) for (int i = (a); i <= (b); i++)
const int N = 1e5+5;
int n,sum[N], pre[N];
signed main() {
    ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
	cin>>n; int x;
	FOR(i,1,n)
		cin>>x, sum[i]=(sum[i-1]+x+n)%n;
	FOR(i,1,n)
		if(sum[i]==0){
			cout<<i<<'\n';
			FOR(j,1,i) cout<<j<<' ';
			return 0;
		}
	FOR(i,1,n){
		if(!pre[sum[i]]) pre[sum[i]]=i;
		else{
			cout<<i-pre[sum[i]]<<'\n';
			FOR(j,pre[sum[i]]+1,i) cout<<j<<' ';
			return 0;
		}
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件名称:400电话办理选号系统 版本:1.0 开发环境:PHP+MySQL5.x+Memcache 1.2.1 运行环境:Windows Server 2003/2008、Linux/CentOS/Solaris/Ubuntu WEB环境 :IIS 6/7、Apache、Nginx 声明:该程序遵循GNU通用公共授权条款,GPL授予程序接受人以下权利:以任何目的运行此程序的自由;再发行复制件的自由;改进此程序,并公开发布改进的自由;拒绝接受人修改该程序底部版权,引用需注明出处。 一、功能简介: 400电话办理选号系统使用PHP语言开发,该程序有效地解决了400电话行业普遍存在的客户选号难、过滤难、查询难的问题,直观的选号界面减少了销售人员与客户直接沟通的时间成本,快捷的过滤功能增加了销售人员的办事效率,也方便了客户自主选择400号码。同时摆脱了传统的由销售人员人工检索的模式,是400电话行业技术创新的典范,该程序一经推出面世就受到了业内较高的好评。 软件截图: 后台SEO截图 :http://www.qy400.cn/400dianhua/1.png 后台类别截图:http://www.qy400.cn/400dianhua/2.png 首页界面截图:http://www.qy400.cn/400dianhua/3.png 分类界面截图:http://www.qy400.cn/400dianhua/4.png 号码界面截图:http://www.qy400.cn/400dianhua/5.png 程序数据:150万条 SEO支持:模拟静态、页面后缀优化、页面描述Description及关键词Keywords优化、关键词链接优化。 配置文件:config.php 管理后台:/admin.php 密码:admin 伪 静 态:/r/httpd.ini 1)列表模式功能 拥有“号码段”、“预存话费”、“号码类别”、“吉利数字”、“地区名称”和“号码搜索”共6项选择,以上5项功能可自由组合查询,如:选择号段:4000,预存话费:1000元,吉利数字:888,地区名称:北京,则搜索出的结果为400 010 888 X类似的结果。 2)采集功能 程序拥有高并发采集系统,开发人员可根据采集文件:cj.php/cj2.php的结构进行调整采集任意API接口或WEB数据入库。 3)SEO优化功能 在SEO,该程序使用模拟静态,可以设置:首页、列表页、内容页的标题后缀、描述及Keywords。程序模仿中关村在线的列表模式,反复组合,有效快速提升100万搜索引擎收录量。 4)相关号码功能 每个号码页面底部自动推荐出类似的30组号码,方便客户快速选择自己喜欢的号码。比如:4006123456号码,程序通过分词技术从数据库中查询出号段为:4000、4006、4008(可自主集成)号段为123、234、345、456的30组号码推荐给客户。 5)地区名称查询功能 此功能根据大多数客户选号心理,实现可根据地区电话区号检索400电话号码的功能,比如:上海的客户大多会选择:400 021 ABCD,客户只需要点击“地区名称”为“上海”的链接,就可以查询出所有包含“021”的号码。 6)吉利数字功能 此功能根据客户心理,内置了常用的:114、168、188、666、888等号码,该功能可以后台设置,某些地区用户较喜欢带4的数字,比如:444,谐音为:发发发,管理员可通过客户设置及排序。 7)号码类别功能 400行业号码类别特别复杂,该功能有效降低了销售人员的负担,更直观地使客户了解自己使用的是什么类型的号码,比如:4000AABBCC,该号码为A类号码,客户选择此类别时,程序会判断出所有AABBCC的号码并输出列表。 8)号码排序功能 该功能可实现按“最新”、“通话费”、“预存费”和“类别”排序。更直观地将检索出的结果按条件升序或降序排序。 9)自定义价格功能 通过管理后台可以对不同类型的号码设置不同的价格、套餐、优惠幅度及注解说明。 10)数据分享功能 程序内置百度分享功能,技术人员请修改index.php中的相关代码。 11)蜘蛛屏蔽功能 由于程序数据在100万以上,反复查询数据会加大服务器负载,以至强双核3.0G CPU、2G内存 为例,连续查询10次列表会导致mysqld.exe/mysqld-nt.exe进程占用CPU约 50%~90%。同时,列表经过反复的交叉,可实现约100万条网页的收录,由此蜘蛛会频繁抓取内容。该功能主要是屏蔽某些抓取频繁且没有价值的蜘蛛,如:有道、搜搜、雅虎中国、必应等,默认中屏蔽“有道蜘蛛”。 12)Memcache数据库缓存功能 内置Memcache数据库缓存技术,查询命中率在60%左右,降低数据库负担,提升查询效率,具体PHP+MYSQL+MEMCACHE配置请见该文档文末。 二、程序目录结构: |400.php ---号码类别数组存储文件 |400dianhua数据库.sql ---数据库文件,共100万条数据,数据大小:187MB |admin.php ---管理员后台,默认密码:admin |cj.php ---采集系统 |cj2.php ---采集系统 |config.php ---程序配置文件,包括:数据库配置、管理员密码配置、自动对比配置 -css ---样式目录 -|style.css ---样式表 |duibi.php ---数据库对比文件 |fabu.php ---火车头发布文件 |index.php ---首页文件 -js ---javascript脚本目录 -|jquery.js ---jquery脚本文件 -|main.js ---主程序脚本 |memcache.class.php ---memcache数据库缓存加速类 |next_run.php ---暂无具体功能 -r ---URL重定向目录 -|httpd.ini ---模拟静态INI配置文件 -|rewrite.dll ---IIS ISAPI模拟静态加载DLL -setting.php ---程序设置文件,消费金额、预存话费、吉利数字和地区区号设置 -spider.php ---蜘蛛文件,拒绝流氓蜘蛛对网站频繁抓取造成负载过高,默认屏蔽:有道蜘蛛 三、Memcache配置 memcache下载:http://www.qy400.cn/400dianhua/memcached-1.2.1-win32.zip 1、服务端解压缩至c:\windows\system32\ 2、开始->运行->cmd -> c:\windows\system32\memecache.exe -d install c:\windows\system32\memcache.exe -d start 3、将php_memcache.dll放到php文件夹的ext中,注意给予相应的权限,如不会设置则给予:everyone读和执行权限。 4、在php.ini中添加extension那部分 extension=php_memcache.dll,搜索mysql.dll,将它放到mysql段前面即可。 5、使用php查看memcache是否安装正确 新建文件:info.php,内容如下: <?php phpinfo(); ?> 6、memcache类文件可见memcache.class.php 四、WEB采集发布 /cj.php /cj2.php 五、火车头采集发布接口 /fabu.php 发布参数:见fabu.php文件 六、软件开发商联系方式: 网址:http://www.qy400.cn BUG反馈:[email protected]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值