Problems

 
 
# Name    
A
addictive.in / addictive.out

2 s, 256 MB

   x438
B
standard input/output

2 s, 256 MB

   x124
C
caravan.in / caravan.out

2 s, 256 MB

   x178
D
disjoint.in / disjoint.out

2 s, 256 MB

   x34
E
exact.in / exact.out

2 s, 256 MB

   x220
F
folding.in / folding.out

2 s, 256 MB

   x76
G
great.in / great.out

2 s, 256 MB

   x359
H
hyperdrome.in / hyperdrome.out

2 s, 256 MB

   x268
I
identification.in / identification.out

2 s, 256 MB

   x29
J
jumping.in / jumping.out

2 s, 256 MB

   x95
K
kingdom.in / kingdom.out

2 s, 256 MB

   
L
labyrinth.in / labyrinth.out

2 s, 256 MB

   x53

A.构造,水题。

  1. #include <map>
  2. #include <set>
  3. #include <cmath>
  4. #include <queue>
  5. #include <stack>
  6. #include <cstdio>
  7. #include <climits>
  8. #include <cstring>
  9. #include <iostream>
  10. #include <algorithm>
  11. using namespace std;
  12.  
  13. typedef double DB;
  14. typedef long long ll;
  15. typedef pair<int, int> PII;
  16.  
  17. #define pb push_back
  18. #define MP make_pair
  19. #define lson l, m, rt << 1
  20. #define rson m + 1, r, rt << 1 | 1
  21. #define re freopen("addictive.in", "r", stdin)
  22. #define we freopen("addictive.out", "w", stdout)
  23. #define FOR(i,x,y) for(i=x;i<=y;i++)
  24. #define FORD(i,x,y) for(i=x;
  25. #define REP(i,x) for(i=0;i<x;i++)
  26. #define mf1(x) memset(x,-1,sizeof(x))
  27. #define mz(x) memset(x,0,sizeof(x))
  28. #define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
  29.  
  30. const int maxn=;
  31. const int maxm=;
  32. const int INF=;
  33.  
  34. int h,w,c;
  35. int a[maxn];
  36.  
  37. int an[maxn][maxn];
  38.  
  39. void farm(){
  40. int i,j,k,l,m;
  41. k=;
  42. j=;
  43. l=;
  44. mz(an);
  45. REP(i,h){
  46. REP(m,w){
  47. while(a[l]==)l++;
  48. an[i][j]=l;
  49. a[l]--;
  50. j+=k;
  51. }
  52. j-=k;
  53. k=-k;
  54. }
  55. }
  56.  
  57. int main(){
  58. re;
  59. we;
  60. int i,j;
  61. while(RD3(h,w,c)!=EOF){
  62. FOR(i,,c)scanf("%d",&a[i]);
  63. farm();
  64. REP(i,h){
  65. REP(j,w)printf("%d",an[i][j]);
  66. puts("");
  67. }
  68. }
  69. }

