1. 程式人生 > >ccf[201809-4]再賣菜-70分暴力

ccf[201809-4]再賣菜-70分暴力

思路是深搜,然後根據他給的程式碼約束可以取的值減小一點複雜度,最後選夠了之後計算並與答案相比較,由於是從一開始搜的,那麼答案一定是字典序最小的,考試的時候打了個這個才30分,現在變成了70分,鬱悶啊...

加上這四十分我就差十分就會程式設計了..話說這次第三題沒寫,第四題可能是敲錯了?第五題暴力20分..簡直就是敲了一下午的暴力啊,等到大佬們發題解的時候在更新這個題的滿分題解...據說是DP?

下附程式碼敲得很凌亂將就著看算了

#include<iostream>

using namespace std;

int ans[301];
int ans1[301];
int select[301];
int n;
int ok=0;

bool check()
{
	for(int i=1;i<=n;i++)
	{
		if(i==1)
		{
			ans1[i]=(select[i]+select[i+1])/2;
		}
		else if(i==n)
		{
			ans1[i]=(select[i]+select[i-1])/2;
		}
		else
		{
			ans1[i]=(select[i]+select[i-1]+select[i+1])/3;
		}
	}
	int flag=1;
	num++;
	for(int i=1;i<=n;i++)
	{
		if(ans[i]!=ans1[i])
		{
			flag=0;
			break;
		}
	}
	return flag;
}

void dfs(int x)
{
	if(ok) return;
	if(x==n+1)
	{
		if(check())
		{
			for(int i=1;i<=n;i++)
				cout<<select[i]<<" ";
			ok=1;
			return;
		}
		return;
	}
	if(x==1)
	{
		for(int i=1;i<=ans[1]*2;i++)
		{
			select[x]=i;
			dfs(x+1);
		}
		return;
	}
	else if(x==2)
	{
		for(int i=ans[1]*2-select[1];i<=ans[1]*2+1-select[1];i++)
		{
			if(i>0)
			{
					select[x]=i;
				dfs(x+1);
			}
		
		}
		return;
	}
	else if(x>2)
	{
		for(int i=ans[x-1]*3-select[x-1]-select[x-2];i<=2+ans[x-1]*3-select[x-1]-select[x-2];i++)
		{
			if(i>0)
			{
				select[x]=i;
			dfs(x+1);
			}
			
		}
		return;
	}
 } 

int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>ans[i];
	dfs(1);
	return 0;
 } 

相關推薦

ccf[201809-4]-70暴力

思路是深搜,然後根據他給的程式碼約束可以取的值減小一點複雜度,最後選夠了之後計算並與答案相比較,由於是從一開始搜的,那麼答案一定是字典序最小的,考試的時候打了個這個才30分,現在變成了70分,鬱悶啊... 加上這四十分我就差十分就會程式設計了..話說這次第三題沒寫,第四題可

ccf 201809-4 java 100

