jzoj4282-[NOIP2015模拟10.29B组]平方数游戏【构造】
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                jzoj4282-[NOIP2015模拟10.29B组]平方数游戏【构造】
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                正題
題目大意
構(gòu)造一個(gè)ai={1,?1}a_i=\{1,-1\}ai?={1,?1}使得最小化∣∑i=1naii2∣|\sum_{i=1}^na_ii^2|∣i=1∑n?ai?i2∣
解題思路
我們發(fā)現(xiàn)有對(duì)于一段連續(xù)的x2?(x+1)2?(x+2)2+(x+3)2=4x^2-(x+1)^2-(x+2)^2+(x+3)^2=4x2?(x+1)2?(x+2)2+(x+3)2=4,那么就有x2?(x+1)2?(x+2)2+(x+3)2?(x+4)2+(x+5)2+(x+6)2?(x+7)2=0x^2-(x+1)^2-(x+2)^2+(x+3)^2-(x+4)^2+(x+5)^2+(x+6)^2-(x+7)^2=0x2?(x+1)2?(x+2)2+(x+3)2?(x+4)2+(x+5)2+(x+6)2?(x+7)2=0
那么我們對(duì)于連續(xù)888個(gè)就可以抵消掉,特判掉1~51\sim 51~5,然后預(yù)處理出6~136\sim 136~13的答案然后后面都按這么填取000即可。
codecodecode
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int n; int main() { // freopen("five.in","r",stdin); // freopen("five.out","w",stdout);scanf("%d",&n);if(n==1)printf("1\n-1");else if(n==2)printf("3\n1 -1");else if(n==3)printf("4\n1 1 -1");else if(n==4)printf("2\n1 1 1 -1");else if(n==5)printf("3\n-1 1 1 1 -1");else{if(n%4==1||n%4==2)printf("1\n");else printf("0\n");if(n%8==6) printf("1 1 -1 1 1 -1"),n-=6;else if(n%8==7) printf("-1 -1 1 -1 1 1 -1"),n-=7;else if(n%8==0) printf("1 -1 -1 1 -1 1 1 -1"),n-=8;else if(n%8==1) printf("1 1 -1 -1 1 -1 1 1 -1"),n-=9;else if(n%8==2) printf("1 -1 -1 -1 1 1 1 -1 1 -1"),n-=10;else if(n%8==3) printf("-1 1 -1 -1 -1 1 1 1 -1 1 -1"),n-=11;else if(n%8==4) printf("-1 1 -1 -1 -1 1 -1 1 -1 1 1 -1"),n-=12;else if(n%8==5) printf("-1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1"),n-=13;for(;n;n-=8)printf(" 1 -1 -1 1 -1 1 1 -1"); } }總結(jié)
以上是生活随笔為你收集整理的jzoj4282-[NOIP2015模拟10.29B组]平方数游戏【构造】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 如何制作橡皮泥手工
- 下一篇: 青翠欲滴的意思是什么 青翠欲滴的意思简单
