博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZROI#985
阅读量:5289 次
发布时间:2019-06-14

本文共 2409 字,大约阅读时间需要 8 分钟。

暴力就不说了,说说正解吧.

先假定每个区间都没有重复元素,然后得到一个全集的答案.
然后我们考虑,减掉不合法的方案.
记录每种颜色出现的位置,乘法原理即可.
暴力\(Code:\)

#include 
#include
#include
#define rint read
#define int long longtemplate < class T > inline T read () { T x = 0 , f = 1 ; char ch = getchar () ; while ( ch < '0' || ch > '9' ) { if ( ch == '-' ) f = - 1 ; ch = getchar () ; } while ( ch >= '0' && ch <= '9' ) { x = ( x << 3 ) + ( x << 1 ) + ( ch - 48 ) ; ch = getchar () ; } return f * x ; }const int N = 1e6 + 100 ;int n , v[N] , ans ;bool mk[3005] ;signed main () { n = rint () ; for (int i = 1 ; i <= n ; ++ i) v[i] = rint () ; for (int i = 1 ; i <= n ; ++ i) for (int j = 1 ; j <= i ; ++ j) { for (int k = 1 ; k <= n ; ++ k) mk[k] = false ; for (int k = j ; k <= i ; ++ k) if ( ! mk[v[k]] ) ++ ans , mk[v[k]] = true ; } printf ("%lld\n" , ans ) ; return 0 ;}

此正解思路与上述思路略有不同.

此代码思路是直接统计.
正解\(Code:\)

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define MEM(x,y) memset ( x , y , sizeof ( x ) )#define rep(i,a,b) for (int i = (a) ; i <= (b) ; ++ i)#define per(i,a,b) for (int i = (a) ; i >= (b) ; -- i)#define pii pair < int , int >#define one first#define two second#define rint read
#define int long long#define pb push_backusing std::queue ;using std::set ;using std::pair ;using std::max ;using std::min ;using std::priority_queue ;using std::vector ;using std::swap ;using std::sort ;using std::unique ;using std::greater ;template < class T > inline T read () { T x = 0 , f = 1 ; char ch = getchar () ; while ( ch < '0' || ch > '9' ) { if ( ch == '-' ) f = - 1 ; ch = getchar () ; } while ( ch >= '0' && ch <= '9' ) { x = ( x << 3 ) + ( x << 1 ) + ( ch - 48 ) ; ch = getchar () ; } return f * x ;}const int N = 1e6 + 100 ;int pre[N] , last[N] , n , v[N] , ans ;signed main (int argc , char * argv[]) { n = rint () ; rep ( i , 1 , n ) v[i] = rint () ; rep ( i , 1 , n ) { pre[i] = last[v[i]] ; last[v[i]] = i ; } rep ( i , 1 , n ) ans += ( i - pre[i] ) * ( n - i + 1 ) ; printf ("%lld\n" , ans ) ; return 0 ;}

转载于:https://www.cnblogs.com/Equinox-Flower/p/11523838.html

你可能感兴趣的文章
HTML时间监听方法
查看>>
面试题
查看>>
dedecms高级搜索功能(指定模型搜索,一个页面多个搜索)
查看>>
python爬虫(2)--Urllib库的高级用法
查看>>
读取浏览器历史记录操作方法(刷新token)
查看>>
安卓高级6 玩转AppBarLayout,更酷炫的顶部栏 Toolbar
查看>>
两台W7系统的电脑,A电脑可以ping通B电脑,B电脑ping不通A电脑。
查看>>
给不了你的幸福
查看>>
联系表单 1_copy
查看>>
【Qt】Qt Quick 之 QML 与 C++ 混合编程详解
查看>>
“集群和负载均衡”等的通俗解释
查看>>
matlab 中如何创建以及获取popupmenu的值
查看>>
【机器学习】多项式回归python实现
查看>>
查看cuda版本和cudann
查看>>
eclipse 开始运行提示 Java was started but returned exit code=13
查看>>
预编译scss以及scss和less px 转rem
查看>>
git 问题记录
查看>>
word vba 1 页面视图
查看>>
系统变量和环境变量的区别
查看>>
现代科技高管李刚去向已不再是迷
查看>>