import java.util.Scanner; public class c20180904 { static int total; static int []first; static

ccf 201809-4

題意: 問題描述   在一條街上有n個賣菜的商店,按1至n的順序排成一排,這些商店都賣一種蔬菜。   第一天,每個商店都自己定了一個正整數的價格。店主們希望自己的菜價和其他商店的一致,第二天,每一家商店都會根據他自己和相鄰商店的價格調整自己的價格。具體的,每家商

201809-4 (100

問題描述   在一條街上有n個賣菜的商店,按1至n的順序排成一排,這些商店都賣一種蔬菜。   第一天,每個商店都自己定了一個正整數的價格。店主們希望自己的菜價和其他商店的一致,第二天,每一家商店都會根據他自己和相鄰商店的價格調整自己的價格。具體的,每家商店都會將第二天的菜價設定為自己和相鄰商

CCF-CSP201809-4

問題描述: 試題編號: 201809-4 試題名稱: 再賣菜 時間限制: 1.0s 記憶體限制: 256.0MB 問題描述: 問題描述   在一條街上有n個賣菜的商店,按1至n的順序排成一排,這些商店都賣一種蔬菜

CCF認證-201809-4 70

    CCF認證-201809-4 思路:沒有很好的思路,就暴力了拿了70分,還沒有滿分,還會再更新的。   問題描述 試題編號: 201809-4 試題名稱: 再賣菜

CSP201809-4

目錄 CSP201809-4 再賣菜 60分dfs 100分建立差分約束系統 CSP201809-4 再賣菜 這場打完就忘記了。當時這題一直在想怎麼建立差分約束系統,最後沒建出來0分,隊友搜尋暴力剪紙可能還有記憶化過的,其他人有的都是搜尋拿的幾十分, 用最暴力的寫

CCF 201809-4(差約束/DP)

題意 問題描述   在一條街上有n個賣菜的商店,按1至n的順序排成一排,這些商店都賣一種蔬菜。   第一天,每個商店都自己定了一個正整數的價格。店主們希望自己的菜價和其他商店的一致,第二天,每一家商店都會根據他自己和相鄰商店的價格調整自己的價格。具體的,每家商店都會將第二

ccf

這題一看就是暴搜,想都不想就寫了個暴搜程式(不考慮複雜度),但這題正解應該是記憶化搜尋。。   已知a[n],求b[n],其中a[n]是所給資料,b[n]是要求的菜價 其中有 (b[n-1]+b[n]+b[n+1])/3=a[n](n表示第n天菜價) 所以b[n+1]=

CCF認證 2018-09

可以用dfs記憶化搜尋+剪枝 更穩的方法是用差分約束,因為會有三元一次的不等式,所以把不等式全部改為字首和的不等式 s[i]代表前i項的和,如a1+a2+a3>=b可改為s3-s0>=b,a1+a2+a3<=c改為s0-s3>=-c 以此類推,就

201809-1 (100

問題描述   在一條街上有n個賣菜的商店,按1至n的順序排成一排,這些商店都賣一種蔬菜。   第一天,每個商店都自己定了一個價格。店主們希望自己的菜價和其他商店的一致,第二天,每一家商店都會根據他自己和相鄰商店的價格調整自己的價格。具體的,每家商店都會將第二天的菜價設定為自己和相鄰商店第一天

CCF201809-4

問題描述   在一條街上有n個賣菜的商店,按1至n的順序排成一排,這些商店都賣一種蔬菜。   第一天,每個商店都自己定了一個正整數的價格。店主們希望自己的菜價和其他商店的一致,第二天,每一家商店都會根據他自己和相鄰商店的價格調整自己的價格。具體的,每家商店都會將

CCF 201712-4 行車路線(100

宣告:CCF提交後得100分,但程式存在bug,過段時間修改 試題編號: 201712-4 試題名稱: 行車路線 時間限制: 1.0s 記憶體限制: 256.0MB 問題描述: 問題描述   小明和小芳出去鄉村玩

Cogs1264. [NOIP2012] 開車旅行(70 暴力

兩個 一次 std 內存 做出 簡單 對比 nbsp strong 1264. [NOIP2012] 開車旅行 ★★☆ 輸入文件:drive.in 輸出文件:drive.out 簡單對比時間限制:2 s 內存限制:128 MB 【題目描述】 小A 和小

ccf認證--201809-1 (100

CCF認證-201809-1 賣菜 思路:很簡單。 試題編號: 201809-1   試題名稱: 賣菜 時間限制: 1.0s 記憶體限制:

ccf 201712-4 行車路線(70)

cin enter 修改 emp 增加 urn 心算 log info ccf 201712-4 行車路線 解題思路:   首先Dijkstra是基於貪心算法的,即每一次作出的選擇都具有貪心選擇性。此題由於有“如果連續走小道,小明的疲勞值會快速增加,連續走s公裏小明會增加s

CCF-201809-1-

思路: 這次ccf的前面兩題好水啊,思路簡單說下:第一題賣菜,題目意思是讓每個商店價格根據第一天來調整,第二天的價格是第一天自己和相鄰商店的價格平均值,所以就直接遍歷第一天的價格表,算出第二天的價格表 Java程式碼: import java.util.Scanner; pub

CCF CSP 201809-1 題解

題目描述 題目來源 :http://118.190.20.162/view.page?gpid=T79 返回試題列表 問題描述 試題編號: 201809-1 試題名稱: 賣菜 時間限制

CCF————201809-1(

問題描述   在一條街上有Ñ個賣菜的商店,按1至Ñ的順序排成一排,這些商店都賣一種蔬菜。  第一天,每個商店都自己定了一個價格。店主們希望自己的菜價和其他商店的一致,第二天,每一家商店都會根據他自己和相鄰商店的價格調整自己的價格。具體的,每家商店都會將第二天的菜價設定為自己

CCF 201712-4 90

while limit ++ min ccf string pos ons markdown 90分,不知道錯在哪裏了,dijkstra算法,用一個數組的d[i]表示以i點結尾的小路的長度,以i點為中心擴展時,若下一點為k,如果i->k是小路,則 d[j] = d[k