C.long double二分答案,最后枚举分母找一个分子。

  1. //#pragma comment(linker, "/STACK:102400000,102400000")
  2. #include<cstdio>
  3. #include<cmath>
  4. #include<iostream>
  5. #include<cstring>
  6. #include<algorithm>
  7. #include<cmath>
  8. #include<map>
  9. #include<set>
  10. #include<stack>
  11. #include<queue>
  12. using namespace std;
  13. #define mz(array) memset(array, 0, sizeof(array))
  14. #define mf1(array) memset(array, -1, sizeof(array))
  15. #define minf(array) memset(array, 0x3f, sizeof(array))
  16. #define REP(i,n) for(i=0;i<(n);i++)
  17. #define FOR(i,x,n) for(i=(x);i<=(n);i++)
  18. #define RD(x) scanf("%d",&x)
  19. #define RD2(x,y) scanf("%d%d",&x,&y)
  20. #define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
  21. #define WN(x) printf("%d\n",x);
  22. #define RE freopen("caravan.in","r",stdin)
  23. #define WE freopen("caravan.out","w",stdout)
  24. #define mp make_pair
  25. #define pb push_back
  26. #define pf push_front
  27. #define ppf pop_front
  28. #define ppb pop_back
  29. typedef long long ll;
  30. typedef unsigned long long ull;
  31. typedef long double LD;
  32.  
  33. const LD pi=acos(-1.0);
  34. const LD eps=1e-;
  35.  
  36. const int maxn=;
  37.  
  38. struct qj{
  39. int l,r;
  40. }a[maxn];
  41.  
  42. bool cmp(qj x, qj y){
  43. return x.l < y.l;
  44. }
  45.  
  46. int n;
  47.  
  48. int ans0,ans1;
  49.  
  50. bool ok(LD x){
  51. int i;
  52. LD y=0.0;
  53. REP(i,n){
  54. if(a[i].r - x + eps < y)return ;
  55. y = max((LD)a[i].l , y) + x;
  56. }
  57. return ;
  58. }
  59.  
  60. void farm(){
  61. int i;
  62. LD l=0.0,r=10000000.0,mid;
  63. REP(i,n)r=min(r , (LD)(a[i].r-a[i].l));
  64. sort(a,a+n,cmp);
  65. while(r-l>eps){
  66. mid=(l+r)*0.5;
  67. if(ok(mid))l=mid;
  68. else r=mid;
  69. }
  70. LD dou=1.0;
  71. FOR(i,,){
  72. if( fabs(r*i - (LD)ceil(r*i))<dou){
  73. ans0=ceil(r*i);
  74. ans1=i;
  75. dou=fabs(r*i - (LD)ceil(r*i));
  76. }
  77. if( fabs(r*i - (LD)floor(r*i))<dou){
  78. ans0=floor(r*i);
  79. ans1=i;
  80. dou=fabs(r*i - (LD)floor(r*i));
  81. }
  82. }
  83. }
  84.  
  85. int main(){
  86. RE;
  87. WE;
  88. int i;
  89. while(scanf("%d",&n)!=EOF){
  90. REP(i,n)RD2(a[i].l, a[i].r);
  91. farm();
  92. printf("%d/%d\n",ans0,ans1);
  93. }
  94. }

E.贪心,分成19种包,分别按大小排序,要取其中一种肯定是取那种最大的。每次取能处理最低的非零位的最重的包,让它产生尽量多的零。

  1. //#pragma comment(linker, "/STACK:102400000,102400000")
  2. #include<cstdio>
  3. #include<cmath>
  4. #include<iostream>
  5. #include<cstring>
  6. #include<algorithm>
  7. #include<cmath>
  8. #include<map>
  9. #include<set>
  10. #include<stack>
  11. #include<queue>
  12. using namespace std;
  13. #define mz(array) memset(array, 0, sizeof(array))
  14. #define mf1(array) memset(array, -1, sizeof(array))
  15. #define minf(array) memset(array, 0x3f, sizeof(array))
  16. #define REP(i,n) for(i=0;i<(n);i++)
  17. #define FOR(i,x,n) for(i=(x);i<=(n);i++)
  18. #define RD(x) scanf("%d",&x)
  19. #define RD2(x,y) scanf("%d%d",&x,&y)
  20. #define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
  21. #define WN(x) printf("%d\n",x);
  22. #define RE freopen("exact.in","r",stdin)
  23. #define WE freopen("exact.out","w",stdout)
  24. #define mp make_pair
  25. #define pb push_back
  26. #define pf push_front
  27. #define ppf pop_front
  28. #define ppb pop_back
  29. typedef long long ll;
  30. typedef unsigned long long ull;
  31. typedef long double LD;
  32.  
  33. const LD pi=acos(-1.0);
  34. const LD eps=1e-;
  35.  
  36. ll X;
  37. int n;
  38.  
  39. struct Box {
  40. ll n;
  41. int i;
  42. Box(int _i,ll _n) {
  43. i=_i;
  44. n=_n;
  45. }
  46. };
  47.  
  48. bool cmp(Box x, Box y) {
  49. return x.n<y.n;
  50. }
  51. ll ten[];
  52. vector<Box>a[];
  53.  
  54. vector<int>an;
  55.  
  56. bool farm() {
  57. int i,j,k;
  58. REP(i,)sort(a[i].begin(),a[i].end(),cmp);
  59. an.clear();
  60. ll x=X;
  61. ll t=;
  62. k=;
  63. while(x) {
  64. while(k<= && x%ten[k+]==)k++;
  65. int mai=-;
  66. ll ma=;
  67. //printf("x=%I64d , k=%d\n",x,k);
  68. FOR(i,,k) {
  69. if(!a[i].empty()) {
  70. if(a[i].back().n * ten[i] >ma) {
  71. mai=i;
  72. ma=a[i].back().n * ten[i];
  73. }
  74. }
  75. }
  76. if(mai==-)return ;
  77. an.pb(a[mai].back().i);
  78. t += a[mai].back().n * ten[mai];
  79. //printf("t=%I64d\n",t);
  80. ll q;
  81. if(x>t){
  82. j=k;
  83. while(x%ten[j+] <= t)j++;
  84. if(j!=k)q=x%ten[j];
  85. else q=t;
  86. }else q=x;
  87. x-=q;
  88. t-=q;
  89. a[mai].pop_back();
  90. }
  91. return ;
  92. }
  93.  
  94. void init() {
  95. int i;
  96. ten[]=;
  97. FOR(i,,) {
  98. ten[i]=ten[i-]*;
  99. }
  100. ten[]=*ten[];
  101. }
  102.  
  103. int main() {
  104. RE;
  105. WE;
  106. init();
  107. int i,x;
  108. ll y;
  109. while(scanf("%I64d%d",&X,&n)!=EOF) {
  110. REP(i,)a[i].clear();
  111. FOR(i,,n) {
  112. scanf("%d%I64d",&x,&y);
  113. a[x].pb(Box(i,y));
  114. }
  115. if(farm()) {
  116. printf("%d\n",an.size());
  117. if(!an.empty())printf("%d",an[]);
  118. FOR(i,,an.size()-)printf(" %d",an[i]);
  119. puts("");
  120. } else puts("-1");
  121. }
  122. return ;
  123. }

G.数位DP,写简单点就是记忆化搜索型的。

  1. #include <map>
  2. #include <set>
  3. #include <cmath>
  4. #include <queue>
  5. #include <stack>
  6. #include <cstdio>
  7. #include <climits>
  8. #include <cstring>
  9. #include <iostream>
  10. #include <algorithm>
  11. using namespace std;
  12.  
  13. typedef double DB;
  14. typedef long long ll;
  15. typedef pair<int, int> PII;
  16.  
  17. #define pb push_back
  18. #define MP make_pair
  19. #define lson l, m, rt << 1
  20. #define rson m + 1, r, rt << 1 | 1
  21. #define RE freopen("great.in", "r", stdin)
  22. #define WE freopen("great.out", "w", stdout)
  23. #define FOR(i,x,y) for(i=x;i<=y;i++)
  24. #define FORD(i,x,y) for(i=x;
  25. #define REP(i,x) for(i=0;i<x;i++)
  26. #define mf1(x) memset(x,-1,sizeof(x))
  27. #define mz(x) memset(x,0,sizeof(x))
  28. #define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
  29.  
  30. const int maxn=;
  31. const int maxm=;
  32. const int INF=;
  33.  
  34. ll n;
  35. int k;
  36.  
  37. ll pow(int x){
  38. int i;
  39. ll re=;
  40. REP(i,x)re*=k;
  41. return re;
  42. }
  43.  
  44. int a[maxn];
  45. ll f[maxn];
  46.  
  47. ll dfs(int w, bool limit){
  48. if(w<) return ;
  49. if(!limit && f[w]!=-)return f[w];
  50. int maxi=limit?a[w]:k-;
  51. if(w%==)maxi=;
  52. ll re=;
  53. int i;
  54. FOR(i,,maxi){
  55. re+=dfs(w-, limit && i==a[w]);
  56. }
  57. if(!limit)f[w]=re;
  58. return re;
  59. }
  60.  
  61. ll farm(){
  62. ll re=;
  63. ll t=n;
  64. ll w=;
  65. ll m=;
  66. int i,j;
  67. while(t){
  68. a[w]=t%k;
  69. t/=k;
  70. w++;
  71. }
  72. mf1(f);
  73. return dfs(w-, );
  74. }
  75.  
  76. int main(){
  77. RE;
  78. WE;
  79. int i,j;
  80. while(scanf("%I64d%d",&n,&k)!=EOF){
  81. printf("%I64d\n",farm());
  82. }
  83. }

H.状压。1~i中各个字母是奇数个还是偶数个,能用2^52种状态表示。状态R xor 状态L,得到的就是区间[L,R]的状态,其中有0个或1个1就是可行的。

用hash存之前出现过的状态,枚举那个唯一的一个1来统计,O(52n)这样。

  1. #include <map>
  2. #include <set>
  3. #include <cmath>
  4. #include <queue>
  5. #include <stack>
  6. #include <cstdio>
  7. #include <climits>
  8. #include <cstring>
  9. #include <iostream>
  10. #include <algorithm>
  11. #include <hash_map>
  12. using namespace std;
  13. using namespace stdext;
  14. typedef double DB;
  15. typedef long long ll;
  16. typedef unsigned int usint;
  17. typedef pair<int, int> PII;
  18.  
  19. #define pb push_back
  20. #define MP make_pair
  21. #define lson l, m, rt << 1
  22. #define rson m + 1, r, rt << 1 | 1
  23. #define RE freopen("hyperdrome.in", "r", stdin)
  24. #define WE freopen("hyperdrome.out", "w", stdout)
  25. #define FOR(i,x,y) for(i=x;i<=y;i++)
  26. #define FORD(i,x,y) for(i=x;
  27. #define REP(i,x) for(i=0;i<x;i++)
  28. #define mf1(x) memset(x,-1,sizeof(x))
  29. #define mz(x) memset(x,0,sizeof(x))
  30. #define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
  31.  
  32. const int maxn=;
  33. const int maxm=;
  34. const int INF=;
  35.  
  36. char s[maxn];
  37. int q[];
  38. int n;
  39. ll l[];
  40.  
  41. //hash_map<ll,ll>S;
  42.  
  43. const ll NONE=-;
  44. class hash {
  45. public:
  46. hash() {
  47. memset(a,0xff,sizeof(a));
  48. }
  49. usint locate(ll x) {
  50. usint l=x%MOD;
  51. while(a[l]!=x&&a[l]!=NONE) l=l+;
  52. return l;
  53. }
  54. void insert(ll x,ll va) {
  55. usint l=locate(x);
  56. if(a[l]==NONE) {
  57. a[l]=x;
  58. v[l]=va;
  59. }
  60. }
  61.  
  62. void add(ll x) {
  63. usint l=locate(x);
  64. if(a[l]==NONE) {
  65. a[l]=x;
  66. v[l]=;
  67. }else{
  68. v[l]++;
  69. }
  70. }
  71.  
  72. ll find(ll x) {
  73. usint l=locate(x);
  74. return a[l]==x?v[l]:;
  75. }
  76. void clear() {
  77. memset(a,-,sizeof(a));
  78. }
  79. private:
  80. static const usint MOD=;
  81. ll a[MOD+];
  82. usint v[MOD+];
  83. } S;
  84.  
  85. ll farm(){
  86. int i,j;
  87. ll x=;
  88. ll re=;
  89. S.clear();
  90. S.insert(,);
  91. REP(i,n){
  92. x^=(l[q[s[i]]]);
  93. FOR(j,,){
  94. re+=S.find(x ^ l[j]);
  95. }
  96. re+=S.find(x);
  97. S.add(x);
  98. //printf("%I64d,%I64d,%I64d,%I64d\n",x,S[x],re,1LL<<q[s[i]]);
  99. }
  100. return re;
  101. }
  102.  
  103. void init(){
  104. int i;
  105. FOR(i,'a','z')q[i]=i-'a';
  106. FOR(i,'A','Z')q[i]=i-'A'+;
  107. FOR(i,,)l[i]=1LL<<i;
  108. }
  109.  
  110. int main(){
  111. RE;
  112. WE;
  113. int i,j;
  114. init();
  115. while(scanf("%d",&n)!=EOF){
  116. scanf(" %s",s);
  117. printf("%I64d\n",farm());
  118. }
  119. }

2012-2013 ACM-ICPC Northeastern European Regional Contest (NEERC 12)的更多相关文章

  1. 2017-2018 ACM-ICPC Northern Eurasia (Northeastern European Regional) Contest (NEERC 17)

    2017-2018 ACM-ICPC Northern Eurasia (Northeastern European Regional) Contest (NEERC 17) A 题意:有 n 个时刻 ...

  2. Editing 2011-2012 ACM-ICPC Northeastern European Regional Contest (NEERC 11)

    NEERC 11 *wiki链接[[https://acm.ecnu.edu.cn/wiki/index.php?title=2011-2012_ACM-ICPC_Northeastern_Europ ...

  3. 2015-2016 ACM-ICPC Northeastern European Regional Contest (NEERC 15)C - Cactus Jubilee

    题意:给一颗仙人掌,要求移动一条边,不能放在原处,移动之后还是一颗仙人掌的方案数(仙人掌:无向图,每条边只在一个环中),等价于先删除一条边,然后加一条边 题解:对于一颗仙人掌,分成两种边,1:环边:环 ...

  4. 2017-2018 ACM-ICPC Northern Eurasia (Northeastern European Regional) Contest (NEERC 17) 日常训练

    A - Archery Tournament 题目大意:按时间顺序出现靶子和射击一个位置,靶子的圆心为(x, y)半径为r,即圆与x轴相切,靶子不会重叠,靶子被击中后消失, 每次射击找出哪个靶子被射中 ...

  5. 2002-2003 ACM-ICPC Northeastern European Regional Contest (NEERC 02) H Heroes Of Might And Magic (隐含dp)

    问题是求一个方案,实际隐含一个dp.法力是递减的,所以状态是DAG,对于一个确定的状态,我们贪心地希望英雄的血量尽量大. 分析:定义状态dp[i][p][h]表示是已经用了i的法力值,怪兽的位置在p, ...

  6. 2002-2003 ACM-ICPC Northeastern European Regional Contest (NEERC 02) A Amusing Numbers (数学)

    其实挺简单的.先直接算出之前已经排在k这个数前面的数字.比如543是三位的,那么100~543都是可以的,两位的10~54. 如果还需要往前面补的话,那么依次考虑1000~5430,5430是上界不能 ...

  7. 2015-2016 ACM-ICPC Northeastern European Regional Contest (NEERC 15)

    NEERC 15 题解1 题解2 官方题解

  8. 2002-2003 ACM-ICPC Northeastern European Regional Contest (NEERC 02)

    B Bricks 计算几何乱搞 题意: 给你个立方体,问你能不能放进一个管道里面. 题解: 这是一道非常迷的题,其问题在于,你可以不正着放下去,你需要斜着放.此时你需要枚举你旋转的角度,来判断是否可行 ...

  9. ACM ICPC 2010–2011, Northeastern European Regional Contest St Petersburg – Barnaul – Tashkent – Tbilisi, November 24, 2010

    ACM ICPC 2010–2011, Northeastern European Regional Contest St Petersburg – Barnaul – Tashkent – Tbil ...

随机推荐

  1. ANDROID STDUIO 项目里的R文件突然丢失的解决办法N种之一

    刚刚项目里的R文件突然挂了,清理项目,关闭重开Studio,都不能解决.快没折了. 然后只好在项目上右击,看看有没有解决的办法.发现有个 Make Module ,姑且试试吧. 结果,竟然修复了.这是 ...

  2. Invalid layout param in a LinarLayout: layout_weight

    android:layout_weight只适用于线性布局LinearLayout,不适用于相对布局RelativeLayout.

  3. LLVM 笔记(五)—— LLVM IR

    ilocker:关注 Android 安全(新手) QQ: 2597294287 LLVM 的 IR (Intermediate Representation) 是其设计中的最重要的部分.优化器在进行 ...

  4. 对 Visual Studio 中的Resharper禁用对某种文件的检测

    原因:在Visual Studio中安装Reshaper后,就会对各种文件进行代码检测,但是因为Reshaper更新的速度不是很及时,所以有时会对Visual Studio中某些新功能误断,导致Cod ...

  5. 【读书笔记《Bootstrap 实战》】1.初识Bootstrap

    作为Web前端开发框架,Bootstrap为大多数标准的UI设计常见提供了用户友好.扩浏览器的解决方案. 1.下载Bootstrap 打开官方网址 http://getbootstrap.com/ 进 ...

  6. 关于Hadoop的集群环境下虚拟机采用NAT方式连不上网的解决

    使用虚拟机搭建hadoop集群的时候采用的是NAT方式联网,但是会出现时常掉网的现象,查看后排查了很久也没有发现什么问题. 很可能是Windows下的NAT服务没有开启,这时候尽管虚拟机和主机是在一个 ...

  7. 我觉得有意思的JavaScript题目(01-05更新中)

    对于以下js题目均来至于网络中.有的来至于文章之中,有的也许来至于问答题型中.如果您有更好的问题解释,请留言交流! 1.相关问题描述:到底该怎么去理解闭包? 代码片段A !function(){ va ...

  8. java Socket编程-基于TCP

    package com.wzy.Test; import java.io.BufferedReader; import java.io.IOException; import java.io.Inpu ...

  9. 一段拼装sql的小代码

    /** * 单表查询 * * className:实体类的名字 * vals:查询的属性 * pNames:条件的名字 * pVals:条件的值 */ @Override public List< ...

  10. 错题分析--ASP.NET

    解析:支架模板支持的类型包括Empty.Create.Delete.Details.Edit.List 解析:Spring支持4种依赖检查:默认的是none.因此说法不正确的结果是D 解析:各层之间不 ...